adrianbj / TracyDebugger

The ultimate debugging and development tool for ProcessWire
https://adrianbj.github.io/TracyDebugger/
GNU General Public License v2.0
88 stars 13 forks source link

Recursion due PageArray request. #2

Closed M-O-Z-G closed 8 years ago

M-O-Z-G commented 8 years ago

Hello, I'm testing PW3 now, and found some buggy behavior with get request to dump panel or logger. For example:

$page->get("FIELD_PAGE_ARRAY_NAME");

With Tracy Debugger 1.8* such requests runs to 500 Server error. But after upgrade to 1.9.0 the request gets a recursion from array item _wire protected => ProcessWire\ProcessWire.

Works well in PW2.7.*

adrianbj commented 8 years ago

HI @M-O-Z-G - thanks for the report. Did you by any chance change the Maximum Nesting Depth setting of 3? That setting wasn't being used by fireLog calls until recently. That is the only change I can think of that might be causing this.

It is the ERR_RESPONSE_HEADERS_TOO_BIG that you were getting? I am still getting that with PW 3.x and TD 1.9.x

I am running a newer version of the Tracy core though, so maybe that's it.

Can you please give me more details on the field you are dumping?

M-O-Z-G commented 8 years ago

Hello @adrianbj,

Thanks for attention. I had updated to 1.9.1 - same result. I have attached dump below.

ProcessWire\Page #8e93

