just to put it back on the list... turns out my problem was caused by a commented out (in html) AjaxModalContainer inside my AjaxModalDialog. the parser was still rendering the container code inside the comment. removing the comment made everything happy again. :)
-mike On Jul 27, 2011, at 2:54 PM, Michael Gargano wrote: > *jumps up and down on chuck's list* > > > On Jul 27, 2011, at 2:50 PM, Chuck Hill <[email protected]> wrote: > >> Still teetering on the top of my To Do list >> >> >> On 2011-07-27, at 11:48 AM, Michael Gargano wrote: >> >>> was there ever a resolution to this. i'm encountering this problem a lot. >>> >>> -mike >>> >>> >>> On Jul 15, 2011, at 1:56 PM, Ricardo J. Parada wrote: >>> >>>> Try the second one I sent out... That one is simpler and easier to >>>> understand. >>>> >>>> Thanks >>>> >>>> >>>> >>>> >>>> On Jul 15, 2011, at 1:52 PM, Chuck Hill wrote: >>>> >>>>> I will try it later. >>>>> >>>>> >>>>> On 2011-07-15, at 7:11 AM, Ricardo J. Parada wrote: >>>>> >>>>>> >>>>>> I have some good news. I have a little test app with a simple Main >>>>>> component that reproduces the problem in 5 easy steps. >>>>>> >>>>>> Who is interested in trying it out? :-) You just import into Eclipse >>>>>> and follow the 5 easy steps on the Main component. >>>>>> >>>>>> <PageCacheTest.zip> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Jul 14, 2011, at 1:09 PM, Chuck Hill wrote: >>>>>> >>>>>>> I have, sort of, understood this code in the past. It is tricky, you >>>>>>> really have to pay attention. IIRC what it has is a two level cache >>>>>>> for (potentially) every page in the regular cache. >>>>>>> >>>>>>> >>>>>>> Chuck >>>>>>> >>>>>>> >>>>>>> On 2011-07-14, at 9:39 AM, Ricardo J. Parada wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Oh... for reference that code in ERXAjaxSession.java looks like this: >>>>>>>> >>>>>>>> public void savePage(WOComponent page) { >>>>>>>> ... >>>>>>>> >>>>>>>> // Remove the oldest entry if we're about to add a new one and that >>>>>>>> would put us over the cache size ... >>>>>>>> // We do a CACHE_SIZE*2 here because for every page, we have to >>>>>>>> potentially store its previous contextid to prevent >>>>>>>> // race conditions, so there technically can be 2x cache size many >>>>>>>> pages in the cache. >>>>>>>> boolean removedCacheEntry = >>>>>>>> cleanPageReplacementCacheIfNecessary(pageCacheKey); >>>>>>>> 208: if (!removedCacheEntry && pageReplacementCache.size() >= >>>>>>>> ERXAjaxSession.MAX_PAGE_REPLACEMENT_CACHE_SIZE * 2) { >>>>>>>> Iterator entryIterator = pageReplacementCache.entrySet().iterator(); >>>>>>>> Map.Entry oldestEntry = (Map.Entry) entryIterator.next(); >>>>>>>> entryIterator.remove(); >>>>>>>> if (logger.isDebugEnabled()) logger.debug(pageCacheKey + >>>>>>>> "pageReplacementCache too large, removing oldest entry = " + >>>>>>>> ((TransactionRecord)oldestEntry.getValue()).key()); >>>>>>>> } >>>>>>>> >>>>>>>> ... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Jul 14, 2011, at 12:33 PM, Ricardo J. Parada wrote: >>>>>>>> >>>>>>>>> I don't understand the code in ERXAjaxSession.java:208-213 very well >>>>>>>>> but I can see that the size of the page replacement cache referred to >>>>>>>>> by that code is growing with every AJAX request until it is >= two >>>>>>>>> times the size specified by >>>>>>>>> er.extensions.maxPageReplacementCacheSize. From there on it removes >>>>>>>>> entries from there. >>>>>>>>> >>>>>>>>> At this point if I close the dialog (AMD) and then click on the link >>>>>>>>> on the page I get the "You backtracked too far" error. >>>>>>>>> >>>>>>>>> Anybody understands that code? :-) >>>>>>>>> >>>>>>>>> I'm gonna compare with my test Wonder app which all it has is the AMD >>>>>>>>> and link on the page to test this and try to find out why I don't get >>>>>>>>> the error there. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Jul 14, 2011, at 12:11 PM, Ricardo J. Parada wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I don't get the error if I set >>>>>>>>>> er.extensions.maxPageReplacementCacheSize=50 in my Properties.dev >>>>>>>>>> file. >>>>>>>>>> >>>>>>>>>> So now I'm focusing on ERXAjaxSession.java:208-213 to see if that >>>>>>>>>> code to try to figure out if that code has anything to do with the >>>>>>>>>> problem I have when I reduce the cache size. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Jul 13, 2011, at 10:36 PM, Alexis Tual wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> have you tried to raise the >>>>>>>>>>> er.extensions.maxPageReplacementCacheSize (default is 30) ? It >>>>>>>>>>> should delay the page restauration error, not fixing the real >>>>>>>>>>> issue... and if you have few users and enough memory, it might be >>>>>>>>>>> the cheapest way to get it done. >>>>>>>>>>> Anyway, I filled a jira for this a year ago >>>>>>>>>>> http://issues.objectstyle.org/jira/browse/WONDER-545 (Don't try the >>>>>>>>>>> attached patch though, it's worse :)) >>>>>>>>>>> >>>>>>>>>>> Still in Quebec, back to Poutine free area soon >>>>>>>>>>> >>>>>>>>>>> Alex >>>>>>>>>>> >>>>>>>>>>> Le 12 juil. 2011 à 19:29, Ricardo J. Parada a écrit : >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Jul 12, 2011, at 5:53 PM, Chuck Hill wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Jul 12, 2011, at 2:45 PM, Ricardo J. Parada wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Jul 12, 2011, at 4:52 PM, Chuck Hill wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Ricardo, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Jul 12, 2011, at 1:35 PM, Ricardo J. Parada wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Does anybody have an idea what could be causing this problem? >>>>>>>>>>>>>>>> The user clicks on an AjaxModalDialogOpener which opens the >>>>>>>>>>>>>>>> dialog. Then the user does a whole bunch of stuff in the >>>>>>>>>>>>>>>> dialog that involves many clicks >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Does it still happen if they don't make so many clicks? >>>>>>>>>>>>>> >>>>>>>>>>>>>> If they make a few clicks then it works okay. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>>> then finally clicks a DONE link to close the dialog. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Are all of these links and clicks Ajax actions? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes, they are clicking on links generated by AjaxSubmitButton >>>>>>>>>>>>>> components to be exact. :-) >>>>>>>>>>>>> >>>>>>>>>>>>> And you are certain that there are no /wo/ or /wa/ requests mixed >>>>>>>>>>>>> in here? >>>>>>>>>>>> >>>>>>>>>>>> I set this property in my Properties.dev: >>>>>>>>>>>> >>>>>>>>>>>> log4j.logger.er.extensions.ERXApplication.RequestHandling=DEBUG >>>>>>>>>>>> >>>>>>>>>>>> and then I looked at all the uri's of the requests coming in. >>>>>>>>>>>> They have /ajax/ in there and when the dialog first comes up I see >>>>>>>>>>>> a few /_wr_/ and I guess the browser caches those since I don't >>>>>>>>>>>> see requests for those anymore on subsequent requests after the >>>>>>>>>>>> dialog is displayed. >>>>>>>>>>>> >>>>>>>>>>>> All the requests for the "many clicks" I mentioned have /ajax/ in >>>>>>>>>>>> them. I don't see any /wo/ requests mixed in. >>>>>>>>>>>> >>>>>>>>>>>> Also I set a breakpoint in ERXAjaxSession.java at the only place >>>>>>>>>>>> it calls super.savePage() where I assume the current page would be >>>>>>>>>>>> saved but I never hit the breakpoint. I would think that regular >>>>>>>>>>>> component requests would be generating new context IDs and >>>>>>>>>>>> therefore saving the page in the cache for those context IDs. But >>>>>>>>>>>> I don't see the page getting saved. :-/ >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>>>> The dialog has a closeUpdateContainerID bound with the id of >>>>>>>>>>>>>>>> an ajax update container to refresh, which it does refresh >>>>>>>>>>>>>>>> upon closing the dialog. But then the user clicks on a link >>>>>>>>>>>>>>>> on the page that is outside the refreshed AjaxUpdateContainer >>>>>>>>>>>>>>>> and the app displays the error "You backtracked too far. The >>>>>>>>>>>>>>>> application backtracking limit of 30 has been exceeded." >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Ajax links or regular component actions links? I do what seems >>>>>>>>>>>>>>> to be the same thing (except maybe the "does a whole bunch of >>>>>>>>>>>>>>> stuff in the dialog") and have not had any problems. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> They are regular component action links. The context ID for >>>>>>>>>>>>>> which the page is being restored is 22. >>>>>>>>>>>>> >>>>>>>>>>>>> The original URL is 21? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Well, I just put in there a <wo:link string="test" >>>>>>>>>>>> action="$test"/> and by inspecting that link after I close the >>>>>>>>>>>> ajax modal dialog and the update container refreshes the href for >>>>>>>>>>>> the link is: >>>>>>>>>>>> >>>>>>>>>>>> http://192.168.1.9:53295/cgi-bin/WebObjects/Phynance.woa/wo/EmqPpwSYBiOiS7PPSLDXzw/8.0.0.9.1.1.13.1.5.1.2.1.1.3.51 >>>>>>>>>>>> >>>>>>>>>>>> and clicking that generates the "You backtracked too far" error. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>>> The key to tracking this down is to know if it is the Ajax or >>>>>>>>>>>>>>> the regular page cache that is missing the component. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm stepping through the restorePageForContextID() in >>>>>>>>>>>>>> ERXAjaxSession.java but I'm not sure what to look for. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Sorry, I just meant if the URL that caused the error was a /ajax/ >>>>>>>>>>>>> or /wo/ URL. It sounds like a /wo/ URL so that suggests to me >>>>>>>>>>>>> that something in your dialog is generating /wo/ or /wa/ requests >>>>>>>>>>>>> that are pushing the page out of the standard page cache. >>>>>>>>>>>> >>>>>>>>>>>> I did not see any /wo/ nor /wa/ requests. They are all /ajax/ >>>>>>>>>>>> requests. >>>>>>>>>>>> >>>>>>>>>>>> Maybe I'll try to create a test Wonder app with an ajax modal >>>>>>>>>>>> dialog with a single ajax link in it that displays the current >>>>>>>>>>>> time when clicked... Then I can click it many many times. Then >>>>>>>>>>>> close the dialog and then click on a link on the page afterwards >>>>>>>>>>>> to see if I can reproduce. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> Chuck >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Chuck Hill Senior Consultant / VP Development >>>>>>>>>>>>> >>>>>>>>>>>>> Come to WOWODC this July for unparalleled WO learning >>>>>>>>>>>>> opportunities and real peer to peer problem solving! Network, >>>>>>>>>>>>> socialize, and enjoy a great cosmopolitan city. See you there! >>>>>>>>>>>>> http://www.wocommunity.org/wowodc11/ >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>>>>> Webobjects-dev mailing list ([email protected]) >>>>>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/alexis.tual%40gmail.com >>>>>>>>>>>> >>>>>>>>>>>> This email sent to [email protected] >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>>> Webobjects-dev mailing list ([email protected]) >>>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/rparada%40mac.com >>>>>>>>>> >>>>>>>>>> This email sent to [email protected] >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Chuck Hill Senior Consultant / VP Development >>>>>>> >>>>>>> Practical WebObjects - for developers who want to increase their >>>>>>> overall knowledge of WebObjects or who are trying to solve specific >>>>>>> problems. >>>>>>> http://www.global-village.net/products/practical_webobjects >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> Chuck Hill Senior Consultant / VP Development >>>>> >>>>> Practical WebObjects - for developers who want to increase their overall >>>>> knowledge of WebObjects or who are trying to solve specific problems. >>>>> http://www.global-village.net/products/practical_webobjects >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list ([email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/webobjects-dev/mgargano%40escholar.com >>>> >>>> This email sent to [email protected] >>>> >>> >>> >> >> -- >> Chuck Hill Senior Consultant / VP Development >> >> Practical WebObjects - for developers who want to increase their overall >> knowledge of WebObjects or who are trying to solve specific problems. >> http://www.global-village.net/products/practical_webobjects >> >> >> >> >> >> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list ([email protected]) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/webobjects-dev/mgargano%40me.com >> >> This email sent to [email protected] > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
