[Zope-dev] SESSION loosing data when system has multiple users

Chris McDonough chrism at zopemafia.com
Fri Oct 17 17:41:37 EDT 2003


I will take a look.

Thanks!

- C


On Fri, 2003-10-17 at 17:04, Steve Jibson wrote:
> Chris,
> 
> Sorry, I should have included more info, but my message was already a 
> bit long.
> 
> I have run the tests on both Red Hat 7.3 and Red Hat 9 with the same 
> result.  I am using python 2.2.3.  Here is the step-by-step for what I 
> did (I'm going to err on the side of too much info here):
> 
> - check out latest Zope from cvs
> - cd Zope
> - ./configure
> - make
> - make instance
> - cd lib/python/Products/Sessions/stresstests
> - edit stresstestMultiThread.py
>    - comment out line 38
>    - changed readiters and writeiters fro 100 to 10 on lines 117 and 118
> - cp ~/Zope/lib/python/Products/Transience/tests/fauxtime.py .
> - python2 stresstestMultiThread.py
> 
> This time, on Red Hat 7.3, I actually got an exception.  I'll include 
> the output below.
> 
> Please let me know if there is ANYTHING I can do to help out with this 
> one.  I appreciate you looking into it.
> 
> Steve
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> [stevej at elwood stresstests]$ python2 stresstestMultiThread.py
> testNonOverlappingBrowserIds (__main__.TestMultiThread) ... 4 values in toc
> waiting for 8 threads
> read conflict
> 4 values in toc
> read conflict
> read conflict
> read conflict
> waiting for 8 threads
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> 4 values in toc
> 4 values in toc
> 4 values in toc
> 4 values in toc
> 4 values in toc
> 4 values in toc
> 4 values in toc
> 4 values in toc
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> waiting for 8 threads
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> waiting for 8 threads
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> 0
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> waiting for 7 threads
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> 2003-10-17T14:41:56
> 25
> Exception in thread Thread-3:
> Traceback (most recent call last):
>    File "//usr/lib/python2.2/threading.py", line 414, in __bootstrap
>      self.run()
>    File "stresstestMultiThread.py", line 164, in run
>      self.run1()
>    File "stresstestMultiThread.py", line 187, in run1
>      data = session_data_manager.getSessionData(create=1)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 93, in getSessionData
>      return self._getSessionDataObject(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 180, in _getSessionDataObject
>      ob = container.new_or_existing(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 175, in new_or_existing
>      item  = self.get(key, notfound)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 807, in get
>      v = self._data[b].get(k, notfound)
> KeyError: 0
> 
> read conflict
> read conflict
> read conflict
> 2003-10-17T14:41:56
> 17
> Exception in thread Thread-2:
> Traceback (most recent call last):
>    File "//usr/lib/python2.2/threading.py", line 414, in __bootstrap
>      self.run()
>    File "stresstestMultiThread.py", line 164, in run
>      self.run1()
>    File "stresstestMultiThread.py", line 187, in run1
>      data = session_data_manager.getSessionData(create=1)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 93, in getSessionData
>      return self._getSessionDataObject(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 180, in _getSessionDataObject
>      ob = container.new_or_existing(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 175, in new_or_existing
>      item  = self.get(key, notfound)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 807, in get
>      v = self._data[b].get(k, notfound)
>    File "/home/stevej/Zope/lib/python/ZODB/Connection.py", line 561, in 
> setstate
>      p, serial = self._storage.load(oid, self._version)
>    File "/home/stevej/Zope/lib/python/tempstorage/TemporaryStorage.py", 
> line 94, in load
>      s=self._index[oid]
> KeyError:
> 
> 2003-10-17T14:41:56
> 18
> Exception in thread Thread-4:
> Traceback (most recent call last):
>    File "//usr/lib/python2.2/threading.py", line 414, in __bootstrap
>      self.run()
>    File "stresstestMultiThread.py", line 164, in run
>      self.run1()
>    File "stresstestMultiThread.py", line 187, in run1
>      data = session_data_manager.getSessionData(create=1)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 93, in getSessionData
>      return self._getSessionDataObject(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Sessions/SessionDataManager.py", 
> line 180, in _getSessionDataObject
>      ob = container.new_or_existing(key)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 175, in new_or_existing
>      item  = self.get(key, notfound)
>    File 
> "/home/stevej/Zope/lib/python/Products/Transience/Transience.py", line 
> 807, in get
>      v = self._data[b].get(k, notfound)
>    File "/home/stevej/Zope/lib/python/ZODB/Connection.py", line 561, in 
> setstate
>      p, serial = self._storage.load(oid, self._version)
>    File "/home/stevej/Zope/lib/python/tempstorage/TemporaryStorage.py", 
> line 94, in load
>      s=self._index[oid]
> KeyError:
> 
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> waiting for 4 threads
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> read conflict
> 
> 
> 
> Chris McDonough wrote:
> > What OS?  That test was written obviously to make sure the system
> > works... others have complained about similar issues.  I'd like to be
> > able to track this down, but I can't make the test fail under Red Hat
> > 7.3.
> > 
> > On Fri, 2003-10-17 at 15:56, Steve Jibson wrote:
> > 
> >>We have been using Zope 2.7.0-beta2 and we have been having a bit of 
> >>trouble with SESSION loosing data when we have more than one user on the 
> >>system.  These problems usually show up as KeyErrors when a particular 
> >>data element in SESSION cannot be found.  If I set the zserver threads 
> >>to 1 in zope.conf, the problem seems to go away (but the system isn't 
> >>really usable either).  So I assumed it was a thread-safety problem in 
> >>the SESSION code.
> >>
> >>I decided to be brave and take a look at the code.  To my surprize, I 
> >>found a test file called stresstestMultiThread.py in the 
> >>lib/python/Products/Sessions/stresstests directory that seemed to be the 
> >>exact thing I wanted to test.  It wouldn't run without a couple of minor 
> >>modifications, but once I got it running, with more than three or four 
> >>threads, the tests fail (never complete).
> >>
> >>Is this test file still valid?  It looks like it hasn't been modified 
> >>for almost a year now.  If it is valid, has anyone looked into getting 
> >>the tests to pass.  I will probably look into it more myself, but before 
> >>I do, I just want to make sure I'm not headed down a dead-end street.
> >>
> >>
> >>Thanks,
> >>
> >>Steve
> >>
> >>P.S. - The tests failed in both the 2.7.0b2-src and the what is 
> >>currently in cvs.
> >>
> >>
> >>_______________________________________________
> >>Zope-Dev maillist  -  Zope-Dev at zope.org
> >>http://mail.zope.org/mailman/listinfo/zope-dev
> >>**  No cross posts or HTML encoding!  **
> >>(Related lists - 
> >> http://mail.zope.org/mailman/listinfo/zope-announce
> >> http://mail.zope.org/mailman/listinfo/zope )
> 
> 
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )




More information about the Zope-Dev mailing list