template protected => ProcessWire\Template #9d33
| filename protected => NULL | filenameExists protected => NULL | fieldgroup protected => ProcessWire\Fieldgroup #1d20
| | settings protected => array (2)
| | | id => 107 | | | name => "list-item" (9)
| | removedFields protected => NULL | | fieldContexts protected => array () | | data protected => array (1)
| | | 1 => ProcessWire\Field #7908 { ... }
| | extraData protected => array () | | itemsRemoved protected => array () | | itemsAdded protected => array () | | duplicateChecking protected => TRUE | | useFuel protected => TRUE | | _instanceNum private => 232 | | localHooks protected => array () | | trackChanges private => 0 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4
| | | debug protected => FALSE | | | fuel protected => ProcessWire\Fuel #9489 { ... } | | | pathSave protected => "" | | | instanceID protected => 0 | | | shutdown protected => ProcessWire\WireShutdown #42c2 { ... } | | | useFuel protected => TRUE | | | _instanceNum private => 3 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| fieldgroupPrevious protected => NULL | _roles protected => NULL | settings protected => array (5)
| | id => 53 | | name => "list-item" (9) | | fieldgroups_id => 107 | | flags => 0 | | cache_time => 0
| data protected => array (56)
| | useRoles => 0 | | editRoles => array () | | addRoles => array () | | createRoles => array () | | rolesPermissions => array () | | noInherit => 0 | | childrenTemplatesID => 0 | | sortfield => "" | | noChildren => 1 | | noParents => "" | | childTemplates => array () | | parentTemplates => array (1)
| | | 0 => 51
| | allowPageNum => 0 | | allowChangeUser => 0 | | redirectLogin => 0 | | urlSegments => 0 | | https => 0 | | slashUrls => 1 | | slashPageNum => 0 | | slashUrlSegments => 0 | | altFilename => "" | | guestSearchable => 0 | | pageClass => "" | | childNameFormat => "" | | pageLabelField => "fa-caret-right title" (20) | | noGlobal => 0 | | noMove => 0 | | noTrash => 0 | | noSettings => 0 | | noChangeTemplate => 0 | | noShortcut => 0 | | noUnpublish => 0 | | noLang => 0 | | compile => 3 | | nameContentTab => 0 | | noCacheGetVars => "" | | noCachePostVars => "" | | useCacheForUsers => 0 | | cacheExpire => 0 | | cacheExpirePages => array () | | cacheExpireSelector => "" | | label => "List Item" (9) | | tags => "" | | modified => 1466192935 | | titleNames => 0 | | noPrependTemplateFile => 0 | | noAppendTemplateFile => 0 | | prependFile => "" | | appendFile => "" | | tabContent => "" | | tabChildren => "" | | nameLabel => "" | | contentType => "" | | errorAction => 0 | | ns => "" | | label1013 => "Элемент списка" (27)
| useFuel protected => TRUE | _instanceNum private => 299 | localHooks protected => array () | trackChanges private => 2 | changes private => array () | _notices protected => array (3)
| | errors => NULL | | warnings => NULL | | messages => NULL
| _wire protected => ProcessWire\ProcessWire #cec4
| | debug protected => FALSE | | fuel protected => ProcessWire\Fuel #9489
| | | data protected => array (30) [ ... ] | | | lock protected => array (20) [ ... ]
| | pathSave protected => "" | | instanceID protected => 0 | | shutdown protected => ProcessWire\WireShutdown #42c2
| | | types protected => array () | | | fatalTypes protected => array (6) [ ... ] | | | labels protected => array () | | | useFuel protected => TRUE | | | _instanceNum private => 4 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| | useFuel protected => TRUE | | _instanceNum private => 3 | | localHooks protected => array () | | trackChanges private => 0 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
templatePrevious private => NULL parent protected => ProcessWire\Page #643e
| template protected => ProcessWire\Template #101a
| | filename protected => NULL | | filenameExists protected => NULL | | fieldgroup protected => ProcessWire\Fieldgroup #4e29
| | | settings protected => array (2) [ ... ] | | | removedFields protected => NULL | | | fieldContexts protected => array () | | | data protected => array (1) [ ... ] | | | extraData protected => array () | | | itemsRemoved protected => array () | | | itemsAdded protected => array () | | | duplicateChecking protected => TRUE | | | useFuel protected => TRUE | | | _instanceNum private => 231 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { ... }
| | fieldgroupPrevious protected => NULL | | _roles protected => NULL | | settings protected => array (5)
| | | id => 51 | | | name => "list" (4) | | | fieldgroups_id => 105 | | | flags => 0 | | | cache_time => 0
| | data protected => array (56)
| | | useRoles => 0 | | | editRoles => array () | | | addRoles => array () | | | createRoles => array () | | | rolesPermissions => array () | | | noInherit => 0 | | | childrenTemplatesID => 0 | | | sortfield => "" | | | noChildren => "" | | | noParents => "" | | | childTemplates => array () | | | parentTemplates => array () | | | allowPageNum => 0 | | | allowChangeUser => 0 | | | redirectLogin => 0 | | | urlSegments => 0 | | | https => 0 | | | slashUrls => 1 | | | slashPageNum => 0 | | | slashUrlSegments => 0 | | | altFilename => "" | | | guestSearchable => 0 | | | pageClass => "" | | | childNameFormat => "" | | | pageLabelField => "fa-list title" (13) | | | noGlobal => 0 | | | noMove => 0 | | | noTrash => 0 | | | noSettings => 0 | | | noChangeTemplate => 0 | | | noShortcut => 0 | | | noUnpublish => 0 | | | noLang => 0 | | | compile => 3 | | | nameContentTab => 0 | | | noCacheGetVars => "" | | | noCachePostVars => "" | | | useCacheForUsers => 0 | | | cacheExpire => 0 | | | cacheExpirePages => array () | | | cacheExpireSelector => "" | | | label => "List" (4) | | | tags => "" | | | modified => 1465862149 | | | titleNames => 0 | | | noPrependTemplateFile => 0 | | | noAppendTemplateFile => 0 | | | prependFile => "" | | | appendFile => "" | | | tabContent => "" | | | tabChildren => "" | | | nameLabel => "" | | | contentType => "" | | | errorAction => 0 | | | ns => "" | | | label1013 => "Список" (12)
| | useFuel protected => TRUE | | _instanceNum private => 298 | | localHooks protected => array () | | trackChanges private => 2 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4
| | | debug protected => FALSE | | | fuel protected => ProcessWire\Fuel #9489 { ... } | | | pathSave protected => "" | | | instanceID protected => 0 | | | shutdown protected => ProcessWire\WireShutdown #42c2 { ... } | | | useFuel protected => TRUE | | | _instanceNum private => 3 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| templatePrevious private => NULL | parent protected => ProcessWire\Page #82ac
| | template protected => ProcessWire\Template #101a
| | | filename protected => NULL | | | filenameExists protected => NULL | | | fieldgroup protected => ProcessWire\Fieldgroup #4e29 { ... } | | | fieldgroupPrevious protected => NULL | | | _roles protected => NULL | | | settings protected => array (5) [ ... ] | | | data protected => array (56) [ ... ] | | | useFuel protected => TRUE | | | _instanceNum private => 298 | | | localHooks protected => array () | | | trackChanges private => 2 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { ... }
| | templatePrevious private => NULL | | parent protected => ProcessWire\Page #3259
| | | template protected => ProcessWire\Template #2ee9 { ... } | | | templatePrevious private => NULL | | | parent protected => ProcessWire\NullPage #6ade { ... } | | | parentPrevious private => NULL | | | namePrevious private => NULL | | | statusPrevious private => 1 | | | output private => NULL | | | filesManager private => NULL | | | fieldDataQueue protected => array () | | | isNew protected => FALSE | | | isLoaded protected => TRUE | | | lazyLoad protected => FALSE | | | outputFormatting protected => FALSE | | | instanceID protected => 1 | | | pageNum protected => 1 | | | config protected => NULL | | | quietMode protected => FALSE | | | createdUser protected => NULL | | | modifiedUser protected => NULL | | | settings protected => array (11) [ ... ] | | | data protected => array (2) [ ... ] | | | useFuel protected => FALSE | | | _instanceNum private => 310 | | | localHooks protected => array () | | | trackChanges private => 2 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { ... }
| | parentPrevious private => NULL | | namePrevious private => NULL | | statusPrevious private => 1 | | output private => NULL | | filesManager private => NULL | | fieldDataQueue protected => array () | | isNew protected => FALSE | | isLoaded protected => TRUE | | lazyLoad protected => FALSE | | outputFormatting protected => FALSE | | instanceID protected => 36 | | pageNum protected => 1 | | config protected => NULL | | quietMode protected => FALSE | | createdUser protected => NULL | | modifiedUser protected => NULL | | settings protected => array (11)
| | | id => 1061 | | | name => "product-meta" (12) | | | status => 1025 | | | numChildren => 9 | | | sort => 6 | | | sortfield => "sort" (4) | | | modified_users_id => 41 | | | created_users_id => 41 | | | created => 1465753320 | | | modified => 1466128040 | | | published => 1465753320
| | data protected => array (3)
| | | name1013 => "product-meta" (12) | | | status1013 => "1" | | | title => ProcessWire\LanguagesPageFieldValue #94a1 { ... }
| | useFuel protected => FALSE | | _instanceNum private => 509 | | localHooks protected => array () | | trackChanges private => 2 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4
| | | debug protected => FALSE | | | fuel protected => ProcessWire\Fuel #9489 { ... } | | | pathSave protected => "" | | | instanceID protected => 0 | | | shutdown protected => ProcessWire\WireShutdown #42c2 { ... } | | | useFuel protected => TRUE | | | _instanceNum private => 3 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| parentPrevious private => NULL | namePrevious private => NULL | statusPrevious private => 1 | output private => NULL | filesManager private => NULL | fieldDataQueue protected => array () | isNew protected => FALSE | isLoaded protected => TRUE | lazyLoad protected => FALSE | outputFormatting protected => FALSE | instanceID protected => 37 | pageNum protected => 1 | config protected => NULL | quietMode protected => FALSE | createdUser protected => NULL | modifiedUser protected => NULL | settings protected => array (11)
| | id => 1074 | | name => "type" (4) | | status => 1025 | | numChildren => 3 | | sort => 0 | | sortfield => "sort" (4) | | modified_users_id => 41 | | created_users_id => 41 | | created => 1465777986 | | modified => 1465854180 | | published => 1465854180
| data protected => array (3)
| | name1013 => "type" (4) | | status1013 => "1" | | title => ProcessWire\LanguagesPageFieldValue #45c7
| | | data protected => array (2) [ ... ] | | | defaultLanguagePageID protected => 1010 | | | field protected => ProcessWire\Field #7908 { ... } | | | page protected => ProcessWire\Page #643e { RECURSION } | | | useFuel protected => TRUE | | | _instanceNum private => 516 | | | localHooks protected => array () | | | trackChanges private => 2 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { ... }
| useFuel protected => FALSE | _instanceNum private => 507 | localHooks protected => array () | trackChanges private => 2 | changes private => array () | _notices protected => array (3)
| | errors => NULL | | warnings => NULL | | messages => NULL
| _wire protected => ProcessWire\ProcessWire #cec4
| | debug protected => FALSE | | fuel protected => ProcessWire\Fuel #9489
| | | data protected => array (30) [ ... ] | | | lock protected => array (20) [ ... ]
| | pathSave protected => "" | | instanceID protected => 0 | | shutdown protected => ProcessWire\WireShutdown #42c2
| | | types protected => array () | | | fatalTypes protected => array (6) [ ... ] | | | labels protected => array () | | | useFuel protected => TRUE | | | _instanceNum private => 4 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| | useFuel protected => TRUE | | _instanceNum private => 3 | | localHooks protected => array () | | trackChanges private => 0 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
parentPrevious private => NULL namePrevious private => NULL statusPrevious private => 1 output private => NULL filesManager private => NULL fieldDataQueue protected => array () isNew protected => FALSE isLoaded protected => TRUE lazyLoad protected => FALSE outputFormatting protected => FALSE instanceID protected => 38 pageNum protected => 1 config protected => NULL quietMode protected => FALSE createdUser protected => NULL modifiedUser protected => NULL settings protected => array (11)
| id => 1077 | name => "aep" (3) | status => 1025 | numChildren => 0 | sort => 2 | sortfield => "sort" (4) | modified_users_id => 41 | created_users_id => 41 | created => 1465780161 | modified => 1466192792 | published => 1465780192
data protected => array (3)
| name1013 => NULL | status1013 => "0" | title => ProcessWire\LanguagesPageFieldValue #75d8
| | data protected => array (2)
| | | 1010 => "After Effects Project File" (26) | | | 1013 => "Проектный файл After Effects" (41)
| | defaultLanguagePageID protected => 1010 | | field protected => ProcessWire\Field #7908
| | | settings protected => array (5) [ ... ] | | | prevTable protected => NULL | | | prevFieldtype protected => NULL | | | trackGets protected => NULL | | | viewRoles protected => array () | | | editRoles protected => array () | | | inputfieldSettings protected => array () | | | data protected => array (7) [ ... ] | | | useFuel protected => TRUE | | | _instanceNum private => 212 | | | localHooks protected => array () | | | trackChanges private => 2 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { ... }
| | page protected => ProcessWire\Page #8e93 { RECURSION } | | useFuel protected => TRUE | | _instanceNum private => 520 | | localHooks protected => array () | | trackChanges private => 2 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4
| | | debug protected => FALSE | | | fuel protected => ProcessWire\Fuel #9489 { ... } | | | pathSave protected => "" | | | instanceID protected => 0 | | | shutdown protected => ProcessWire\WireShutdown #42c2 { ... } | | | useFuel protected => TRUE | | | _instanceNum private => 3 | | | localHooks protected => array () | | | trackChanges private => 0 | | | changes private => array () | | | _notices protected => array (3) [ ... ] | | | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
useFuel protected => FALSE _instanceNum private => 505 localHooks protected => array () trackChanges private => 2 changes private => array () _notices protected => array (3)
| errors => NULL | warnings => NULL | messages => NULL
_wire protected => ProcessWire\ProcessWire #cec4
| debug protected => FALSE | fuel protected => ProcessWire\Fuel #9489
| | data protected => array (30)
| | | wire => ProcessWire\ProcessWire #cec4 { RECURSION } | | | classLoader => ProcessWire\WireClassLoader #efc7 { ... } | | | hooks => ProcessWire\WireHooks #12d9 { ... } | | | config => ProcessWire\Config #639f { ... } | | | log => ProcessWire\WireLog #3895 { ... } | | | notices => ProcessWire\Notices #dfee { ... } | | | sanitizer => ProcessWire\Sanitizer #29e9 { ... } | | | datetime => ProcessWire\WireDateTime #936c { ... } | | | files => ProcessWire\WireFileTools #197b { ... } | | | mail => ProcessWire\WireMailTools #a956 { ... } | | | database => ProcessWire\WireDatabasePDO #bf0b { ... } | | | db => ProcessWire\DatabaseMysqli #b5af { ... } | | | cache => ProcessWire\WireCache #e13c { ... } | | | modules => ProcessWire\Modules #7418 { ... } | | | fieldtypes => ProcessWire\Fieldtypes #0ce7 { ... } | | | fields => ProcessWire\Fields #61e8 { ... } | | | fieldgroups => ProcessWire\Fieldgroups #4868 { ... } | | | templates => ProcessWire\Templates #48cb { ... } | | | pages => ProcessWire\Pages #c01e { ... } | | | permissions => ProcessWire\Permissions #c8d4 { ... } | | | roles => ProcessWire\Roles #7d2e { ... } | | | users => ProcessWire\Users #2c99 { ... } | | | user => ProcessWire\User #e8c4 { ... } | | | session => ProcessWire\Session #e3b3 { ... } | | | input => ProcessWire\WireInput #71ec { ... } | | | languages => ProcessWire\Languages #9a1a { ... } | | | process => ProcessTracyConsole #f8d4 { ... } | | | page => ProcessWire\Page #2a58 { ... } | | | adminTheme => ProcessWire\AdminThemeDefault #de4a { ... } | | | breadcrumbs => ProcessWire\Breadcrumbs #11fa { ... }
| | lock protected => array (20)
| | | wire => TRUE | | | classLoader => TRUE | | | hooks => TRUE | | | config => TRUE | | | log => TRUE | | | notices => TRUE | | | database => TRUE | | | db => TRUE | | | cache => TRUE | | | modules => TRUE | | | fieldtypes => TRUE | | | fields => TRUE | | | fieldgroups => TRUE | | | templates => TRUE | | | pages => TRUE | | | permissions => TRUE | | | roles => TRUE | | | users => TRUE | | | session => TRUE | | | input => TRUE
| pathSave protected => "" | instanceID protected => 0 | shutdown protected => ProcessWire\WireShutdown #42c2
| | types protected => array () | | fatalTypes protected => array (6)
| | | 0 => 1 | | | 1 => 16 | | | 2 => 64 | | | 3 => 256 | | | 4 => 4 | | | 5 => 4096
| | labels protected => array () | | useFuel protected => TRUE | | _instanceNum private => 4 | | localHooks protected => array () | | trackChanges private => 0 | | changes private => array () | | _notices protected => array (3)
| | | errors => NULL | | | warnings => NULL | | | messages => NULL
| | _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
| useFuel protected => TRUE | _instanceNum private => 3 | localHooks protected => array () | trackChanges private => 0 | changes private => array () | _notices protected => array (3)
| | errors => NULL | | warnings => NULL | | messages => NULL
| _wire protected => ProcessWire\ProcessWire #cec4 { RECURSION }
in .../site/assets/cache/TracyDebugger/consoleCode.php:3
adrianbj commented 8 years ago

