Hi Kamen,
I commited a workaround that fixes the problem. It has only been quickly tested by me and I cannot promise much.
Note that my BKNR based projects are currently in maintenance mode and I cannot promise to fix all bugs. I will try my best, but for example this present case would require a deeper analysis to see what really goes wrong. It would be great if you could try the fix and let me know if it works for you or if it creates new problems.
The bad thing about this fix is that it may obscure other bugs, as a condition that should not normally occur is now handled as a normal case (i.e. a lower layer returns NIL and if so, the function just does nothing).
Cheers, Hans
On 9/15/06, Kamen TOMOV kamen@cybuild.com wrote:
Hi,
I have the following problem with bknr-datastore:
(define-persistent-class a () ())
(define-persistent-class b () ())
(define-persistent-class c (a) ())
(define-persistent-class d (a b) ())
(delete-object (make-object 'a)) => T
(delete-object (make-object 'c)) => T
(delete-object (make-object 'd)) =>
Type-error in KERNEL::OBJECT-NOT-SIMPLE-VECTOR-ERROR-HANDLER: NIL is not of type SIMPLE-VECTOR [Condition of type TYPE-ERROR]
Restarts: 0: [RETRY-TRANSACTION] Retry the transaction #<TRANSACTION 15.09.2006 15:37:18 TX-DELETE-OBJECT 75>. 1: [ABORT-REQUEST] Abort handling SLIME request. 2: [ABORT] Return to Top-Level.
Backtrace: 0: ((METHOD BKNR.SKIP-LIST:SKIP-LIST-DELETE NIL (BKNR.SKIP-LIST:SKIP-LIST T)) (#(2) . #(#)) #<unused-arg> #<BKNR.SKIP-LIST:SKIP-LIST length = 15 {5A483CDD}> 75) 1: ((METHOD INDEX-REMOVE NIL (CLASS-SKIP-INDEX T)) (#(2 0 1) . #()) #<unused-arg> #<CLASS-SKIP-INDEX {5A42962D}> #<D ID: 75>) 2: ((METHOD BKNR.INDICES::DESTROY-OBJECT-WITH-CLASS NIL (INDEXED-CLASS T)) (#(17) . #()) #<unused-arg> #<PERSISTENT-CLASS D {58E9228D}> #<D ID: 75>) 3: ("DEFMETHOD EXECUTE-UNLOGGED (TRANSACTION)") 4: ("DEFCLASS MP-STORE" #<Closure Over Function "DEFMETHOD EXECUTE-UNLOGGED (TRANSACTION)" {58EB87C1}>) 5: ((METHOD BKNR.DATASTORE::EXECUTE-UNLOGGED (:AROUND) (TRANSACTION)) #<unused-arg> #S(PCL::FAST-METHOD-CALL :FUNCTION #<Closure Over Function "LAMBDA (#:G4209 #:G4210 #:G4211)" {5819E5D9}> :PV-CELL NIL :NEXT-METHOD-CALL NIL :ARG-INFO (1)) #<TRANSACTION 15.09.2006 15:37:18 TX-DELETE-OBJECT 75>) 6: ("DEFMETHOD EXECUTE-TRANSACTION (STORE TRANSACTION)") 7: ("DEFCLASS MP-STORE" #<Closure Over Function "DEFMETHOD EXECUTE-TRANSACTION (STORE TRANSACTION)" {58EB8749}>) 8: ((METHOD BKNR.DATASTORE::EXECUTE-TRANSACTION NIL (STORE TRANSACTION)) (#(0) . #(#)) #<#1=unused-arg> #<#1#> #<TRANSACTION 15.09.2006 15:37:18 TX-DELETE-OBJECT 75>)
I'm using the latest bknr and CMUCL 19a-release-20040728 . Here is how the store is defined:
(make-instance 'mp-store :directory "/tmp/ams-object-store/" :subsystems (list (make-instance 'store-object-subsystem))
Could please advice? Thanks!
-- Kamen TOMOV _______________________________________________ bknr-devel mailing list bknr-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/bknr-devel