RE: [bdbxml] disappearing default index

"Vries, Willem de (ELS)" <W.Vries-dUsxN/C1/[email protected]> Mon, 26 Sep 2005 14:58:21 +0100
Newsgroups gmane.comp.db.dbxml.general
Message-ID <D3E7986165D790478082E01DAD5DC3690780C062@elsamss31748.elsevier.com>
John,
Looks like the indexer crashes on xml files with a complex xml structure
(lot of different tagging). They are valid and well-formed and appr. 100 Kb.
in size.
Large files (5-9 Mb) with a lot of same-name tagging seem to go OK.
Any suggestions how to get more log info on the problem? 


You have an error in your database - usually due to a crashed 
application, or not deleting DB XML objects correctly. You can either 
recreate your database, or if you need to recover the data from it, 
follow the instructions on this page:

http://www.sleepycat.com/docs/ref/transapp/recovery.html

John

Vries, Willem de (ELS) wrote:
> Thanks John,
> I tried both your examples, but they generate the following error:
> First a lot of these lines: 
> "Indexer    - test0 - add edge-element-substring-string, key={Size=c
> Hex=8b61000000090000006d6531}, data={Size=2 Hex=0008}"
> 
> and finally (error):
> "Container  - test0 - container closed.
> Error: DbTxn::abort: DB_RUNRECOVERY: Fatal error, run database recovery in
> setDefaultIndex.pl, line 9"
> 
> BTW: there is no difference whether I do use "$containerTxn->commit();" or
> not use it.
> 
> ------------------script
> use strict;
> use warnings;
> use Sleepycat::DbXml;
> use IO::File ;
>     eval {
> my $env = new DbEnv(0);
> $env->set_cachesize(0, 64 * 1024, 1);
> $env->open("/usr/local/dbxml-2.1.8/data",
>  
>
Db::DB_INIT_MPOOL|Db::DB_CREATE|Db::DB_INIT_LOCK|Db::DB_INIT_LOG|Db::DB_INIT
> _TXN);
> my $mgr = new XmlManager($env);
> DbXml::setLogLevel(DbXml::LEVEL_ALL, 1);
> DbXml::setLogCategory(DbXml::CATEGORY_ALL, 1);
> my $containerTxn = $mgr->createTransaction();
> my $container = $mgr->openContainer($containerTxn,"test0");
> my $ix = $container->getIndexSpecification($containerTxn);
> $ix->addDefaultIndex("edge-element-substring-string");
> my $uc = $mgr->createUpdateContext();
> $container->setIndexSpecification($containerTxn, $ix,$uc);
> $containerTxn->commit();
> } ;
>     if (my $e = catch std::exception)
>     {
>         warn $e->what() . "\n";
>         exit( -1 );
>     }
>     elsif ($@)
>     {
>         warn $@;
>         exit( -1 );
>     }
>     exit 0 ;
> /---------------------script
> 
> 
> With kind regards, 
> 
> W(im) S. de Vries LL M
> Information Structure Technologist
> Electronic Production Department
> Elsevier Science NL
> tel. (+31) 20 4852733
> fax  (+31) 20 4852812
> 
> Radarweg 29
> 1043 NX Amsterdam
> The Netherlands 
> 
> 
> 
> -----Original Message-----
> From: John Snelson [mailto:[email protected]]
> Sent: 26 September 2005 12:13
> To: Vries, Willem de (ELS)
> Cc: '[email protected]'
> Subject: Re: [bdbxml] disappearing default index
> 
> 
> Vries, Willem de (ELS) wrote:
> 
>>my $ix = $container->getIndexSpecification($containerTxn);
>>$ix->addDefaultIndex("edge-element-substring-string");
>>my $uc = $mgr->createUpdateContext();
>>$container->addDefaultIndex($containerTxn, $ix,$uc);
> 
> 
> This is your problem. You either need to use 
> XmlContainer::setIndexSpecification() or XmlContainer::addDefaultIndex() 
> - not both! Try this:
> 
> my $ix = $container->getIndexSpecification($containerTxn);
> $ix->addDefaultIndex("edge-element-substring-string");
> my $uc = $mgr->createUpdateContext();
> $container->setIndexSpecification($containerTxn, $ix,$uc);
> 
> or this:
> 
> my $uc = $mgr->createUpdateContext();
> $container->addDefaultIndex($containerTxn, 
> "edge-element-substring-string", $uc);
> 
> John
> 


-- 
John Snelson, Berkeley DB XML Engineer
Sleepycat Software, Inc
http://www.sleepycat.com

Contracted to Sleepycat through Parthenon Computing Ltd
http://blog.parthcomp.com/dbxml


------------------------------------------
To remove yourself from this list, send an
email to [email protected]