What is the exact code you typed in the console to get that response?

Have you changed the Max Nesting Depth setting - what is it set to?

M-O-Z-G commented 8 years ago

What is the exact code you typed in the console to get that response?

dump($page->get("PAGE_FIELD_NAME"));

Have you changed the Max Nesting Depth setting - what is it set to?

Five in this case. Why do you ask about? PW2.7 doesn't have a recursion for same request even when MaxDepth is ten. Or the recursion is normal for PW3? I just assumed that issue with Tracy, don't sure may be it's PW3 behavior.

adrianbj commented 8 years ago

Ok, I have just been comparing the results of a page field dump between PW 2 and 3 and the difference is that PW 3 adds this section:

screen shot 2016-06-18 at 5 38 38 pm

I haven't changed anything else. Even if I revert to an older version of Tracy, eg 1.7.9 the same problem exists - very slow loading of the page, the extra content in the dump and the recursion error. It seems like it's PW 3 specific at the moment - now just to figure out if it can be fixed in Tracy, or if the change needs to be in PW. I'll keep investigating.

adrianbj commented 8 years ago

Hi @M-O-Z-G - I am looking at this again and honestly don't know how you are ending up with that dump result. Could you send me some more details of the field that is referenced by "PAGE_FIELD_NAME". Any chance you could also send me the html from the dump.

