- 11 Sep, 2002 9 commits
-
-
Barry Warsaw authored
-
Jeremy Hylton authored
-
Guido van Rossum authored
Increase the timeout from 10 to 30 seconds and add a message to the failIf() call.
-
Jeremy Hylton authored
-
Guido van Rossum authored
lock. The lock is now never held for a long time, only while self.thread is being assigned or inspected, and while a thread is being created, started or stopped. Waiting for an event or joining a thread is now done without holding the lock. There is no longer a fear of AttributeError. When a thread join doesn't succeed within 30 seconds, a message is logged, and depending on the situation, the join is retried.
-
Jeremy Hylton authored
The old code would avoid hosing the system when the first jar failed during its finish. The logic is that the failure means that transaction did not commit, so it was safe for all the other jars to abort. There are counter-examples to this assumption. For example, ZEO could fail after commiting the transaction on the server but before communicating that success to the client. It would lead to inconsistency if the other jars aborted after the first committed. The solution is to reduce the special case yet further: If a single-jar transaction fails during the finish, assume the transaction is aborted and avoid hosage. If the jar actually committed, it's possible to get back to a consistent state since only one jar was involved.
-
Jeremy Hylton authored
-
Jeremy Hylton authored
-
Jeremy Hylton authored
The effect of this change will be to cause transactions to fail immediately, rather than the first time they call store() or abortVersion() or some other write-method. Since the Connection now treats empty transactions as a special case, this change will not change the class of transactions that fail.
-
- 10 Sep, 2002 9 commits
-
-
Guido van Rossum authored
-
Guido van Rossum authored
parenthesis.
-
Guido van Rossum authored
test suite. The address is now found as the _addr attribute of the client storage instance.
-
Guido van Rossum authored
-
Guido van Rossum authored
-
Guido van Rossum authored
the BuddyCacheSimulation constructor to round up the cachelimit so that it reports the actual value used.
-
Guido van Rossum authored
to print some information. Use -s to print size histograms. This is pretty raw. It prints two tables: one for writes, one for loads.
-
Guido van Rossum authored
keeping track of the beginning and end address of all free blocks, to make merging of adjacent blocks a breeze. The free list is no longer kept sorted order. Unfortunately, this still performs poorly. It has a higher hit rate (with the 38 minute trace I'm using; the longer traces take too long) than the buddy system allocator with the same arena size, it is *much* slower, the memory usage is under 20% (!!!), and despite a roving pointer, the allocation loop is taken an average of 692 times per allocation. At the end of the simulation the free list contains 1039 blocks; I presume this is a steady state approximating the average behavior. (There are 2280 allocated blocks at that point, roughly confirming Knuth's "50% rule" and suggesting that the block merge code works properly.) I guess the next idea is separate free lists per size.
-
Guido van Rossum authored
-
- 09 Sep, 2002 6 commits
-
-
Barry Warsaw authored
tpc_begin(): Get rid of the apply() call since I believe we can now rely on extended-call syntax being available.
-
Guido van Rossum authored
simple free list using a mix of exact-fit and last-fit with a roving pointer as suggested by Tim. Use -f to use this version. Renamed BuddyNode to BlockNode since it is now used by both allocators. Moved some code around in an attempt to organize it more top-down. Moved the report printing into the Simulation base class. Print the class name and exact cache size before the header; skip the final report printing if only one previous report was printed.
-
Guido van Rossum authored
Versions: 0 records used a version
-
Guido van Rossum authored
1000*1000. This makes it easier to specify cache sizes for the buddy system that don't have to be rounded up to the next power of two. It does make future reported results incompatible with past results.
-
Guido van Rossum authored
allocator.
-
Jeremy Hylton authored
Different versions of ZODB do different things with the serialnos for abortVersion(). To be safe and avoid giving non-version data with an invalid serialno after an abort version, invalidate the version and non-version data. This hurts cache effectiveness when a version is aborted, but I expect it will have little practical impact.
-
- 08 Sep, 2002 5 commits
-
-
Guido van Rossum authored
-
Guido van Rossum authored
Sort options alphabetically. Remove dependency between -S, -q and -v options (-S no longer disables -q and enables -v). Remove dependency between -S and -h (histogram is printed regardless of dostats).
-
Guido van Rossum authored
in, right, Jeremy? :-)
-
Jeremy Hylton authored
-
Jeremy Hylton authored
-
- 07 Sep, 2002 6 commits
-
-
Jeremy Hylton authored
-
Jeremy Hylton authored
-
Jeremy Hylton authored
Repair comments in _call() about how wait() handles reply lock.
-
Jeremy Hylton authored
# NB: commit() is responsible for calling tpc_begin() on the storage. # It uses self._begun to track whether it has been called. When # self._begun is None, it has not been called. # This arrangement allows us to handle the special case of a # transaction with no modified objects. It is possible for # registration to be occur unintentionally and for a persistent # object to compensate by making itself as unchanged. When this # happens, it's possible to commit a transaction with no modified # objects. # Since tpc_begin() may raise a ReadOnlyError, don't call it if there # are no objects. This avoids spurious (?) errors when working with # a read-only storage. Add code to handle this in Connection's tpc_begin() and commit() methods. Add two tests in testZODB.
-
Jeremy Hylton authored
An earlier revision (1.68) fixed invalidation code when an object had no oid (oid == None). There is no longer anyway to get None in _invalidated, and it has been a long time since a None there meant "invalidate everything." At long last, then, remove all the code deal with the invalidate everything behavior.
-
Jeremy Hylton authored
-
- 06 Sep, 2002 5 commits
-
-
Guido van Rossum authored
invalidations instead of only the ones that hit the cache. - Support reading gzipped files. This is triggered automatically when the filename ends in .gz. Also support reading from stdin (pass '-' as filename). - Widen the FLIPS column by one to match the EVICTS column width of the LRU simulation. - Support simulating alternative caching strategies. For now, only LRU is supported, triggered by the -l option. - Change the Simulation base class to store the cachelimit argument. (The constructor signature must be the same across all subclasses.)
-
Guido van Rossum authored
the filename ends in .gz. Also support reading from stdin (pass '-' as filename).
-
Guido van Rossum authored
base class.
-
Guido van Rossum authored
report overall statistics for all columns.
-
Jeremy Hylton authored
-