Error presenter – presenter name must be alphanumeric string

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
raketoplan2005
Člen | 147
+
0
-

Ahoj,

po přechodu na Nette 2.1 (alespoň k tomu mi to směřuje) se mi začala aplikace log plnit náhodnými chybami:
Presenter name must be alphanumeric string, 'Error' is invalid.

Stane se to např. jednou a při druhém pokusu s úplně stejnými paramatery ne. Vůbec nevím čím by to mohlo být, snad jen – používám moduly.

V configu mám stejně jako v Sandboxu:

nette:
	application:
		errorPresenter: Error
Jan Tvrdík
Nette guru | 2595
+
0
-

To je divné, neměl bys k tomu laděnku? Z callstacku by mělo být možné identifikovat příčinu problému.

raketoplan2005
Člen | 147
+
0
-

Nette Bluescreen Cloud od Juzny mi nějak záhadně nic nedělá :-)

http://pastebin.com/UhqEPm8p

raketoplan2005
Člen | 147
+
0
-

Update:
Pokud tahle situace nastane, pak se mi nějaký čas (třeba dvě minuty) vrací tahle problematická odpověď na úplně jakýkoli požadavek do libovolné části aplikace.

Milo
Nette Core | 1283
+
0
-

Zkusil bys těsně před tou vyjímkou zalogovat, co je doopravdy v proměnné $name? Cca takhle:

file_put_contents(
	'/var/www/e-skladek.cz/temp/name.log',
	var_export($name, TRUE) . "\n",
	FILE_APPEND | LOCK_EX
);
raketoplan2005
Člen | 147
+
0
-

Zkusím určitě rád, jen potřebuji upřesnit, kde přesně tě tenhle log zajímá. V createPresenter() před metodu getPresenterClass? Tam asi nerozliším jestli jde o standardní požadavek bez výjimky nebo ne takže zatím nevím jak bych dohledel ten správný, leda přidáním časové značky.

Milo
Nette Core | 1283
+
0
-

Ve zdojovém kódu Nette, před tuhle řádku. Je totiž divné, že vyskočí vyjímka na název Error.

Jan Tvrdík
Nette guru | 2595
+
0
-

To mi připomíná, že mi raketoplan2005 před časem poslal tu laděnku na mail.

Milo: Pokud věříš Nette dumperu (a já mu věřím), tak v $name je skutečně zcela čistý řetězec Error, takže osobně bych tipoval nějaké selhání PCRE. Začal bych tím, že bych nahradil poněkud magické Nette\Utils\Strings::match za prachobyčejné preg_match.

raketoplan2005
Člen | 147
+
0
-

Přidal jsem to logování + jsem nahradil Nette\Utils\Strings::match za preg_match. Uvidíme, děkuji.

Majkl578
Moderator | 1364
+
0
-

Pokud tahle situace nastane, pak se mi nějaký čas (třeba dvě minuty) vrací tahle problematická odpověď na úplně jakýkoli požadavek do libovolné části aplikace.

Neběží náhodou na serveru nějaká podivná opcode cache, např Apc nebo eAccelerator?

Milo
Nette Core | 1283
+
0
-

Jan Tvrdík napsal(a):

Milo: Pokud věříš Nette dumperu (a já mu věřím), tak v $name je skutečně zcela čistý řetězec Error, takže osobně bych tipoval nějaké selhání PCRE. Začal bych tím, že bych nahradil poněkud magické Nette\Utils\Strings::match za prachobyčejné preg_match.

Mě napadlo, jestli v $name, nemůže být nějaký prapodivný objekt (teda byla by to haluz, ale s opcode cache člověk nikdy neví :)) Uvidí se, co se zaloguje, jestli to ten preg_match() nevyřešil.

David Matějka
Moderator | 6445
+
0
-

@Milo: nemyslim, v backtrace v argumentech je videt, ze je to string o delce 5 znaku

Milo
Nette Core | 1283
+
0
-

@matej21: A jo, to mě netrklo. Tak už jsem i pochopil, jak to Jan Tvrdík myslel s tou důvěrou v dumper :)

Když jsem teď pořádně proklikal backtrace, je v něm vidět, že to původně spadlo na InvalidPresenterException:

Presenter name must be alphanumeric string, 'Front:Distribution' is invalid.
raketoplan2005
Člen | 147
+
0
-

Zatím se chyba znovu neprojevila, ale i v minulosti už bylo období kdy to např. dva dny šlo bez problému. APC ani eAccelerator tam není. Dám vědět jak se to vyvíjí, děkuji všem.

raketoplan2005
Člen | 147
+
0
-

Zatím tato situace znovu nenastala, budu to dále sledovat, ale vypadá to, že měl @Jan Tvrdík s preg_match pravdu. Děkuji, jak to promítnout do Nette?

raketoplan2005
Člen | 147
+
0
-

Stále je vše v pořádku, takže bych to bral jako potvrztené.

David Grudl
Nette Core | 8218
+
0
-

Jelikož Strings::match také používá preg_match a nikdo jiný na tuhle chybu nenarazil, tak netuším, jak ji promítnout do Nette…