[elephant-devel] Re: Test of 0.9 on LispWorks 5.0 (64-bit) for Linux

Ian Eslick eslick at csail.mit.edu
Tue Jun 26 15:34:13 UTC 2007


Sorry for the delay, I'm under pressure for some other work.

What is happening is that you aren't getting a proper value back from  
the index.  Can you do a (elephant::dump-btree index1) after running  
the regression suite?

Ian


On Jun 12, 2007, at 1:13 PM, Chun Tian (binghe) wrote:

> Sorry, I was wrong.
>
> I check some code, and found these test need a non-nil
> *store-controller*, that's why you ask me (open-store *testbdb- 
> spec* first.
>
> Now I can show the real reason (I think):
>
> ELE-TESTS 28 > *store-controller*
> NIL
>
> ELE-TESTS 29 > (open-store *testbdb-spec*)
> #<BDB-STORE-CONTROLLER /tmp/testdb/>
>
> ELE-TESTS 30 > *store-controller*
> #<BDB-STORE-CONTROLLER /tmp/testdb/>
>
> ELE-TESTS 31 > (with-transaction (:store-controller *store- 
> controller*)
>       (with-btree-cursor (c index1)
>     (multiple-value-bind (has k v)
>         (cursor-set-range c 199.5)
>       (declare (ignore has k))
>       (= (slot1 v) 200))))
>
> Error: No applicable methods for #<STANDARD-GENERIC-FUNCTION SLOT1
> 41000535A4> with args (NIL)
>   1 (continue) Call #<STANDARD-GENERIC-FUNCTION SLOT1 41000535A4>  
> again
>   2 (abort) Return to level 0.
>   3 Return to top loop level 0.
>
> Type :b for backtrace, :c <option number> to proceed,  or :? for other
> options
>
> ELE-TESTS 32 : 1 > :B
> Call to ERROR
> Call to CERROR
> Call to (METHOD NO-APPLICABLE-METHOD (T))
> Call to CLOS::GENERIC-FUNCTION-NON-DISCRIMINATOR
> Call to (METHOD ELEPHANT::EXECUTE-TRANSACTION
> (DB-BDB::BDB-STORE-CONTROLLER T))
> Call to FUNCALL
> Call to LET
> Call to EVAL
> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION
> MP::INITIALIZE-PROCESS-STACK)
>
>
> Chun Tian (binghe) wrote:
>> Ian Eslick <eslick at csail.mit.edu> writes:
>>
>>
>>> Sorry about that last test.  A better way to do it is to set
>>> regression-test::*catch-errors* to nil, then run the full regress
>>> test.  That will be informative.
>>>
>>> Thank you,
>>> Ian
>>>
>>
>> Hi, Ian
>>
>> Can't run the full regress test when set regression-test::*catch- 
>> errors*
>> to nil, it will halt on first failure test.
>>
>> But I think I know what's your meaning, set regression- 
>> test::*catch-errors*
>> to nil can show the real error message and got a full backtrace:
>>
>> ELE-TESTS 15 > (do-test 'set-range)
>>
>> Error: No applicable methods for #<STANDARD-GENERIC-FUNCTION  
>> ELEPHANT::EXECUTE-TRANSACTION 410003059C> with args (NIL  
>> #<anonymous interpreted function 401003A8F4> :PARENT NIL :RETRIES  
>> 200)
>>   1 (continue) Call #<STANDARD-GENERIC-FUNCTION ELEPHANT::EXECUTE- 
>> TRANSACTION 410003059C> again
>>   2 (abort) Return to level 0.
>>   3 Return to top loop level 0.
>>
>> Type :b for backtrace, :c <option number> to proceed,  or :? for  
>> other options
>>
>> ELE-TESTS 16 : 1 > :b
>> Call to ERROR
>> Call to CERROR
>> Call to (METHOD NO-APPLICABLE-METHOD (T))
>> Call to CLOS::GENERIC-FUNCTION-NON-DISCRIMINATOR
>> Call to CLOS::APPLY-NO-APPLICABLE-METHOD
>> Call to FUNCALL
>> Call to LET
>> Call to EVAL
>> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION REGRESSION-TEST::%DO  
>> REGRESSION-TEST::DO-ENTRY)
>> Call to REGRESSION-TEST::DO-ENTRY
>> Call to EVAL
>> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
>> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
>> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION  
>> MP::INITIALIZE-PROCESS-STACK)
>>
>> ELE-TESTS 21 > (do-test 'PGET-BOTH-RANGE)
>>
>> Error: The error 'MAKE-INSTANCE is called with keyword :FORMAT- 
>> CONTROL among the arguments (CONTROLLER-LOST-ERROR :FORMAT-CONTROL  
>> "Store controller for specification ~A for object ~A cannot be  
>> found." :FORMAT-ARGUMENTS (# #) :OBJECT #<BDB-BTREE-INDEX oid: 
>> 25> :SPEC (:BDB "/tmp/testdb/")) which is not one of  
>> (:SPEC :OBJECT).'
>> was raised while coercing (CONTROLLER-LOST-ERROR :FORMAT-CONTROL  
>> "Store controller for specification ~A for object ~A cannot be  
>> found." :FORMAT-ARGUMENTS (#<BDB-BTREE-INDEX oid:25> (:BDB "/tmp/ 
>> testdb/")) :OBJECT #<BDB-BTREE-INDEX oid:25> :SPEC (:BDB "/tmp/ 
>> testdb/")) to a condition.
>>   1 (continue) Open a new instance and continue?
>>   2 (abort) Return to level 0.
>>   3 Return to top loop level 0.
>>
>> Type :b for backtrace, :c <option number> to proceed,  or :? for  
>> other options
>>
>> ELE-TESTS 22 : 1 > :b
>> Call to ERROR
>> Call to CERROR
>> Call to ELEPHANT::SIGNAL-CONTROLLER-LOST-ERROR
>> Call to (METHOD ELEPHANT::GET-CON (PERSISTENT))
>> Call to (METHOD MAKE-CURSOR (DB-BDB::BDB-BTREE-INDEX))
>> Call to LET
>> Call to EVAL
>> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION REGRESSION-TEST::%DO  
>> REGRESSION-TEST::DO-ENTRY)
>> Call to REGRESSION-TEST::DO-ENTRY
>> Call to EVAL
>> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
>> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
>> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION  
>> MP::INITIALIZE-PROCESS-STACK)
>>
>> ELE-TESTS 25 > (do-test 'PCURSOR)
>> Test PCURSOR failed
>> Form: (WITH-BTREE-CURSOR (C INDEX3)
>>         (VALUES (PCURSOR-PKEY (CURSOR-PFIRST C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT-NODUP C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT-DUP C))
>>                 (PCURSOR-PKEY (CURSOR-PPREV C))
>>                 (PCURSOR-PKEY (CURSOR-PPREV-NODUP C))
>>                 (PCURSOR-PKEY (CURSOR-PLAST C))
>>                 (PCURSOR-PKEY (CURSOR-PSET C 300))
>>                 (PCURSOR-PKEY (CURSOR-PSET-RANGE C 199.5))
>>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH C 10 101))
>>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH-RANGE C 11 111.4))))
>> Expected values: 0
>>                  2
>>                  10
>>                  11
>>                  10
>>                  9
>>                  9999
>>                  3000
>>                  2000
>>                  101
>>                  112
>> Actual values: 0
>>                2
>>                10
>>                11
>>                10
>>                9
>>                9999
>>                3000
>>                NIL
>>                101
>>                NIL.
>> NIL
>>
>> ELE-TESTS 27 > (do-test 'PCURSOR2)
>> Test PCURSOR2 failed
>> Form: (WITH-BTREE-CURSOR (C INDEX4)
>>         (VALUES (PCURSOR-PKEY (CURSOR-PFIRST C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT-NODUP C))
>>                 (PCURSOR-PKEY (CURSOR-PNEXT-DUP C))
>>                 (PCURSOR-PKEY (CURSOR-PPREV C))
>>                 (PCURSOR-PKEY (CURSOR-PPREV-NODUP C))
>>                 (PCURSOR-PKEY (CURSOR-PLAST C))
>>                 (PCURSOR-PKEY (CURSOR-PSET C 300))
>>                 (PCURSOR-PKEY (CURSOR-PSET-RANGE C 199.5))
>>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH C 10 101))
>>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH-RANGE C 11 111.4))))
>> Expected values: 0
>>                  2
>>                  10
>>                  11
>>                  10
>>                  9
>>                  9999
>>                  3000
>>                  2000
>>                  101
>>                  112
>> Actual values: 0
>>                2
>>                10
>>                11
>>                10
>>                9
>>                9999
>>                3000
>>                NIL
>>                101
>>                NIL.
>> NIL
>>
>> Seems the last two test has no error reported, just wrong answer.
>>
>> Is this informative?
>>
>> Thanks.
>>
>> Chun Tian (binghe)
>>
>>
>>> On Jun 12, 2007, at 12:35 PM, Chun Tian (binghe) wrote:
>>>
>>>
>>>> Ian Eslick <eslick at csail.mit.edu> writes:
>>>>
>>>>
>>>>> Chun Tian,
>>>>>
>>>>> Were you able to run the tests on PostgreSQL as well?  Did they  
>>>>> show
>>>>> similar failures?
>>>>>
>>>> No. On PostgreSQL, only INDEXING-TIMING failes: (but this test is
>>>> much slower than bdb)
>>>>
>>>> Test INDEXING-TIMING failed
>>>> Form: (PROGN
>>>>         (MAKE-STRESS-CLASSES)
>>>>         (LET ((INSTS (GET-INSTANCES-BY-CLASS 'STRESS-INDEX))
>>>>               (START NIL)
>>>>               (END NIL)
>>>>               (NORMAL-CHECK NIL)
>>>>               (INDEX-CHECK NIL)
>>>>               (NORMAL-TIME 0)
>>>>               (INDEX-TIME 0))
>>>>           (WHEN INSTS (DROP-INSTANCES INSTS :SC *STORE- 
>>>> CONTROLLER*))
>>>>           (WITH-TRANSACTION NIL
>>>>             (NORMAL-STRESS-SETUP *STRESS-COUNT* 'STRESS-
>>>> NORMAL :STRESS2 10))
>>>>           (WITH-TRANSACTION NIL
>>>>             (INDEXED-STRESS-SETUP *STRESS-COUNT* 'STRESS-
>>>> INDEX :STRESS2 10))
>>>>           (SETF START (GET-INTERNAL-RUN-TIME))
>>>>           (SETF NORMAL-CHECK (NORMAL-LOOKUP))
>>>>           (SETF END (GET-INTERNAL-RUN-TIME))
>>>>           (SETF NORMAL-TIME (/ (- END START 0.0) INTERNAL-TIME-
>>>> UNITS-PER-SECOND))
>>>>           (SETF START (GET-INTERNAL-RUN-TIME))
>>>>           (SETF INDEX-CHECK (INDEX-LOOKUP))
>>>>           (SETF END (GET-INTERNAL-RUN-TIME))
>>>>           (SETF INDEX-TIME (/ (- END START 0.0) INTERNAL-TIME- 
>>>> UNITS-
>>>> PER-SECOND))
>>>>           (FORMAT T
>>>>                   "~%Ranged get of ~A/~A objects = Linear: ~A sec
>>>> Indexed: ~A sec~%"
>>>>                   *RANGE-SIZE*
>>>>                   *STRESS-COUNT*
>>>>                   NORMAL-TIME
>>>>                   INDEX-TIME)
>>>>           (AND (EQUAL NORMAL-CHECK INDEX-CHECK) (> NORMAL-TIME
>>>> INDEX-TIME))))
>>>> Expected value: T
>>>> Actual value: NIL.
>>>>
>>>> And I rerun the BDB test, some fails like before:
>>>>
>>>> 4 out of 132 total tests failed: SET-RANGE, PGET-BOTH-RANGE,  
>>>> PCURSOR,
>>>>    PCURSOR2.
>>>>
>>>>
>>>>
>>>>> The set range features have always been a little fragile, but  
>>>>> I'm not
>>>>> sure how 64-bits would effect it.  I can try to run Lispworks  
>>>>> 32bit
>>>>> on Linux as I think there have been some differences between Linux
>>>>> and other platforms in the past.
>>>>>
>>>>> I also noticed that the test 'SET-RANGE' failed with an error.   
>>>>> Could
>>>>> you do the following test?
>>>>>
>>>>> (setf regression-test::*catch-errors* nil)
>>>>> (open-store *testbdb-spec*)
>>>>> (do-test 'set-range)
>>>>>
>>>>> And let me know what the error is?
>>>>>
>>>> OK, but something wrong happened:
>>>>
>>>> CL-USER 1 > (clc:clc-require :elephant-tests)
>>>>
>>>> CL-USER 2 > (in-package :elephant-tests)
>>>> #<The ELEPHANT-TESTS package, 459/1024 internal, 0/16 external>
>>>>
>>>> ELE-TESTS 3 > (clc:clc-require :ele-bdb)
>>>>
>>>> ELE-TESTS 4 > *testbdb-spec*
>>>> (:BDB "/afs/163.org/user/b/binghe/lisp/elephant/tests/testdb/")
>>>>
>>>> ELE-TESTS 5 > (setf *testbdb-spec* '(:bdb "/tmp/testdb/"))
>>>> (:BDB "/tmp/testdb/")
>>>>
>>>> ELE-TESTS 6 > (setf *default-spec* *testbdb-spec*)
>>>> (:BDB "/tmp/testdb/")
>>>>
>>>> ELE-TESTS 7 > (setf regression-test::*catch-errors* nil)
>>>> NIL
>>>>
>>>> ELE-TESTS 8 > (open-store *testbdb-spec*)
>>>> #<BDB-STORE-CONTROLLER /tmp/testdb/>
>>>>
>>>> ELE-TESTS 9 > (do-test 'set-range)
>>>>
>>>> Error: The variable INDEX1 is unbound.
>>>>   1 (continue) Try evaluating INDEX1 again.
>>>>   2 Specify a value to use this time instead of evaluating INDEX1.
>>>>   3 Specify a value to set INDEX1 to.
>>>>   4 (abort) Return to level 0.
>>>>   5 Return to top loop level 0.
>>>>
>>>> Type :b for backtrace, :c <option number> to proceed,  or :? for
>>>> other options
>>>>
>>>> ELE-TESTS 10 : 1 > :c 5
>>>>
>>>> ELE-TESTS 11 >
>>>>
>>>> Sorry, cannot adjust it myself.
>>>>
>>>>
>>>>> Thank you,
>>>>> Ian
>>>>>
>>>>>
>>
>> _______________________________________________
>> 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