Object serialization is not supported by class

exquis
Člen | 83
+
0
-

Ahoj,

na jednom projektu se mi při výskytu libovolné chyby a vyvolání BadRequestException „$this->error();“ zaloguje

Nette\NotImplementedException

Object serialization is not supported by class XYZ

Fakt si s tím nevím rady proč se to tak děje, většinou je „$this->error();“ správný stav, takže ten odebírat nechci. Problém je, že se to děje opravdu často (třeba 5× denně), takže mi na mail chodí tyto nesmyslné chyby a pak když je na projektu reálný problém, tak už mi nic nepřijde.

Obrázek s chybou https://ibb.co/SsZxd3j

Zkoušel jsem různě upravovat ErrorPresenter, error_reporting v PHP, komponenty, ale prostě nic nepomohlo.

Celkove se toto deje jen na produkci, se zapnutou tracy je vse v pohode.

Díky za každý tip!

Editoval exquis (23. 3. 13:42)

Pepino
Člen | 256
+
0
-

A co je za třídu ta XYZ?

exquis
Člen | 83
+
0
-

Je to klasicky presenter

Marek Bartoš
Nette Blogger | 1260
+
0
-

Jestli tu chybu dovedeš zreplikovat, tak bych začal přidáním bdump(debug_backtrace()); do té metody. Je dost zvláštní, že ti Tracy vypsala takhle krátký call stack. Z callstacku už by bylo jasné, proč se komponenta pokouší serializovat.

Můj odhad je, že se serializuje presenter, protože se někam předává při forward nebo redirect a musí se tedy někam uložit (serializovat). Možná skrze nějaký objekt, který má presenter nebo Application v properties.

Kdyby se to náhodou nepodařilo vyřešit, tak jako dočasný fix poslouží git patch, ve kterém řádek odstraníš. Existuje pro to Composer plugin https://github.com/…hes/tree/1.x

exquis
Člen | 83
+
0
-

Marek Bartoš napsal(a):

Jestli tu chybu dovedeš zreplikovat, tak bych začal přidáním bdump(debug_backtrace()); do té metody. Je dost zvláštní, že ti Tracy vypsala takhle krátký call stack. Z callstacku už by bylo jasné, proč se komponenta pokouší serializovat.

Můj odhad je, že se serializuje presenter, protože se někam předává při forward nebo redirect a musí se tedy někam uložit (serializovat). Možná skrze nějaký objekt, který má presenter nebo Application v properties.

Kdyby se to náhodou nepodařilo vyřešit, tak jako dočasný fix poslouží git patch, ve kterém řádek odstraníš. Existuje pro to Composer plugin https://github.com/…hes/tree/1.x

Moc díky za tip, nepodařilo se to sice dotrackovat, vraci to jen jeden radek a to:

#0 [internal function]: Nette\ComponentModel\Component->__sleep()

asi to zkusim formou toho Patche :)