Here is the url - http://postimg.org/image/b74chvzr7/
I will try to monitor the network traffic, but does you theory explains why refreshing the page doesn't fix the issue? Could it be that the session is lost forever? If I am able to confirm this scenario, what would be the fix? Would it work if we broadcast with some delay? On Sat, Jun 14, 2014 at 7:41 PM, Lance Java <lance.j...@googlemail.com> wrote: > > (I hope images can be displayed in this way) > Nope, attachments don't work here (links do). > > > What class has replaced this implementation in the 0.9.18? > In 0.9.18, the offline rendering was moved into it's own module > (tapestry-offline) > The class that does the rendering now is OfflineComponentRendererImpl > > https://github.com/uklance/tapestry-offline/blob/master/src/main/java/org/lazan/t5/offline/services/internal/OfflineComponentRendererImpl.java > > > Also could code like this cause this kind of issue? > If updatedProfilePage is marked with @Persist, then yes > > Here's what I'd expect > 1. A tapestry request request comes in for your page with JSESSIONID=XXX > 2. As the page renders, it fires a cometd request with JSESSIONID=XXX, > BAYEUX_BROWSER=YYY > 3. All future cometd requests should have JSESSIONID=XXX, > BAYEUX_BROWSER=YYY > > It's probably easiest to watch the traffic in the developer tools in your > browser (network traffic). > I'm guessing somewhere along the way, one of the session id's is getting > lost. > > > > On 14 June 2014 16:34, Boris Horvat <horvat.z.bo...@gmail.com> wrote: > > > From what I can see the JSESSIONID is never changed, but I never seen > > BAYEUX_BROWSER being passed. > > > > In the class ComponentJSONRendererImpl I can see only 1 cookie > > > > [image: Inline image 1] > > > > (I hope images can be displayed in this way) > > > > What class has replaced this implementation in the 0.9.18? > > > > Also could code like this cause this kind of issue? > > > > <t:cometd.PushTarget topic="prop:channelMenuItems" > > event="updateMenuItems" update="replace" session="true"/> > > <t:block t:id="blockGroupNotificationNumber"> stuff </t:block> > > > > @OnEvent("updateMenuItems") > > Block onUpdateMenuItems(ProfilePage profilePage) { > > this.updatedProfilePage = profilePage; > > // Added script for updating menu items badges because of push > > notification > > ajaxResponseRenderer.addCallback(new JavaScriptCallback() { > > public void run(JavaScriptSupport jss) { > > jss.addInitializerCall("removeElementById", > > "menuItemsDiv"); > > } > > }); > > return blockGroupNotificationNumber; > > } > > > > > > T5.initializers.removeElementById = function(id) { > > var element = document.getElementById(id); > > element.parentNode.removeChild(element); > > } > > > > On Sat, Jun 14, 2014 at 4:13 PM, Lance Java <lance.j...@googlemail.com> > > wrote: > > > >> There's a bit too much info there for me to grok without much context. > >> > >> Watch these two cookies: > >> JSESSIONID=6C36330F5F8519937A9620B276E9C219; > >> BAYEUX_BROWSER=a43f-14stwrta3yd8bhwep00t3wfz > >> > >> For all requests, make sure their values are consistent and don't > change. > >> > >> Also, what's this? > >> > >> > >> > >> > java.util.concurrent.ExecutionException%3A%20java.lang.RuntimeException%3A%20org.apache.tapestry5.runtime.ComponentEventException%3A%20Render%20queue%20error%20in%20BeginRender%5Bblackbox%2FAssets%3Aheader.menuprofile.if_1%5D%3A%20Failure%20reading%20parameter%20%27test%27%20of%20component%20blackbox%2FAssets%3Aheader.menuprofile.if_1%3A%20%21session%20%5Bat%20classpath%3Acom%2Fbomahabo%2Fflow%2Ftapestry%2Fcomponents%2Flayout%2FMenuProfile.tml%2C%20line%204%5D > >> On 14 Jun 2014 11:09, "Boris Horvat" <horvat.z.bo...@gmail.com> wrote: > >> > >> > Well it is cookie bases session. This happens in the application that > we > >> > run in local jetty as well as on amazon hosted tomcat (each time > single > >> > server is being used) > >> > > >> > When the request is made and page is refreshed I can see the following > >> data > >> > in the network section. From my understanding of the below data cookie > >> is > >> > being passed > >> > > >> > > >> > 1. Remote Address: > >> > 46.137.121.29:80 > >> > 2. Request URL: > >> > http://qa.flow-manager.com/assets.formcreateasset > >> > 3. Request Method: > >> > POST > >> > 4. Status Code: > >> > 500 Internal Server Error > >> > 5. Request Headersview source > >> > 1. Accept: > >> > > >> > > >> > > >> > text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 > >> > 2. Accept-Encoding: > >> > gzip,deflate,sdch > >> > 3. Accept-Language: > >> > en-GB,en;q=0.8,en-US;q=0.6 > >> > 4. Cache-Control: > >> > max-age=0 > >> > 5. Connection: > >> > keep-alive > >> > 6. Content-Length: > >> > 2318 > >> > 7. Content-Type: > >> > multipart/form-data; > >> boundary=----WebKitFormBoundaryihPoozZSG4dtBo6N > >> > 8. Cookie: > >> > JSESSIONID=6C36330F5F8519937A9620B276E9C219; > >> > BAYEUX_BROWSER=a43f-14stwrta3yd8bhwep00t3wfz > >> > 9. Host: > >> > qa.flow-manager.com > >> > 10. Origin: > >> > http://qa.flow-manager.com > >> > 11. Referer: > >> > http://qa.flow-manager.com/assets > >> > 12. User-Agent: > >> > Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, > >> like > >> > Gecko) Chrome/35.0.1916.114 Safari/537.36 > >> > 6. Request Payload > >> > 1. ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; name="t:formdata" > >> > > >> > > >> > C9nX/WAHQFhLKBNcBCAk2Eo8yUk=:H4sIAAAAAAAAAM2XTWgTQRTHp6kVbUupRYuU4hf1UDDbnWQ3u1FEitIihFYaFLxYJskkrt3srDuzJiJ4tQcvevEmCN78OOjBWw/tQZqDF8W74FUQC56sdDdbk1I3mUlsU0/LzLz35rfz/jNv5uU30FMaBSMZE2UXMqQ8MUkpZvSsTWzXlkxCbOoAiTgFCdkoexNLDNmYMueuKmWJg00j432LNrGwxaiU8uzH1Ojs6udxcG81AkDZ3uHg8PrXV2v5dx+fiQWfaSn4nDfuDaUZYnjKIcW038pdNA3P5BoyXRx9svxpEZxYj4CuFOjL1gcYGErdQnfQhImswkSaOYZVOFe2GTgU1VQ1GYfJhAaVhKoo8dIxMNqYeV6+De6DLhGjbp4R9a32bWfQYEzleEIRBijCAEMZNFmJx0snwfFwT4bLLG9gM+clUG2awAyiWJrMeJ0oy6Z8l7E0Zq59+upK35cj739t5olYzCHmDCpin6bHz8vB2iRiHJOtclxxSBZTmnYzRYNSg1grr3NK/ufTD4FwecvW6r5Qftj58enhFxd2J3xCHvyu33j+8LxI+Ko6h9pSpxZToL7X6kzIqpA6fed+BvpqPfOygJvvNShCz1vBqtHhXcyFpqjKHudCj8FEkxPTtU2CaonYHzR55v9jAoJITatZEIdrEhrFQTmDFBzi+jVRF935c77XtO8VnKqP5KUzbwfWlhufqr31ibgYShsYsFKuVN6k15eCY+goGN4+RXU59UCVTYe7Gw//UWIEJsP+wgOutje3jSe83npXc4dAek25hgS4YpoYV3+9qzNkXUrrYLAjYIKZ3AoW6wiY3jpYvCMiUzmJCSPjpH+nyDhaDiNTO0IG29B/oiMy4/x/GBjnkNkhsDZUxtky/wYW1NAxcKpBmTWsBerf6ZnH5oBLwrdoz6/6FmB/vwxmjcXHv0ceWNW6eiB4VV7O1YrqwNY55+UNeSn//bIPAAA= > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="textfield" dddssddsd > >> ------WebKitFormBoundaryihPoozZSG4dtBo6N > >> > Content-Disposition: form-data; name="textfield_0" > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="upload"; filename="" Content-Type: > application/octet-stream > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="t:formdata" ------WebKitFormBoundaryihPoozZSG4dtBo6N > >> > Content-Disposition: form-data; name="containerAsset" > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="checkbox_0" on ------WebKitFormBoundaryihPoozZSG4dtBo6N > >> > Content-Disposition: form-data; name="checkbox_0_1" on > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="checkbox_0_2" on ------WebKitFormBoundaryihPoozZSG4dtBo6N > >> > Content-Disposition: form-data; name="checkbox_0_3" on > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N Content-Disposition: > >> > form-data; > >> > name="checkbox_0_6" on ------WebKitFormBoundaryihPoozZSG4dtBo6N > >> > Content-Disposition: form-data; name="t:submit" > >> > ["linksubmit_0_0",null] > >> > ------WebKitFormBoundaryihPoozZSG4dtBo6N-- > >> > 7. Response Headersview source > >> > 1. Connection: > >> > keep-alive > >> > 2. Content-Encoding: > >> > gzip > >> > 3. Content-Type: > >> > text/html;charset=UTF-8 > >> > 4. Date: > >> > Sat, 14 Jun 2014 09:00:14 GMT > >> > 5. Server: > >> > Apache-Coyote/1.1 > >> > 6. transfer-encoding: > >> > chunked > >> > 7. X-Tapestry-ErrorMessage: > >> > > >> > > >> > > >> > java.util.concurrent.ExecutionException%3A%20java.lang.RuntimeException%3A%20org.apache.tapestry5.runtime.ComponentEventException%3A%20Render%20queue%20error%20in%20BeginRender%5Bblackbox%2FAssets%3Aheader.menuprofile.if_1%5D%3A%20Failure%20reading%20parameter%20%27test%27%20of%20component%20blackbox%2FAssets%3Aheader.menuprofile.if_1%3A%20%21session%20%5Bat%20classpath%3Acom%2Fbomahabo%2Fflow%2Ftapestry%2Fcomponents%2Flayout%2FMenuProfile.tml%2C%20line%204%5D > >> > > >> > > >> > > >> > On Sat, Jun 14, 2014 at 8:25 AM, Lance Java < > lance.j...@googlemail.com> > >> > wrote: > >> > > >> > > Are you using cookie based session or url based? > >> > > > >> > > Try inspecting the network traffic and ensure the cookie is being > >> passed > >> > > each time. > >> > > > >> > > Is this a clustered setup? > >> > > On 14 Jun 2014 01:35, "Boris Horvat" <horvat.z.bo...@gmail.com> > >> wrote: > >> > > > >> > > > Hi Lance, I am not sure what you mean by > >> > > > > >> > > > > >> > > > One restriction with tapestry-cometd and HttpSession is that the > >> > session > >> > > > > cannot be created by the async action. I'm guessing that the > push > >> > > action > >> > > > > requires the session, but it doesn't exist yet. > >> > > > > > >> > > > > >> > > > The session should already exist by this point given that it > didn't > >> > > trigger > >> > > > this exception for the first half a dozen of runs, so only after > >> couple > >> > > of > >> > > > button clicks that send the push notification we run into this. > >> > > > Any idea how could the session be closed by this time? > >> > > > > >> > > > Does it matter if the push broadcasting happens in one component > and > >> > > event > >> > > > handle in another? I assume not and also like I said it worked for > >> the > >> > > > first few clicks. > >> > > > > >> > > > Any ideas? > >> > > > > >> > > > Thanks > >> > > > > >> > > > > >> > > > > >> > > > > > >> > > > > Admittedly the error message could be nicer than "!session" > >> > > > > On 13 Jun 2014 15:36, "Boris Horvat" <horvat.z.bo...@gmail.com> > >> > wrote: > >> > > > > > >> > > > > > Hi everyone, I have implemented a tapestry-cometd integration > >> > > > > > > >> > > > > > <dependency> > >> > > > > > <groupId>org.lazan</groupId> > >> > > > > > <artifactId>tapestry-cometd</artifactId> > >> > > > > > <version>0.9.17</version> > >> > > > > > </dependency> > >> > > > > > > >> > > > > > Our usage of the component is > >> > > > > > > >> > > > > > <t:cometd.PushTarget topic="prop:channelMenuItems" > >> > > > > > event="updateMenuItems" update="replace" session="true"/> > >> > > > > > > >> > > > > > and in UAT environment that runs under Tomcat I got the > >> following > >> > > > > > exception. > >> > > > > > > >> > > > > > java.lang.IllegalStateException > >> > > > > > !session > >> > > > > > Filter stack framesStack trace > >> > > > > > > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.cometd.server.transport.HttpTransport$HttpContext.setHttpSessionAttribute(HttpTransport.java:177) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.lazan.t5.cometd.services.internal.BayeuxContextHttpSession.setAttribute(BayeuxContextHttpSession.java:31) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.SessionImpl.setAttribute(SessionImpl.java:57) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.set(SessionApplicationStatePersistenceStrategy.java:73) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.getOrCreate(SessionApplicationStatePersistenceStrategy.java:58) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.get(SessionApplicationStatePersistenceStrategy.java:44) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$ApplicationStateAdapter.getOrCreate(ApplicationStateManagerImpl.java:50) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.services.ApplicationStateManagerImpl.get(ApplicationStateManagerImpl.java:133) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > org.apache.tapestry5.internal.transform.ApplicationStateWorker$1.get(ApplicationStateWorker.java:75) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > com.bomahabo.flow.tapestry.components.layout.MenuProfile.conduit_get_user(MenuProfile.java) > >> > > > > > - > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > com.bomahabo.flow.tapestry.components.layout.MenuProfile.getPageNotificationNumber(MenuProfile.java:135) > >> > > > > > > >> > > > > > > >> > > > > > It is probably worth nothing that this doesn't happen on the > >> first > >> > > few > >> > > > > > triggers of the push event but at some point in the near > future. > >> > > > > > > >> > > > > > Has anyone seen something similar before? > >> > > > > > > >> > > > > > -- > >> > > > > > Sincerely > >> > > > > > *Boris Horvat* > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > -- > >> > > > Sincerely > >> > > > *Boris Horvat* > >> > > > > >> > > > >> > > >> > > >> > > >> > -- > >> > Sincerely > >> > *Boris Horvat* > >> > > >> > > > > > > > > -- > > Sincerely > > *Boris Horvat* > > > -- Sincerely *Boris Horvat*