[Xapian-discuss] Re: Search::Xapian::WritableDatabase SIGABRT?

Eric Parusel eparusel at creativens.com
Wed Dec 8 08:48:58 GMT 2004


Olly Betts wrote:
> Or you could use quartzcompact to copy them.  That's much faster than
> copydatabase (it copies at the Btree level rather than document by
> document), but you end up with a database with full compaction which
> means that updates will be slower for a while as every updated block
> will need to be split.

Hmm, I tried quartzcompact twice, and both times it seemingly is paused 
or stopped at the same point? (destination db at 612M of content)

# du -sh t-2004*
4.5G    t-2004
612M    t-2004-compact2
612M    t-2004-compact

root     25128 75.4  0.2  4436 2080 pts/2    RN   00:00  23:48 
quartzcompact t-2004 t-compact2

It's been running for 20 minutes so far (99% cpu) without a change in 
destination db size...  is this normal?   I have killed it, but would
it have continued writing if I had left it for longer? (Xeon 2.8Ghz)

Uh oh...
------snip------
#dmesg
...
megaraid: aborting-1770320103 cmd=2a <c=0 t=0 l=0>
megaraid: abort sequence successfully completed.
megaraid: aborting-1770320104 cmd=2a <c=0 t=0 l=0>
megaraid: abort sequence successfully completed.
megaraid: aborting-1770320105 cmd=2a <c=0 t=0 l=0>
megaraid: abort sequence successfully completed.
megaraid: reset-1770320061 cmd=28 <c=0 t=0 l=0>
megaraid: reservation reset failed.
megaraid: reset sequence successfully completed.
------snip------
Not sure on the timing of these messages. (
Judging by the fact that my array is now set as degraded doesn't sit 
well with me in terms of data corruption.
I forced the failed disk to Online and am now performing a consistency
check (and a fsck after that)...
This may be a source of corruption potentially.

Fortunately if required I can rebuild all xapian db's from the original 
data source.


>>As for the Perl bindings not returning the exception, what can I do to 
>>get Perl to not kick the bucket in these cases?
> 
> I've had a quick look.  I added a new testcase which tries to open
> the same database for writing twice, and checks it got an exception
> the second time.  And this works for me!
> 
> So I don't know why you're getting SIGABRT.  I've attached the testcase
> - just stick it in Search-Xapian-0.8.3.1/t with the other ".t" files and
> run "make test" in Search-Xapian-0.8.3.1 to run all the tests.

Output:
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib 
-I/usr/lib/perl/5.6.1 -I/usr/share/perl/5.6.1 -e 'use Test::Harness 
qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/create.......ok
t/document.....ok
t/exception....dubious
         Test returned status 0 (wstat 6, 0x6)
DIED. FAILED test 4
         Failed 1/4 tests, 75.00% okay
t/index........dubious
         Test returned status 0 (wstat 6, 0x6)
DIED. FAILED tests 21-40
         Failed 20/40 tests, 50.00% okay
t/parser.......ok
t/search.......ok 24/72#     Failed test (t/search.t at line 62)
t/search.......NOK 47#          got: '0'
#     expected: '2'
t/search.......dubious
         Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 47, 52-72
         Failed 22/72 tests, 69.44% okay
t/tied.........Can't call method "get_docid" on an undefined value at 
t/tied.t line 31.
t/tied.........dubious
         Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-6
         Failed 6/6 tests, 0.00% okay
Failed Test   Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/exception.t    0     6     4    2  50.00%  4
t/index.t        0     6    40   40 100.00%  21-40
t/search.t       0    11    72   43  59.72%  47 52-72
t/tied.t         2   512     6   10 166.67%  1-6
Failed 4/7 test scripts, 42.86% okay. 49/147 subtests failed, 66.67% okay.
make: *** [test_dynamic] Error 11
#

Hmm.  not good.
Without exception.t in /t all tests succeed.

Thanks,
Eric




More information about the Xapian-discuss mailing list