[elephant-devel] Patch for the migration issue in 1.0 Alpha2

Ian Eslick eslick at media.mit.edu
Fri Feb 13 15:13:37 UTC 2009


Sounds right!  Pushed.  -Ian

On Feb 12, 2009, at 6:21 AM, quan hu wrote:

> 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
>
>
>
>      <migration-fix- 
> for-1.0A2.patch>_______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel





More information about the elephant-devel mailing list