*jumps up and down on chuck's list*
On Jul 27, 2011, at 2:50 PM, Chuck Hill <ch...@global-village.net> 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 (Webobjects-dev@lists.apple.com) >>>>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/alexis.tual%40gmail.com >>>>>>>>>>> >>>>>>>>>>> This email sent to alexis.t...@gmail.com >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/rparada%40mac.com >>>>>>>>> >>>>>>>>> This email sent to rpar...@mac.com >>>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> 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 (Webobjects-dev@lists.apple.com) >>> Help/Unsubscribe/Update your Subscription: >>> http://lists.apple.com/mailman/options/webobjects-dev/mgargano%40escholar.com >>> >>> This email sent to mgarg...@escholar.com >>> >> >> > > -- > 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 (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/mgargano%40me.com > > This email sent to mgarg...@me.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com