Message9932

Author jmadden
Recipients jmadden
Date 2015-04-23.15:24:47
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1429802688.03.0.746201468553.issue2337@psf.upfronthosting.co.za>
In-reply-to
Content
I came across this while running the `zodbshootout` to get an idea of Jython's performance under ZODB with high-concurrency. There were two threads running, each of which calls `gc.collect` at the beginning of a certain phase of the benchmark (roughly halfway through).

  Traceback (most recent call last):
  File "/jython2.7rc3/Lib/site-packages/zodbshootout/fork.py", line 66, in run
    res = self.func(self.param, self.sync)
  File "/jython2.7rc3/Lib/site-packages/zodbshootout/main.py", line 233, in read
    return self.read_test(db_factory, n, sync)
  File "/jython2.7rc3/Lib/site-packages/zodbshootout/main.py", line 177, in read_test
    conn.cacheMinimize()
  File "//ZODB/src/ZODB/Connection.py", line 272, in cacheMinimize
    connection._cache.minimize()
  File "//persistent/persistent/picklecache.py", line 281, in full_sweep
    return self._sweep(0)
  File "//persistent/persistent/picklecache.py", line 75, in locked
    return f(self, *args, **kwargs)
  File "//persistent/persistent/picklecache.py", line 420, in _sweep
    gc.collect()
  RuntimeError: maximum recursion depth exceeded (Java StackOverflowError)

Even setting -Xss to 16M still overflowed.

ZODB (or more specifically, persistent) does use the `gc.monitorObject` API as well as `weakref.WeakValueDictionary`: the values in the dictionary are monitored because we need a more deterministic cleanup of them then standard Java GC semantics offer.

I tried the tip from #2258 (org.python.core.Options.showJavaExceptions = True) to get the Java stack, but that didn't produce additional output.
History
Date User Action Args
2015-04-23 15:24:48jmaddensetrecipients: + jmadden
2015-04-23 15:24:48jmaddensetmessageid: <1429802688.03.0.746201468553.issue2337@psf.upfronthosting.co.za>
2015-04-23 15:24:48jmaddenlinkissue2337 messages
2015-04-23 15:24:47jmaddencreate