Hi,

My colleague is having the issue outlined below. I thought this list might be 
better to give an insight as to what is going on?

Begin forwarded message:

> From: Adam Terrey <a...@pretaweb.com>
> Subject: Fwd: Zope/Plone/Zeo Concurrency Issue
> Date: 28 May 2013 5:23:33 PM AEST
> To: Dylan Jay <d...@pretaweb.com>
> 
> 
> 
> 
> -------- Original Message --------
> Subject:      Zope/Plone/Zeo Concurrency Issue
> Date: Tue, 28 May 2013 16:04:21 +1000
> From: Adam Terrey <a...@pretaweb.com>
> To:   z...@zope.org
> 
> Hi,
> 
> Can someone offer some insight into what might be going on here and perhaps 
> how I can debug the following issue?
> 
> In Plone there is a request patten used to create content which looks like...
> (A) GET request to /MySite/createObject?type_name=Document
> Responds with a redirect to a tempory document at a location such as 
> /MySite/portal_factory/Document/document.2013-05-28.1878040976/edit
> (B) GET /MySite/portal_factory/Document/document.2013-05-28.1878040976/edit
> Responds with from to set fields in the Document
> (C) POST request to 
> /MySite/portal_factory/Document/document.2013-05-28.1878040976/atct_edit
> Responds with a redirect to the final location of the document such as 
> /Mysite/my-page
> (D) GET /Mysite/my-page
> Responds with the newly created page
> In one of our production systems we are running multiple Zope/Plone instances 
> connecting to a Zeo server. And the above patten works about 95% of the time. 
> However, sometimes request (D) will respond with 404 Page Not Found. My 
> assumptions is that request (C) and (D) are going to different instances and 
> somehow         the instance handling request (D) does not yet see the 
> transaction with completed the page creation.
> I've checked that the transaction commit happens before response headers are 
> emitted for request (C) - suspecting the case that the browser handles the 
> redirect before the transaction is completed - but this is clearly not the 
> case from what i can see. The transaction is well committed before response 
> headers are returned.
> 
> Versions are as follows:
> Plone 4.1.3 (4112)
> CMF 2.2.4
> Zope 2.13.10
> Python 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]
> I have been using the following script to recreate the issue. I seem to be 
> able to produce the error quicker if I put server2 under apache-bench load, 
> and I have been able to recreate the issue on a local copy of our production 
> system but it is a far more rare case.
> 
> auth = ('admin', 'admin')
> server1 = 'http://localhost:46101'
> server2 = 'http://localhost:46102'
> site = '/Plone'
> 
> import requests
> 
> ses = requests.Session()
> ses.auth=auth
> 
> for i in range(10):
>                 
>     # Create tempory Object
>     create_url = server1 + site + '/createObject?type_name=Document'
>     print "GET", create_url
>     res = ses.get (create_url)
>     tempory_obj = res.url.rsplit("/", 1)[0]
>     print "tempory object:", tempory_obj
>     
>     
>     # Submit data to create object (response will
>     # be the redirect ot the ojbect's location)
>     
>     data = {
>                  'id': '',
>                  'title': 'page' + str(i)   ,
>                  'form.button.save': 'Save',
>                  'form.submitted': '1',
>                  "description": "some secriot",
>                  "text": "some text"
>                  }
>     
>     post_url = tempory_obj + "/atct_edit"    
>     print "POST", post_url
>     res = ses.post(post_url, data=data, allow_redirects=False)
>     
>     redirect_location = "/" + res.headers['location'][7:].split('/',1)[1]
>     print 'redirect_location', redirect_location
>     
>     
>     # Request object from the redirect from server2
>     redirect_url = server2 + redirect_location
>     print "GET", redirect_url    
>     res = ses.get(redirect_url)
>     
>     if res.status_code != 200:
>         last404 = res
>         print res;
>         break;
>         
>     print "---"
> 
> 
> Any help would be appreciated.
> 
> Regards,
> 
> -- 
> Adam Terrey
> Software Engineer
> PretaWeb
> 
> a...@pretaweb.com
> 
> 
> 
> 

_______________________________________________
For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to