M-O-Z-G commented 8 years ago

Hello @adrianbj,

In fact, I really don't know how exactly to check it. I opened front page of default multilang site template, and Recursion appears right in the Page Object Stack on the Info Panel. And so on any page.

I had also tried disable extra modules.

Tested on 3.0.21, 3.0.25

adrianbj commented 8 years ago

Thanks, but if that is the only issue, then I don't think there is anything actually wrong here. Here is a comment from Ryan:

the _wire reference present in every Wire derived object points to the current ProcessWire (class) instance. Because the ProcessWire class extends Wire, that means it also has a _wire property, and that property points to itself. That's not inherently a problem, and it's necessary for access to API variables by all Wire-derived objects. This is one of the means by which we support multiple instances of PW. There is no recursion unless some code tries to follow the protected _wire property of the protected _wire variable.

Tracy is actually recognizing this and returning the { RECURSION } text (https://github.com/nette/tracy/blob/b4ecf4371a5a2e406cea99061b01f33fc7393bb5/src/Tracy/Dumper.php#L208) rather than actually trying to render them at all.

Does that sound ok to you?

adrianbj commented 8 years ago

@M-O-Z-G - any final thoughts on this? I really don't think there is anything actually wrong that needs fixing. Both Tracy and ChromeLogger (https://github.com/ccampbell/chromephp/blob/master/ChromePhp.php#L291) deal with objects referencing themselves by marking them as recursion.

Is it ok if I close this?

M-O-Z-G commented 8 years ago

Hello @adrianbj, sorry for delay. Understand, but in fact I not seen problem in recursion itself. Problem was with freezing of browser with a lot of recursion. I had updated PW and TracyDebugger for Latest versions, and don't see such a critical behavior, even with big nesting. May be something changing in PW. So, you can close this issue, I will reopen if something critical will appear in future. Thank you for your hard work, you are one of thorough developers that I know!

adrianbj commented 8 years ago

Glad it seems to be working better.

Thank you for your hard work, you are one of thorough developers that I know!

Thanks for the kind words!