[elephant-devel] DB migration issue

Ian Eslick eslick at media.mit.edu
Mon Dec 29 13:37:25 UTC 2008


That would be elephant-unstable

Sent from my iPhone

On Dec 29, 2008, at 7:36 AM, Ian Eslick <eslick at media.mit.edu> wrote:

> Hi Quan,
>
> Can you try the latest darcs with BDB 4.6 or 4.7?  I made some changes
> to migration, but I can't recall if they were in the latest darcs or
> not - I think the latest darcs doesn't play well with BDB 4.5 so
> please make sure you can reproduce under the above configuration if
> you can.
>
> Thank you,
> Ian
>
> On Dec 29, 2008, at 3:40 AM, quan hu wrote:
>
>> Hello,
>>
>>     I run into a problem when doing the garbage collection via data
>> migration.
>>     The environment is elephant 0.9.1 and BDB 4.5.  I also tried
>> the latest elephant in darc and get the same result.
>>
>>     1.  Test case to reproduce the problem.
>>
>>           (defpclass user-profile()
>>             ((id :initform nil :index t)
>>             (sms-inbox  :initform (make-pset))))
>>
>>            ;; Create a new db for test purpose
>>           (setf *migrate-src* (open-store '(:bdb "/tmp/db/src/")))
>>           (setf *test-obj* (make-instance 'user-profile :sc
>> *migrate-src*))
>>            (insert-item 'foo (slot-value *test-obj* 'sms-inbox))
>>            (setf *migrate-dst* (open-store '(:bdb "/tmp/db/dst/")))
>>
>>          TEST> (migrate *migrate-dst* *migrate-src*)
>>              Migrating class indexes for: USER-PROFILE
>>           ; => Input get blocked, not response anymore
>>
>>       2.  Using "db_stat -C A" get following output:
>>             1    Lock requests not available due to conflicts, for
>> which we waited
>>
>>       3.  I do some debug work and found the problem may be caused
>> by nested transaction of different store controller.
>>            I can reproduce the issue with following code segment
>>
>>          TEST> (ensure-transaction (:store-controller *migrate-dst*)
>>                            (add-to-root 'foo 'foo :sc *migrate-dst*)
>>                            (ensure-transaction (:store-controller
>> *migrate-src*)
>>                                 (add-to-root 'bar 'bar :sc *migrate-
>> dst*)))
>>
>>             This kind of nested transaction scenario can appear in
>> the migrate process, because it uses source/destination store
>> controller at the same time.
>>
>>            I do not understand why different store controller's
>> transaction can result in the lock conflict and want to know how to
>> fix it.
>>
>>            Is there anyone meet the similar problem before?
>>
>> Thanks
>> Quan
>>
>>
>>
>>
>>
>> _______________________________________________
>> elephant-devel site list
>> elephant-devel at common-lisp.net
>> http://common-lisp.net/mailman/listinfo/elephant-devel
>
>
> _______________________________________________
> 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