[Checkins] [zopefoundation/mongopersist] 141881: Implemented optimistic data dumping. See CHANGES.t...
GitHub
noreply at github.com
Thu Mar 14 13:09:16 UTC 2013
Branch: refs/heads/master
Home: https://github.com/zopefoundation/mongopersist
Commit: 14188199f91955efc546be8bd28daf2940685015
https://github.com/zopefoundation/mongopersist/commit/14188199f91955efc546be8bd28daf2940685015
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-10 (Sat, 10 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
M src/mongopersist/interfaces.py
A src/mongopersist/optimistic-data-dumping.txt
M src/mongopersist/serialize.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/tests/test_serialize.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
Implemented optimistic data dumping. See CHANGES.txt for more details.
Commit: eb40a0d9d1d3c78e02b1554a22389f7586073a7c
https://github.com/zopefoundation/mongopersist/commit/eb40a0d9d1d3c78e02b1554a22389f7586073a7c
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
M src/mongopersist/interfaces.py
M src/mongopersist/mapping.py
M src/mongopersist/serialize.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/tests/test_mapping.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/interfaces.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Cleaned up get_collection*() API a bit and changed as much code as
possible to using those APIs.
- Documented _m_remove_documents in IMongoContainer interface.
Commit: 98fdfbb66db8f6be8e36bdbfc7f512c8e70ce9dc
https://github.com/zopefoundation/mongopersist/commit/98fdfbb66db8f6be8e36bdbfc7f512c8e70ce9dc
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-11 (Sun, 11 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/serialize.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- When adding an item to ``MongoContainer`` and the key is ``None``, then the
OID is chosen as the key. Ids are perfect key, because they are guaranteed
to be unique within the collection.
Commit: 1ab027640ace478a84b33fa39379037dca459e04
https://github.com/zopefoundation/mongopersist/commit/1ab027640ace478a84b33fa39379037dca459e04
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M src/mongopersist/zope/container.py
M src/mongopersist/zope/interfaces.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Since people did not like the setitem with ``None`` key implementation, I
also added the ``MongoContainer.add(value, key=None)`` method, which makes
specifying the key optional. The default implementation is to use the OID,
if the key is None.
Commit: b5c405782431abe6b4cd4e5c41a044df5f5729fc
https://github.com/zopefoundation/mongopersist/commit/b5c405782431abe6b4cd4e5c41a044df5f5729fc
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
Log Message:
-----------
Make sure that the object is not saved again at the end, if it is
dumped.
Commit: 0583763e078e8f133dba00548238cbc04a5f7fa1
https://github.com/zopefoundation/mongopersist/commit/0583763e078e8f133dba00548238cbc04a5f7fa1
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M src/mongopersist/README.txt
M src/mongopersist/datamanager.py
M src/mongopersist/mapping.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/zope/container.py
Log Message:
-----------
* Added some more tests to improve test coverage.
* Renamed processSpec() to process_spec(), since we are using PEP8 naming.
* Added ProcessSpecDecorator.
* Added processSpec to the CollectionWrapper. Removed manual calls to
processSpec() and make sure the wrapper is used everywhere.
Commit: 2f4f93fc9323bdc1d3f2a48a674f42c16e2eed0b
https://github.com/zopefoundation/mongopersist/commit/2f4f93fc9323bdc1d3f2a48a674f42c16e2eed0b
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Get ready for release. I have tested this code with our application and
a lot of the odd quirks are gone now. I successfully removed all intermediate
transaction.commit() calls in our application and mongopersist now behaves a
lot like a native ZODB app.
Commit: 1c2952bef51f7a048584c2315e423698963f5218
https://github.com/zopefoundation/mongopersist/commit/1c2952bef51f7a048584c2315e423698963f5218
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-12 (Mon, 12 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
vb
Commit: 0c11141d3588d245be98a2d6f8918c6f63f331cb
https://github.com/zopefoundation/mongopersist/commit/0c11141d3588d245be98a2d6f8918c6f63f331cb
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-28 (Wed, 28 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/datamanager.py
M src/mongopersist/serialize.py
Log Message:
-----------
Added quite detailed debug logging around collection methods
Commit: c14c17bffa6ee702ff16e0ef949d1b0c36c43662
https://github.com/zopefoundation/mongopersist/commit/c14c17bffa6ee702ff16e0ef949d1b0c36c43662
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-28 (Wed, 28 Mar 2012)
Changed paths:
M src/mongopersist/tests/test_doc.py
M src/mongopersist/zope/tests/test_container.py
M versions.cfg
Log Message:
-----------
don't forget the tests next time...
Commit: cdf2a7202104b912ac6722ca701b4b606f185bed
https://github.com/zopefoundation/mongopersist/commit/cdf2a7202104b912ac6722ca701b4b606f185bed
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-28 (Wed, 28 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Preparing release 0.6.1
Commit: c98fe0aef2f2edaa43f4f9784a64ca51bc118294
https://github.com/zopefoundation/mongopersist/commit/c98fe0aef2f2edaa43f4f9784a64ca51bc118294
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-28 (Wed, 28 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.6.2
Commit: 1d496f9e2eb8304e21c8a74f65e22138cf156fd7
https://github.com/zopefoundation/mongopersist/commit/1d496f9e2eb8304e21c8a74f65e22138cf156fd7
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/datamanager.py
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
- Bug: When a transaction was aborted, the states of all *loaded* objects were
reset. Now, only *modified* object states are reset. This should drastically
lower problems (by the ratio of read over modified objects) due to lack of
full MVCC.
Commit: 1277b2cafb1017368da37a7cb25c960e87a0ea6c
https://github.com/zopefoundation/mongopersist/commit/1277b2cafb1017368da37a7cb25c960e87a0ea6c
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
M src/mongopersist/serialize.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/tests/test_serialize.py
Log Message:
-----------
- Feature: Conflicts are now detected while aborting a transaction. The
implemented policy will not reset the document state, if a conflict is
detected.
- Feature: Provide a flag to turn on MongoDB access logging. The flag is false
by default, since access logging is very expensive.
- Bug: We have seen several occasions in production where we suddenly lost
some state in some documents, which prohibited the objects from being
loadable again. The cause was that the ``_original_states`` attribute did not
store the raw MongoDB document, but a modified one. Since those states are
used during abort to reset the state, however, the modified document got
stored making the affected objects inaccessible.
Commit: 75f58199b78e4358ee72f75e0557a44bc837a1ba
https://github.com/zopefoundation/mongopersist/commit/75f58199b78e4358ee72f75e0557a44bc837a1ba
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M src/mongopersist/datamanager.py
Log Message:
-----------
Just a little bit more logging.
Commit: f24e20a2da6b3b501e86edaa916a8f1e3106479a
https://github.com/zopefoundation/mongopersist/commit/f24e20a2da6b3b501e86edaa916a8f1e3106479a
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/README.txt
M src/mongopersist/datamanager.py
M src/mongopersist/interfaces.py
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
- Feature: ``ConflictError`` has now a much more meaningful API. Instead of
just referencing the object and different serials, it now actual has the
original, current and new state documents.
Commit: 62100a142aa024c05925286d983d88e082b0b468
https://github.com/zopefoundation/mongopersist/commit/62100a142aa024c05925286d983d88e082b0b468
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/README.txt
A src/mongopersist/conflict.py
M src/mongopersist/datamanager.py
M src/mongopersist/interfaces.py
M src/mongopersist/serialize.py
A src/mongopersist/tests/test_conflict.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/tests/test_serialize.py
Log Message:
-----------
- Feature: A new ``IConflictHandler`` interface now controls all aspects of
conflict resolution. The following implementations are provided:
* ``NoCheckConflictHandler``: This handler does nothing and when used, the
system behaves as before when the ``detect_conflicts`` flag was set to
``False``.
* ``SimpleSerialConflictHandler``: This handler uses serial numbers on each
document to keep track of versions and then to detect conflicts. When a
conflict is detected, a ``ConflictError`` is raised. This handler is
identical to ``detect_conflicts`` being set to ``True``.
* ``ResolvingSerialConflictHandler``: Another serial handler, but it has the
ability to resolve a conflict. For this to happen, a persistent object
must implement ``_p_resolveConflict(orig_state, cur_state, new_state)``,
which returns the new, merged state.
As a result, the ``detect_conflicts`` flag of the data manager was removed
and replaced with the ``conflict_handler`` attribute. One can pass in the
``conflict_handler_factory`` to the data manager constructor. The factory
needs to expect on argument, the data manager.
Commit: 6e9a2c51efb150a04eaf27e71329cd91c5dfe2cd
https://github.com/zopefoundation/mongopersist/commit/6e9a2c51efb150a04eaf27e71329cd91c5dfe2cd
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-29 (Thu, 29 Mar 2012)
Changed paths:
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
Test the logging decorator a bit more.
Commit: 7869eda634f3e20d6c17b1c5f0433a50af06fd81
https://github.com/zopefoundation/mongopersist/commit/7869eda634f3e20d6c17b1c5f0433a50af06fd81
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-30 (Fri, 30 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
Added transaction ID to LoggingDecorator
Commit: 71c6cf071f5c18558efc37ffb603a62fb5b93055
https://github.com/zopefoundation/mongopersist/commit/71c6cf071f5c18558efc37ffb603a62fb5b93055
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-03-30 (Fri, 30 Mar 2012)
Changed paths:
M src/mongopersist/datamanager.py
Log Message:
-----------
removed unneeded imports
Commit: 98e019456bd85e5f385f8a05d8b530c6a5be89d9
https://github.com/zopefoundation/mongopersist/commit/98e019456bd85e5f385f8a05d8b530c6a5be89d9
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-30 (Fri, 30 Mar 2012)
Changed paths:
M src/mongopersist/interfaces.py
Log Message:
-----------
Add docstring to error class.
Commit: 1a2f4e14cdfef55f228fc017df56f00c322f282b
https://github.com/zopefoundation/mongopersist/commit/1a2f4e14cdfef55f228fc017df56f00c322f282b
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-30 (Fri, 30 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/conflict.py
M src/mongopersist/datamanager.py
M src/mongopersist/interfaces.py
M src/mongopersist/serialize.py
M src/mongopersist/tests/test_conflict.py
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
- Feature: Whenever ``setattr()`` is called on a persistent object, it is
marked as changed even if the new value equals the old one. To minimize
writes to MongoDB, the latest database state is compared to the new state
and the new state is only written when changes are detected. A flag called
``serialize.IGNORE_IDENTICAL_DOCUMENTS`` (default: ``True``) is used to
control the feature. (Experimental)
Commit: 494d8d94dd62b43a008993f1721189aab4dfada8
https://github.com/zopefoundation/mongopersist/commit/494d8d94dd62b43a008993f1721189aab4dfada8
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-31 (Sat, 31 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/serialize.py
Log Message:
-----------
- Performance: Drastically improved performance for collections that store
only one type of objects and where the documents do not store the type
(i.e. it is stored in the name map collection).
Commit: 2f9ca184b3f3a195558b8d131de5e5cef3ebe005
https://github.com/zopefoundation/mongopersist/commit/2f9ca184b3f3a195558b8d131de5e5cef3ebe005
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-31 (Sat, 31 Mar 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/datamanager.py
M src/mongopersist/zope/container.py
Log Message:
-----------
- Performance: The Zope Container fast load via find() did not work correctly,
since setstate() did not change the state from ghost to active and thus the
state was loaded again from MongoDB and set on the object. Now we use the
new ``_latest_states`` cache to lookup a document when ``setstate()`` is
called through the proper channels.
Between this and the previous checkin, fast loading is now 30 times
faster than before.
Commit: acafea3286fca877d6f76640f1437c276ad092e7
https://github.com/zopefoundation/mongopersist/commit/acafea3286fca877d6f76640f1437c276ad092e7
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-03-31 (Sat, 31 Mar 2012)
Changed paths:
M CHANGES.txt
M setup.py
A src/mongopersist/performance.py
Log Message:
-----------
- Feature: Added a little script to test performance. It is not very
sophisticated, but it is sufficient for a first round of optimizations.
Commit: 0d7210fb07e6cf8fe0e727c5c6954ac19b6820c9
https://github.com/zopefoundation/mongopersist/commit/0d7210fb07e6cf8fe0e727c5c6954ac19b6820c9
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-01 (Sun, 01 Apr 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/performance.py
M src/mongopersist/serialize.py
M src/mongopersist/testing.py
M src/mongopersist/tests/test_serialize.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Feature: Massively improved performance on all levels. This was mainly
accomplished by removing unnecessary database accesses, better caching and
more efficient algorithms. This results in speedups between 4-25 times.
Commit: 32cd056373995da55d0df63456fc9cd1c5351930
https://github.com/zopefoundation/mongopersist/commit/32cd056373995da55d0df63456fc9cd1c5351930
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/performance.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/interfaces.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Implemented several more mapping methods for the Mongo Container, so that
all methods getting the full list of items are fast now.
- Bug: When looking for an item by key/name (``find_*()`` methods) , you would
never get the right object back, but the first one found in the
database. This was due to clobbering the search filter with more general
parameters.
Commit: 5961ee6dce324cefbf4e99249e74fd1727c1644d
https://github.com/zopefoundation/mongopersist/commit/5961ee6dce324cefbf4e99249e74fd1727c1644d
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/testing.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Feature: The new ``IdNamesMongoContainer`` class uses the natural Mongo
ObjectId as the name/key for the items in the container. No more messing
around with coming up or generating a name. Of course, if you specified
``None`` as a key in the past, it already used the object id, but it was
sotred again in the mapping key field. Now the object id is used directly
everywhere.
Commit: a089d8a3ec5bea4ce1554b45148d3fab438e99b4
https://github.com/zopefoundation/mongopersist/commit/a089d8a3ec5bea4ce1554b45148d3fab438e99b4
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Get ready for release
Commit: 48fa9e0e69a907b78e55b873c73310858b71af44
https://github.com/zopefoundation/mongopersist/commit/48fa9e0e69a907b78e55b873c73310858b71af44
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-02 (Mon, 02 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
vb
Commit: 9684e5fba0bafd03b7e3671cf605861410b17cc4
https://github.com/zopefoundation/mongopersist/commit/9684e5fba0bafd03b7e3671cf605861410b17cc4
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M src/mongopersist/testing.py
Log Message:
-----------
Provide a proper cleanup hook and use it.
Commit: 96d07cdfdfea7a9bfb0158d18b2196bf0abb394d
https://github.com/zopefoundation/mongopersist/commit/96d07cdfdfea7a9bfb0158d18b2196bf0abb394d
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M src/mongopersist/__init__.py
A src/mongopersist/pymongo.py
Log Message:
-----------
Patch pymongo a bit, so that the hash of the DBRef is not computed all
the time but cached. DBRef's are generally considered immutable.
Commit: acebf0ba2a00ac28ae95c78303dbcbf9affb8dc2
https://github.com/zopefoundation/mongopersist/commit/acebf0ba2a00ac28ae95c78303dbcbf9affb8dc2
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
Use cleanup function.
Commit: 4216519226e05fe12c919350523c278afe937185
https://github.com/zopefoundation/mongopersist/commit/4216519226e05fe12c919350523c278afe937185
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-03 (Tue, 03 Apr 2012)
Changed paths:
M src/mongopersist/performance.py
M src/mongopersist/serialize.py
Log Message:
-----------
* Overwrite some methods that UserDict just implements inefficiently.
This gave me an 8-10% improvement in my performance tests.
* Added a hook for doing a proper object cache later.
Commit: 9463e3a3b90c183e96a770c0da166192bd36907a
https://github.com/zopefoundation/mongopersist/commit/9463e3a3b90c183e96a770c0da166192bd36907a
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/mapping.py
M src/mongopersist/serialize.py
M versions.cfg
Log Message:
-----------
- Performance: Switched to ``repoze.lru`` (from ``lru``), which is much
faster.
- Performance: To avoid excessive hash computations, we now use the hash of
the ``DBRef`` references as cache keys.
- Bug: ``ObjectId`` ids are not guarantted to be unique accross
collections. Thus they are a bad key for global caches. So we use full
``DBRef`` references instead.
Commit: 5f27dc760159831de71adde9f67fc9fbf102db58
https://github.com/zopefoundation/mongopersist/commit/5f27dc760159831de71adde9f67fc9fbf102db58
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-04-05 (Thu, 05 Apr 2012)
Changed paths:
M setup.py
Log Message:
-----------
add CHANGES.txt to long_description
Commit: a0dccbff0909a172e1e27c2ab6f3cc22fd2fede8
https://github.com/zopefoundation/mongopersist/commit/a0dccbff0909a172e1e27c2ab6f3cc22fd2fede8
Author: Adam Groszer <agroszer at mail.com>
Date: 2012-04-06 (Fri, 06 Apr 2012)
Changed paths:
M CHANGES.txt
M src/mongopersist/conflict.py
M src/mongopersist/tests/test_datamanager.py
Log Message:
-----------
- Bug: don't err on missing _py_serial on older states from mongo
Commit: 02b56a3f9b7769eef6ed4f02c7f355cdc761fae9
https://github.com/zopefoundation/mongopersist/commit/02b56a3f9b7769eef6ed4f02c7f355cdc761fae9
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-08 (Sun, 08 Apr 2012)
Changed paths:
M src/mongopersist/serialize.py
Log Message:
-----------
Switch to more direct reference.
Commit: 14625403267588beed1f16261c18eb94e1d7d393
https://github.com/zopefoundation/mongopersist/commit/14625403267588beed1f16261c18eb94e1d7d393
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-08 (Sun, 08 Apr 2012)
Changed paths:
M src/mongopersist/pymongo.py
Log Message:
-----------
The BSON c-code references the bson.dbref.DBRef class directly and that
reference cannot be replaced. So we are doing our best to overwrite as
much as possible. The two features are:
* Single, lazy computation of hash.
* Disabling of the arbitrary attribute feature.
The latter just makes several methods much faster, which really matters
when loading many objects (2-4%).
Commit: 6b7bd152ea13638e071f68f41923f023864d797e
https://github.com/zopefoundation/mongopersist/commit/6b7bd152ea13638e071f68f41923f023864d797e
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-13 (Fri, 13 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/performance.py
M src/mongopersist/zope/container.py
Log Message:
-----------
- Performance: Improved the profiler a bit by allowing to disable modification
of records as well.
- Performance: Added caching of ``_m_jar`` lookups in Mongo Containers, since
the computation turned out to be significantly expensive.
- Performance: Use lazy hash computation for DBRef. Also, disable support for
arbitrary keyword arguments. This makes roughly a 2-4% difference in object
loading time.
Get ready for release.
Commit: 0fe1d907202b67a74867cbe58b3d57f0768d7223
https://github.com/zopefoundation/mongopersist/commit/0fe1d907202b67a74867cbe58b3d57f0768d7223
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2012-04-13 (Fri, 13 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
vb
Commit: 31b957f742257f01dee36c49469061e1984af84a
https://github.com/zopefoundation/mongopersist/commit/31b957f742257f01dee36c49469061e1984af84a
Author: Andrey Lebedev <andrey at lebedev.lt>
Date: 2012-04-19 (Thu, 19 Apr 2012)
Changed paths:
M src/mongopersist/zope/container.py
Log Message:
-----------
Bug: avoid caching MongoDataManager instances in mongo container to avoid
multiple MongoDataManagers in the single transaction in multithreaded
environment. Cache IMongoDataManagerProvider instead.
Commit: e3c24dda16e02c4d1700b35b1443403935a79e2f
https://github.com/zopefoundation/mongopersist/commit/e3c24dda16e02c4d1700b35b1443403935a79e2f
Author: Andrey Lebedev <andrey at lebedev.lt>
Date: 2012-04-19 (Thu, 19 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Prepare for release
Commit: 1e52d0887338bc02929b72fbae9c8e4263523847
https://github.com/zopefoundation/mongopersist/commit/1e52d0887338bc02929b72fbae9c8e4263523847
Author: Andrey Lebedev <andrey at lebedev.lt>
Date: 2012-04-19 (Thu, 19 Apr 2012)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development
Commit: 75c0d3cbaf7e96ea14b5cd7cd4facec538236bf9
https://github.com/zopefoundation/mongopersist/commit/75c0d3cbaf7e96ea14b5cd7cd4facec538236bf9
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-01-29 (Tue, 29 Jan 2013)
Changed paths:
M CHANGES.txt
M buildout.cfg
M src/mongopersist/interfaces.py
M src/mongopersist/mapping.py
M src/mongopersist/serialize.py
M src/mongopersist/tests/test_datamanager.py
M src/mongopersist/tests/test_mapping.py
M src/mongopersist/tests/test_serialize.py
M src/mongopersist/zope/container.py
M versions.cfg
Log Message:
-----------
- update to latest package versions
biggest change: ``pymongo`` does not reexport ``objectid`` and ``dbref``
Commit: c8f614f3bea7bbcafc16171797c226101f298974
https://github.com/zopefoundation/mongopersist/commit/c8f614f3bea7bbcafc16171797c226101f298974
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-01-29 (Tue, 29 Jan 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Preparing release 0.7.3
Commit: 8d197e2487e0d9fc582c37618bc4ad8300f11f68
https://github.com/zopefoundation/mongopersist/commit/8d197e2487e0d9fc582c37618bc4ad8300f11f68
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-01-29 (Tue, 29 Jan 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.7.4
Commit: b9108980f5bb2864514a1af2202e5f099044bd53
https://github.com/zopefoundation/mongopersist/commit/b9108980f5bb2864514a1af2202e5f099044bd53
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-05 (Tue, 05 Feb 2013)
Changed paths:
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
having a container in a container breaks, or I miss something
Commit: 67a9e5fa61c5b33e7f5ccf74fdccb6e0c029f193
https://github.com/zopefoundation/mongopersist/commit/67a9e5fa61c5b33e7f5ccf74fdccb6e0c029f193
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-05 (Tue, 05 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
Bug: Due to ``UserDict`` implementing ``dict`` comparison semantics, any
empty ``MongoContainer`` would equate to another empty one. This behavior
would cause object changes to not be properly recognzed by the mongo data
manager. The implemented solution is to implement default object comparison
behavior for mongo containers.
Get ready for release.
Commit: 97e17999fcb574c4a50de5ac51253e6bd1ac7514
https://github.com/zopefoundation/mongopersist/commit/97e17999fcb574c4a50de5ac51253e6bd1ac7514
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-05 (Tue, 05 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
vb
Commit: 74d8d281c6eb98c9d930f8f0e03cfd9f687aa07b
https://github.com/zopefoundation/mongopersist/commit/74d8d281c6eb98c9d930f8f0e03cfd9f687aa07b
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-06 (Wed, 06 Feb 2013)
Changed paths:
M CHANGES.txt
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Added, cleaned tests
- Re-release after missing files in 0.7.4
Commit: 1d3e1d46a3a164935ac8c497e1596c9e2ce617a5
https://github.com/zopefoundation/mongopersist/commit/1d3e1d46a3a164935ac8c497e1596c9e2ce617a5
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-06 (Wed, 06 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Preparing release 0.7.5
Commit: 5569100537c44960b5242b18db9e709380c53ec3
https://github.com/zopefoundation/mongopersist/commit/5569100537c44960b5242b18db9e709380c53ec3
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-06 (Wed, 06 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.7.6
Commit: b5d8d01116fe8a3abca46d7c6ccb66586af589fa
https://github.com/zopefoundation/mongopersist/commit/b5d8d01116fe8a3abca46d7c6ccb66586af589fa
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M src/mongopersist/pool.py
Log Message:
-----------
- Switch to pymongo.MongoClient, set default write concern values,
allow override of write concern values
Commit: b67be9b436e1eaf1138e4688033adf2551f919e2
https://github.com/zopefoundation/mongopersist/commit/b67be9b436e1eaf1138e4688033adf2551f919e2
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Preparing release 0.7.6
Commit: 7aaf2276447e90e25636a39f219e7e7d1482b9e1
https://github.com/zopefoundation/mongopersist/commit/7aaf2276447e90e25636a39f219e7e7d1482b9e1
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.7.7
Commit: 609b2d09651f478ede2745a4cfce8ab1f2e271a7
https://github.com/zopefoundation/mongopersist/commit/609b2d09651f478ede2745a4cfce8ab1f2e271a7
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M src/mongopersist/zope/container.py
Log Message:
-----------
Bug: Do not fail if we cannot delete the parent and name attributes.
Commit: e478969d95a1ea686194f1ef9b0887330dd272c8
https://github.com/zopefoundation/mongopersist/commit/e478969d95a1ea686194f1ef9b0887330dd272c8
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
A MANIFEST.in
M setup.py
Log Message:
-----------
Preparing release 0.7.7
Commit: 2a1e56ec2bd1f13a9b2cfe273c9cd7e8ada0ed1f
https://github.com/zopefoundation/mongopersist/commit/2a1e56ec2bd1f13a9b2cfe273c9cd7e8ada0ed1f
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.7.8
Commit: 0a211f589c5ed801e0254436ea7fa8228c9b6650
https://github.com/zopefoundation/mongopersist/commit/0a211f589c5ed801e0254436ea7fa8228c9b6650
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
M src/mongopersist/datamanager.py
M src/mongopersist/serialize.py
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
- Feature: Added ``find_objects()`` and ``find_one_object()``to the collection
wrapper, so that whenever you get a collection from the data manager, you
can load objects directly through the find API.
- Feature: Added the ability for MongoContained objects to fully reference and
load their parents. This allows one to query mongo directly and create the
object from the doc without going through the right container, which you
might not know easily
Commit: 7162a7dd6e43b3d922ac7edb51b2ca7206e81cfe
https://github.com/zopefoundation/mongopersist/commit/7162a7dd6e43b3d922ac7edb51b2ca7206e81cfe
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Preparing release 0.8.0
Commit: 24e3c7d3e072ded26f2c94900755b079fc834c2e
https://github.com/zopefoundation/mongopersist/commit/24e3c7d3e072ded26f2c94900755b079fc834c2e
Author: Stephan Richter <stephan.richter at gmail.com>
Date: 2013-02-08 (Fri, 08 Feb 2013)
Changed paths:
M CHANGES.txt
M setup.py
Log Message:
-----------
Back to development: 0.8.1
Commit: 7a2665b59946c214515c12e9d2760db8c6b51a79
https://github.com/zopefoundation/mongopersist/commit/7a2665b59946c214515c12e9d2760db8c6b51a79
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-03-05 (Tue, 05 Mar 2013)
Changed paths:
M src/mongopersist/README.txt
M src/mongopersist/conflict.py
M src/mongopersist/datamanager.py
M src/mongopersist/pool.py
M src/mongopersist/pymongo.py
M src/mongopersist/serialize.py
M src/mongopersist/zope/interfaces.py
Log Message:
-----------
pep8, typos, minor whatnots
Commit: d0588ede03c4dc3b045ba2e987a410a84a399f27
https://github.com/zopefoundation/mongopersist/commit/d0588ede03c4dc3b045ba2e987a410a84a399f27
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-03-05 (Tue, 05 Mar 2013)
Changed paths:
M src/mongopersist/performance.py
Log Message:
-----------
print ops/second, added cache performance testing
Commit: 7cbf4b8914bd857f40db0cead27298aded90b5fe
https://github.com/zopefoundation/mongopersist/commit/7cbf4b8914bd857f40db0cead27298aded90b5fe
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-03-05 (Tue, 05 Mar 2013)
Changed paths:
M bootstrap.py
Log Message:
-----------
buildout 1.x bootstrap
Commit: 88e24dbd8af109dd0c80f693f85237a9bae2d4fc
https://github.com/zopefoundation/mongopersist/commit/88e24dbd8af109dd0c80f693f85237a9bae2d4fc
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-03-05 (Tue, 05 Mar 2013)
Changed paths:
M src/mongopersist/performance.py
Log Message:
-----------
more caching tests
Commit: b813b6aab5b61f0d49727709d71f7d9b7a628c78
https://github.com/zopefoundation/mongopersist/commit/b813b6aab5b61f0d49727709d71f7d9b7a628c78
Author: Adam Groszer <agroszer at mail.com>
Date: 2013-03-05 (Tue, 05 Mar 2013)
Changed paths:
M src/mongopersist/zope/container.py
M src/mongopersist/zope/tests/test_container.py
Log Message:
-----------
added test to check _p_changed setting on load, fixed _v_name setting in _locate
Compare: https://github.com/zopefoundation/mongopersist/compare/14188199f919^...b813b6aab5b6
More information about the checkins
mailing list