Error presenter – presenter name must be alphanumeric string

- raketoplan2005
 - Člen | 147
 
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
 
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
 
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.

- raketoplan2005
 - Člen | 147
 
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.

- Jan Tvrdík
 - Nette guru | 2595
 
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
 
Přidal jsem to logování + jsem nahradil
Nette\Utils\Strings::match za preg_match. Uvidíme,
děkuji.

- Milo
 - Nette Core | 1283
 
Jan Tvrdík napsal(a):
Milo: Pokud věříš Nette dumperu (a já mu věřím), tak v
$nameje skutečně zcela čistý řetězecError, takže osobně bych tipoval nějaké selhání PCRE. Začal bych tím, že bych nahradil poněkud magickéNette\Utils\Strings::matchza 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
 
@Milo: nemyslim, v backtrace v argumentech je videt, ze je to string o delce 5 znaku

- Milo
 - Nette Core | 1283
 
@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
 
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
 
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?

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