Hello, When using the latest 1.0 codes, 0.9.1 -> 1.0 migration fails. The test environment is SBCL, BDB4.7. I can reproduce the issue in 1.0 Alpha2. The same migration test passed in 1.0 Alpha1. So, it is likely a new one in 1.0 Alpha2.
The error message "Deserialization error in map: returning nil for element" is printed when running following codes. (defun migrate-from-legacy (dst src) (map-btree (lambda (classname classidx) ...) (controller-index-table src)) The debug shows a Recursive Lock exception is triggered in follow codes (defmethod controller-recreate-instance ((sc store-controller) oid &optional classname) (ele-with-lock ((controller-instance-cache-lock sc)) (aif (get-cached-instance sc oid) it (multiple-value-bind (class schema) (get-instance-class sc oid classname) (recreate-instance-using-class class :from-oid oid :sc sc :schema schema))= In 0.9.1->1.0 migration scenaro, the controller-recreate-instance could be recursively called, one for indexed-btree, another for btree-index. The existing ele-with-lock uses sb-thread:with-mutex to setup the lock, which does not support the recursive scenario. The simple fix is to replace sb-thread:with-mutex by sb-thread:sb-thread:with-recursive-lock. The test passed. The BDB regression test suite is also executed and passed. The patch is attached. If this is not the suitable solution, please let me know. Thanks Quan
New patches: [migration-fix-for-1.0A2 ihuq...@gmail.com**20090212110735 0.9.1->1.0 alpha2 migration fails when using SBCL. It is caused by that controller-recreate-instance is recursively called in migration process. It results in a recursive call for sb-thread:with-mutex. The solution is to replace sb-thread:with-mutex by sb-thread:sb-thread:with-recursive-lock. ] { hunk ./src/utils/locks.lisp 41 - #+sbcl `(sb-thread:with-mutex (,lock) ,@body) + #+sbcl `(sb-thread:with-recursive-lock (,lock) ,@body) } Context: [SBCL: ensure that all stores are closed on exit. Leslie P. Polzer <pol...@gnu.org>**20090211084035 Ignore-this: 94be0e62949d9e9ca863aa70eec6a553 ] [Move confusing query folder from src to contrib iesl...@common-lisp.net**20090210192606] [CLP gensym test exception iesl...@common-lisp.net**20090208230446] [Warn on drop data by class redefinition iesl...@common-lisp.net**20090208230424] [Move clsql data store into contrib iesl...@common-lisp.net**20090207213032] [Promote db-clp to standard-issue DB iesl...@common-lisp.net**20090207212641] [Fix serializer bugs on re-opening of store iesl...@common-lisp.net**20090207205919] [Fix RBT empty node bug; fix lost proxy trees bug; fix serializer reopen bug; open/close store works iesl...@common-lisp.net**20090207202356] [More fixes for reopening a store iesl...@common-lisp.net**20090207183403] [Fix clp bugs; partial open-store implementation iesl...@common-lisp.net**20090207181117] [db-postmodern: cursor semantics alex.mizr...@gmail.com**20090205174924] [db-postmodern: hardened type handling alex.mizr...@gmail.com**20090205161017] [tests for mixed-type btrees alex.mizr...@gmail.com**20090205160934] [db-postmodern: btree upgrade handling, btree wrappers. WARNING: incompatible store format! alex.mizr...@gmail.com**20090205160838] [db-postmodern: dup btree value type alex.mizr...@gmail.com**20090205155335] [db-postmodern: proper transaction handling alex.mizr...@gmail.com**20090205155239] [postmodern doc update alex.mizr...@gmail.com**20090205112036] [postmodern documentation update alex.mizr...@gmail.com**20090205111642] [Better support for (:prebuilt-libraries nil) under win32/SBCL. Elliott Slaughter <elliottslaugh...@gmail.com>**20090108090553 Elephant can now build DLLs properly under win32/SBCL, even when stored in a directory whose name contains spaces, or on another drive letter. Also doesn't litter *.o files in the current directory when compiling. ] [Chun Tian's lispworks 5.1 patch iesl...@common-lisp.net**20090203165530] [Fix slot unbound test failures for CLP data store iesl...@common-lisp.net**20090203044202] [Initial db-clp implementation contrib iesl...@common-lisp.net**20090202202857] [Core elephant prep for clp iesl...@common-lisp.net**20090126023824] [Fix fixnum64 declaration bug iesl...@common-lisp.net**20090126171924] [merge conflict resolution 1-26 esl...@common-lisp.net**20090126150411] [Allegro compatabiliity 2 iesl...@common-lisp.net**20090120205655] [Allegro compatibility fixes iesl...@common-lisp.net**20090119223005] [Unify DB-LOCK structures for ccl compilation iesl...@common-lisp.net**20090119211557] [Clean up test ordering for ccl; compatible with openmcl; fix test bug iesl...@common-lisp.net**20090119160831] [Clozure CL support (2 errors left in tests) iesl...@common-lisp.net**20090118234322] [TAG ELEPHANT-1-0-A2 esl...@common-lisp.net**20090113201539] Patch bundle hash: 749dfd6c16d1614e85671cd8c25f44e21d3dcfee
_______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel