[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