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
$name
je 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::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
@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 | 8218
Jelikož Strings::match také používá preg_match a nikdo jiný na tuhle chybu nenarazil, tak netuším, jak ji promítnout do Nette…