You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-users@xml.apache.org by Rohit Mathur <ro...@fnal.gov> on 2006/05/12 20:19:11 UTC

recovering potentially corrupt data

Hi,

Is there any utility out there that can recover the data from a collection.

Is it at all possible to do this at all?

One particular collection has "gone bad". The rest of the db is working 
great.
I am unable to query it or create a collection within it.

I get a null pointer exception from the data.

thanks

Rohit

java.lang.NullPointerException at 
org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
at 
org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
at 
org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
at 
org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at 
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at 
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at 
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
at java.lang.Thread.run(Thread.java:534)

Re: recovering potentially corrupt data

Posted by Todd Byrne <by...@cns.montana.edu>.
Yeah that and a timer on a 15 minute interval should help also.

Todd

Vadim Gritsenko wrote:
> Rohit Mathur wrote:
> 
>> Hi Todd,
>>
>> OK, i'll tell the users about this. They arent going to be happy.
>> But at least i can pass the buck onto you now :)
>>
>> No, seriously though, it probably was an unclean tomcat shutdown that
>> caused this.
> 
> 
> ...just a thought - adding a shutdown hook to the JVM which will flush
> dirty caches probably will reduce chance of such accident...
> 
> Vadim

Re: recovering potentially corrupt data

Posted by Vadim Gritsenko <va...@reverycodes.com>.
Rohit Mathur wrote:
> Hi Todd,
> 
> OK, i'll tell the users about this. They arent going to be happy.
> But at least i can pass the buck onto you now :)
> 
> No, seriously though, it probably was an unclean tomcat shutdown that 
> caused this.

...just a thought - adding a shutdown hook to the JVM which will flush dirty 
caches probably will reduce chance of such accident...

Vadim

Re: recovering potentially corrupt data

Posted by Rohit Mathur <ro...@fnal.gov>.
Hi Todd,

OK, i'll tell the users about this. They arent going to be happy.
But at least i can pass the buck onto you now :)

No, seriously though, it probably was an unclean tomcat shutdown that 
caused this.

thanks for all your help.

regards,

Rohit

Todd Byrne wrote:

>Thanks that helps allot but it appears you have truncated database files
>which isn't going to be recoverable. I am going to come up with a fix to
>better represent this to the user but the data in that collection is
>pretty much lost.
>
>So the way I would try to recover the rest of the data is to
>1) shutdown tomcat.
>2) Go to /software/jakarta-tomcat-5.0.30/webapps/xindice/WEB-INF/
>3) remove "db/globalJobs1/globalJobs1.tbl"
>4) startup tomcat
>5)run $XINDICE_HOME/xindice.sh export -v -c
>xmldb:xindice://localhost:8080/db -n db -f backup
>
>If you get any more errors just find the collection name and delete
>corresponding ".tbl" file.  Then just repeat the steps again until it
>runs cleanly. Take note of which files you delete or make a back up by
>copying the entire db directory somewhere else.
>
>This problem usually happens with a unclean shutdown of tomcat, power
>failure that time of thing.
>
>Hope this helps. If you have any questions let me know.
>
>Todd
>
>
>Rohit Mathur wrote:
>  
>
>>Hi Todd
>>
>>Below is the exception i see in catalina.out . However, i get this
>>exception when i try to access the globalJobs1 through the db browser on
>>my internet browser. I have been executing the export command using the
>>core xindice install (i.e. not the webapp install)
>>I think its the same error though, occurs when parsing through the
>>colleciton.
>>
>>I tried to run xindice.sh in the webapps/xindice/WEB-INF dir for
>>exporting, but couldnt get it to work.
>>
>>after setting JAVA_HOME,
>>
>>export XINDICE_HOME=/software/jakarta-tomcat-5.0.30/webapps/xindice/WEB-INF/
>>[root@mathur WEB-INF]# ./xindice.sh export -v -c 
>>xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
>>bash: ./xindice.sh: Permission denied
>>
>>and after changing permissions
>>
>>[root@mathur WEB-INF]# ./xindice.sh export -v -c 
>>xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
>>: bad interpreter: No such file or directory
>>
>>regards,
>>
>>Rohit
>>
>>hope this is good enough
>>
>>May 16, 2006 2:56:40 PM org.apache.xindice.core.filer.BTree getBTreeNode
>>WARNING: Ignored exception
>>java.io.EOFException
>>        at java.io.DataInputStream.readShort(DataInputStream.java:377)
>>        at
>>org.apache.xindice.core.filer.BTree$BTreeNode.read(BTree.java:495)
>>        at org.apache.xindice.core.filer.BTree.getBTreeNode(BTree.java:372)
>>        at org.apache.xindice.core.filer.BTree.access$800(BTree.java:71)
>>        at
>>org.apache.xindice.core.filer.BTree$BTreeNode.getChildNode(BTree.java:536)
>>        at
>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
>>        at
>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
>>        at org.apache.xindice.core.filer.BTree.query(BTree.java:221)
>>        at
>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.<init>(BTreeFiler.java:191)
>>        at
>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174)
>>        at
>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007)
>>        at
>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157)
>>        at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78)
>>        at
>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>        at
>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252
>>)
>>        at
>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>>        at
>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
>>        at
>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>        at
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>        at
>>org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
>>        at
>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
>>        at
>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>        at
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>        at
>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
>>        at
>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>        at
>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
>>        at
>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>>        at
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>        at
>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>        at
>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>        at
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>        at
>>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>        at
>>org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>>        at
>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
>>        at
>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol
>>.java:705)
>>        at
>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
>>        at
>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>>        at java.lang.Thread.run(Thread.java:534)
>>
>>Todd Byrne wrote:
>>
>>    
>>
>>>Hi Rohit,
>>>
>>>So I need you to run that export command again and send me the expection
>>>thats going to be printed in your catalina.log . It should look like :
>>>
>>>Ignored exception
>>>(stack trace)
>>>
>>>If I can get that stack trace maybe I can write up a patch and you can
>>>still recover your data.
>>>
>>>Todd
>>>
>>>Rohit Mathur wrote:
>>> 
>>>
>>>      
>>>
>>>>Hi Todd,
>>>>
>>>>sorry about that last message, since i saw the error i was expecting, i
>>>>didnt think to check the export command syntax.
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>globalJobs1 -f globalJobs1
>>>>trying to register database
>>>>
>>>>Creating directory globalJobs1/db
>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db
>>>>Creating directory globalJobs1/db/products
>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/products
>>>>...............
>>>>Creating directory globalJobs1/db/site
>>>>Extracting 1 files from xmldb:xindice://localhost:8080/db/site
>>>>Creating directory globalJobs1/db/jobs
>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>>Creating directory globalJobs1/db/jobs/globalJobs1
>>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>>java.lang.Exception: java.lang.NullPointerException
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>       .....      
>>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>       ... 8 more
>>>>[B@16df84borg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>        ....
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>
>>>>and listing the document is where i encountered the null pointer error
>>>>in the first place.
>>>>I am able to list other documents/collections in this db
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>xindice.sh ld -v -c  xmldb:xindice://localhost:8080/db/jobs/globalJobs1
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>trying to register database
>>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>>java.lang.Exception: java.lang.NullPointerException
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>       at
>>>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>       ... 5 more
>>>>[B@199f91corg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>       at
>>>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>
>>>>hope this helps/is fixable
>>>>
>>>>thanks a lot for your quick responses. i'm new to this project, and i
>>>>havent worked with xindice before so i'm all at sea here.
>>>>
>>>>Rohit
>>>>
>>>>Todd Byrne wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>I wasn't quite clear but try this:
>>>>>
>>>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>>>globalJobs1 -f globalJobs1
>>>>>
>>>>>Also try listing the documents from database and retriving them one by one.
>>>>>
>>>>>$XINDICE_HOME/bin/xindice ld -c
>>>>>xmldb:xindice://localhost:8080/db/globalJobs1
>>>>>
>>>>>Todd
>>>>>
>>>>>
>>>>>Rohit Mathur wrote:
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>Hi Todd,
>>>>>>
>>>>>>So the original db was running off an application that was a wrapper
>>>>>>around xindice, which is why i didnt want to send details.
>>>>>>I have since copied the db over to another machine where I'm running the
>>>>>>xindice 1.1b4.
>>>>>>
>>>>>>I tried what you recommended on a subset of the db (i.e. db/jobs).
>>>>>>Here is the error i get
>>>>>>
>>>>>>$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
>>>>>>test -f test
>>>>>>trying to register database
>>>>>>
>>>>>>Creating directory test/jobs
>>>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>>>>Creating directory test/jobs/globalJobs1
>>>>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>>>>java.lang.NullPointerException
>>>>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>>>>java.lang.Exception: java.lang.NullPointerException
>>>>>>      at
>>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>>>>      at
>>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>>>      at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>>>      at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>>>      at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>>>java.lang.NullPointerException
>>>>>>      at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>>>      at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>>>      at
>>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>>>      ... 7 more
>>>>>>[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>>>java.lang.NullPointerException
>>>>>>      at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>>>      at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>>>      at
>>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>>>      at
>>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>>>      at
>>>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>>>      at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>>>      at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>>>      at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>>>
>>>>>>thanks,
>>>>>>
>>>>>>Rohit
>>>>>>
>>>>>>P.S. I am able to add/remove collections from db/jobs, but not from
>>>>>>db/globalJobs1
>>>>>>
>>>>>>byrne@cns.montana.edu wrote:
>>>>>>
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>>>You could try running  xindice command line tool like this to export the 
>>>>>>>data and then reload it.
>>>>>>>
>>>>>>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>>>>>>
>>>>>>>Maybe I can work with you to narrow down where this null pointer is coming 
>>>>>>>from. Are you using the latest release?
>>>>>>>
>>>>>>>Todd
>>>>>>>
>>>>>>>
>>>>>>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>    
>>>>>>>
>>>>>>>         
>>>>>>>
>>>>>>>              
>>>>>>>
>>>>>>>>Hi,
>>>>>>>>
>>>>>>>>Is there any utility out there that can recover the data from a collection.
>>>>>>>>
>>>>>>>>Is it at all possible to do this at all?
>>>>>>>>
>>>>>>>>One particular collection has "gone bad". The rest of the db is working 
>>>>>>>>great.
>>>>>>>>I am unable to query it or create a collection within it.
>>>>>>>>
>>>>>>>>I get a null pointer exception from the data.
>>>>>>>>
>>>>>>>>thanks
>>>>>>>>
>>>>>>>>Rohit
>>>>>>>>
>>>>>>>>java.lang.NullPointerException at 
>>>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>>>>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>>>>>>at 
>>>>>>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>>>>>>at 
>>>>>>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>>>>>>at 
>>>>>>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>>>>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>>>>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>>>>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>>at 
>>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>>at 
>>>>>>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>>>>>>at 
>>>>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>>>>>>at 
>>>>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>>>>>>at 
>>>>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>>>>>>at 
>>>>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>>>>>>at java.lang.Thread.run(Thread.java:534)
>>>>>>>>
>>>>>>>> 
>>>>>>>>
>>>>>>>>      
>>>>>>>>
>>>>>>>>           
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>    
>>>>>>>
>>>>>>>         
>>>>>>>
>>>>>>>              
>>>>>>>


Re: recovering potentially corrupt data

Posted by Todd Byrne <by...@cns.montana.edu>.
Thanks that helps allot but it appears you have truncated database files
which isn't going to be recoverable. I am going to come up with a fix to
better represent this to the user but the data in that collection is
pretty much lost.

So the way I would try to recover the rest of the data is to
1) shutdown tomcat.
2) Go to /software/jakarta-tomcat-5.0.30/webapps/xindice/WEB-INF/
3) remove "db/globalJobs1/globalJobs1.tbl"
4) startup tomcat
5)run $XINDICE_HOME/xindice.sh export -v -c
xmldb:xindice://localhost:8080/db -n db -f backup

If you get any more errors just find the collection name and delete
corresponding ".tbl" file.  Then just repeat the steps again until it
runs cleanly. Take note of which files you delete or make a back up by
copying the entire db directory somewhere else.

This problem usually happens with a unclean shutdown of tomcat, power
failure that time of thing.

Hope this helps. If you have any questions let me know.

Todd


Rohit Mathur wrote:
> Hi Todd
> 
> Below is the exception i see in catalina.out . However, i get this
> exception when i try to access the globalJobs1 through the db browser on
> my internet browser. I have been executing the export command using the
> core xindice install (i.e. not the webapp install)
> I think its the same error though, occurs when parsing through the
> colleciton.
> 
> I tried to run xindice.sh in the webapps/xindice/WEB-INF dir for
> exporting, but couldnt get it to work.
> 
> after setting JAVA_HOME,
> 
> export XINDICE_HOME=/software/jakarta-tomcat-5.0.30/webapps/xindice/WEB-INF/
> [root@mathur WEB-INF]# ./xindice.sh export -v -c 
> xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
> bash: ./xindice.sh: Permission denied
> 
> and after changing permissions
> 
> [root@mathur WEB-INF]# ./xindice.sh export -v -c 
> xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
> : bad interpreter: No such file or directory
> 
> regards,
> 
> Rohit
> 
> hope this is good enough
> 
> May 16, 2006 2:56:40 PM org.apache.xindice.core.filer.BTree getBTreeNode
> WARNING: Ignored exception
> java.io.EOFException
>         at java.io.DataInputStream.readShort(DataInputStream.java:377)
>         at
> org.apache.xindice.core.filer.BTree$BTreeNode.read(BTree.java:495)
>         at org.apache.xindice.core.filer.BTree.getBTreeNode(BTree.java:372)
>         at org.apache.xindice.core.filer.BTree.access$800(BTree.java:71)
>         at
> org.apache.xindice.core.filer.BTree$BTreeNode.getChildNode(BTree.java:536)
>         at
> org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
>         at
> org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
>         at org.apache.xindice.core.filer.BTree.query(BTree.java:221)
>         at
> org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.<init>(BTreeFiler.java:191)
>         at
> org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174)
>         at
> org.apache.xindice.core.Collection.listDocuments(Collection.java:1007)
>         at
> org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157)
>         at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78)
>         at
> org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252
> )
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>         at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
>         at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol
> .java:705)
>         at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
>         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>         at java.lang.Thread.run(Thread.java:534)
> 
> Todd Byrne wrote:
> 
>>Hi Rohit,
>>
>>So I need you to run that export command again and send me the expection
>>thats going to be printed in your catalina.log . It should look like :
>>
>>Ignored exception
>>(stack trace)
>>
>>If I can get that stack trace maybe I can write up a patch and you can
>>still recover your data.
>>
>>Todd
>>
>>Rohit Mathur wrote:
>>  
>>
>>>Hi Todd,
>>>
>>>sorry about that last message, since i saw the error i was expecting, i
>>>didnt think to check the export command syntax.
>>>
>>>    
>>>
>>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>>      
>>>>
>>>globalJobs1 -f globalJobs1
>>>trying to register database
>>>
>>>Creating directory globalJobs1/db
>>>Extracting 0 files from xmldb:xindice://localhost:8080/db
>>>Creating directory globalJobs1/db/products
>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/products
>>>...............
>>>Creating directory globalJobs1/db/site
>>>Extracting 1 files from xmldb:xindice://localhost:8080/db/site
>>>Creating directory globalJobs1/db/jobs
>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>Creating directory globalJobs1/db/jobs/globalJobs1
>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>java.lang.NullPointerException
>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>java.lang.Exception: java.lang.NullPointerException
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>        .....      
>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>        ... 8 more
>>>[B@16df84borg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>         ....
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>
>>>and listing the document is where i encountered the null pointer error
>>>in the first place.
>>>I am able to list other documents/collections in this db
>>>
>>>    
>>>
>>>>xindice.sh ld -v -c  xmldb:xindice://localhost:8080/db/jobs/globalJobs1
>>>>      
>>>>
>>>trying to register database
>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>java.lang.NullPointerException
>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>java.lang.Exception: java.lang.NullPointerException
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>        at
>>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>        ... 5 more
>>>[B@199f91corg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>        at
>>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>
>>>hope this helps/is fixable
>>>
>>>thanks a lot for your quick responses. i'm new to this project, and i
>>>havent worked with xindice before so i'm all at sea here.
>>>
>>>Rohit
>>>
>>>Todd Byrne wrote:
>>>
>>>    
>>>
>>>>I wasn't quite clear but try this:
>>>>
>>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>>globalJobs1 -f globalJobs1
>>>>
>>>>Also try listing the documents from database and retriving them one by one.
>>>>
>>>>$XINDICE_HOME/bin/xindice ld -c
>>>>xmldb:xindice://localhost:8080/db/globalJobs1
>>>>
>>>>Todd
>>>>
>>>>
>>>>Rohit Mathur wrote:
>>>> 
>>>>
>>>>      
>>>>
>>>>>Hi Todd,
>>>>>
>>>>>So the original db was running off an application that was a wrapper
>>>>>around xindice, which is why i didnt want to send details.
>>>>>I have since copied the db over to another machine where I'm running the
>>>>>xindice 1.1b4.
>>>>>
>>>>>I tried what you recommended on a subset of the db (i.e. db/jobs).
>>>>>Here is the error i get
>>>>>
>>>>>$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
>>>>>test -f test
>>>>>trying to register database
>>>>>
>>>>>Creating directory test/jobs
>>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>>>Creating directory test/jobs/globalJobs1
>>>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>>>java.lang.NullPointerException
>>>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>>>java.lang.Exception: java.lang.NullPointerException
>>>>>       at
>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>>>       at
>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>>java.lang.NullPointerException
>>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>>       at
>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>>       ... 7 more
>>>>>[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>>java.lang.NullPointerException
>>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>>       at
>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>>       at
>>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>>       at
>>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>>
>>>>>thanks,
>>>>>
>>>>>Rohit
>>>>>
>>>>>P.S. I am able to add/remove collections from db/jobs, but not from
>>>>>db/globalJobs1
>>>>>
>>>>>byrne@cns.montana.edu wrote:
>>>>>
>>>>>   
>>>>>
>>>>>        
>>>>>
>>>>>>You could try running  xindice command line tool like this to export the 
>>>>>>data and then reload it.
>>>>>>
>>>>>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>>>>>
>>>>>>Maybe I can work with you to narrow down where this null pointer is coming 
>>>>>>from. Are you using the latest release?
>>>>>>
>>>>>>Todd
>>>>>>
>>>>>>
>>>>>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>     
>>>>>>
>>>>>>          
>>>>>>
>>>>>>>Hi,
>>>>>>>
>>>>>>>Is there any utility out there that can recover the data from a collection.
>>>>>>>
>>>>>>>Is it at all possible to do this at all?
>>>>>>>
>>>>>>>One particular collection has "gone bad". The rest of the db is working 
>>>>>>>great.
>>>>>>>I am unable to query it or create a collection within it.
>>>>>>>
>>>>>>>I get a null pointer exception from the data.
>>>>>>>
>>>>>>>thanks
>>>>>>>
>>>>>>>Rohit
>>>>>>>
>>>>>>>java.lang.NullPointerException at 
>>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>>>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>>>>>at 
>>>>>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>>>>>at 
>>>>>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>>>>>at 
>>>>>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>>>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>>>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>>>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>at 
>>>>>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>at 
>>>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>at 
>>>>>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>>at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>>at 
>>>>>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>>>>>at 
>>>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>>>>>at 
>>>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>>>>>at 
>>>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>>>>>at 
>>>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>>>>>at java.lang.Thread.run(Thread.java:534)
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>>       
>>>>>>>
>>>>>>>            
>>>>>>>
>>>>>>     
>>>>>>
>>>>>>          
>>>>>>
> 

Re: recovering potentially corrupt data

Posted by Georg Sauer-Limbach <gs...@gslweb.de>.
Rohit Mathur wrote:
> [root@mathur WEB-INF]# ./xindice.sh export -v -c  
> xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
> : bad interpreter: No such file or directory

This "bad interpreter" usually comes from the CR character
in the DOS-style line delimiter 0x0A, 0x0C.
Remove the CR at the end of the #!/bin/sh line and it
should work.

Georg

Re: recovering potentially corrupt data

Posted by Rohit Mathur <ro...@fnal.gov>.
Hi Todd

Below is the exception i see in catalina.out . However, i get this 
exception when i try to access the globalJobs1 through the db browser on 
my internet browser. I have been executing the export command using the 
core xindice install (i.e. not the webapp install)
I think its the same error though, occurs when parsing through the 
colleciton.

I tried to run xindice.sh in the webapps/xindice/WEB-INF dir for 
exporting, but couldnt get it to work.

after setting JAVA_HOME,

export XINDICE_HOME=/software/jakarta-tomcat-5.0.30/webapps/xindice/WEB-INF/
[root@mathur WEB-INF]# ./xindice.sh export -v -c  
xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
bash: ./xindice.sh: Permission denied

and after changing permissions

[root@mathur WEB-INF]# ./xindice.sh export -v -c  
xmldb:xindice://localhost:8080/db -n globalJobs1 -f globalJobs1
: bad interpreter: No such file or directory

regards,

Rohit

hope this is good enough

May 16, 2006 2:56:40 PM org.apache.xindice.core.filer.BTree getBTreeNode
WARNING: Ignored exception
java.io.EOFException
        at java.io.DataInputStream.readShort(DataInputStream.java:377)
        at 
org.apache.xindice.core.filer.BTree$BTreeNode.read(BTree.java:495)
        at org.apache.xindice.core.filer.BTree.getBTreeNode(BTree.java:372)
        at org.apache.xindice.core.filer.BTree.access$800(BTree.java:71)
        at 
org.apache.xindice.core.filer.BTree$BTreeNode.getChildNode(BTree.java:536)
        at 
org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
        at 
org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937)
        at org.apache.xindice.core.filer.BTree.query(BTree.java:221)
        at 
org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.<init>(BTreeFiler.java:191)
        at 
org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174)
        at 
org.apache.xindice.core.Collection.listDocuments(Collection.java:1007)
        at 
org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157)
        at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78)
        at 
org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252
)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol
.java:705)
        at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:534)

Todd Byrne wrote:

>Hi Rohit,
>
>So I need you to run that export command again and send me the expection
>thats going to be printed in your catalina.log . It should look like :
>
>Ignored exception
>(stack trace)
>
>If I can get that stack trace maybe I can write up a patch and you can
>still recover your data.
>
>Todd
>
>Rohit Mathur wrote:
>  
>
>>Hi Todd,
>>
>>sorry about that last message, since i saw the error i was expecting, i
>>didnt think to check the export command syntax.
>>
>>    
>>
>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>      
>>>
>>globalJobs1 -f globalJobs1
>>trying to register database
>>
>>Creating directory globalJobs1/db
>>Extracting 0 files from xmldb:xindice://localhost:8080/db
>>Creating directory globalJobs1/db/products
>>Extracting 0 files from xmldb:xindice://localhost:8080/db/products
>>...............
>>Creating directory globalJobs1/db/site
>>Extracting 1 files from xmldb:xindice://localhost:8080/db/site
>>Creating directory globalJobs1/db/jobs
>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>Creating directory globalJobs1/db/jobs/globalJobs1
>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>java.lang.NullPointerException
>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>java.lang.Exception: java.lang.NullPointerException
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>        .....      
>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>        ... 8 more
>>[B@16df84borg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>         ....
>>        at
>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>        at
>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>
>>and listing the document is where i encountered the null pointer error
>>in the first place.
>>I am able to list other documents/collections in this db
>>
>>    
>>
>>>xindice.sh ld -v -c  xmldb:xindice://localhost:8080/db/jobs/globalJobs1
>>>      
>>>
>>trying to register database
>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>java.lang.NullPointerException
>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>java.lang.Exception: java.lang.NullPointerException
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>        at
>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>        ... 5 more
>>[B@199f91corg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>        at
>>org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>
>>hope this helps/is fixable
>>
>>thanks a lot for your quick responses. i'm new to this project, and i
>>havent worked with xindice before so i'm all at sea here.
>>
>>Rohit
>>
>>Todd Byrne wrote:
>>
>>    
>>
>>>I wasn't quite clear but try this:
>>>
>>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>>globalJobs1 -f globalJobs1
>>>
>>>Also try listing the documents from database and retriving them one by one.
>>>
>>>$XINDICE_HOME/bin/xindice ld -c
>>>xmldb:xindice://localhost:8080/db/globalJobs1
>>>
>>>Todd
>>>
>>>
>>>Rohit Mathur wrote:
>>> 
>>>
>>>      
>>>
>>>>Hi Todd,
>>>>
>>>>So the original db was running off an application that was a wrapper
>>>>around xindice, which is why i didnt want to send details.
>>>>I have since copied the db over to another machine where I'm running the
>>>>xindice 1.1b4.
>>>>
>>>>I tried what you recommended on a subset of the db (i.e. db/jobs).
>>>>Here is the error i get
>>>>
>>>>$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
>>>>test -f test
>>>>trying to register database
>>>>
>>>>Creating directory test/jobs
>>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>>Creating directory test/jobs/globalJobs1
>>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>>java.lang.Exception: java.lang.NullPointerException
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>       ... 7 more
>>>>[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>>java.lang.NullPointerException
>>>>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>>       at
>>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>>       at
>>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>>       at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>>       at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>>       at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>>
>>>>thanks,
>>>>
>>>>Rohit
>>>>
>>>>P.S. I am able to add/remove collections from db/jobs, but not from
>>>>db/globalJobs1
>>>>
>>>>byrne@cns.montana.edu wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>You could try running  xindice command line tool like this to export the 
>>>>>data and then reload it.
>>>>>
>>>>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>>>>
>>>>>Maybe I can work with you to narrow down where this null pointer is coming 
>>>>>from. Are you using the latest release?
>>>>>
>>>>>Todd
>>>>>
>>>>>
>>>>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>>>>
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>Hi,
>>>>>>
>>>>>>Is there any utility out there that can recover the data from a collection.
>>>>>>
>>>>>>Is it at all possible to do this at all?
>>>>>>
>>>>>>One particular collection has "gone bad". The rest of the db is working 
>>>>>>great.
>>>>>>I am unable to query it or create a collection within it.
>>>>>>
>>>>>>I get a null pointer exception from the data.
>>>>>>
>>>>>>thanks
>>>>>>
>>>>>>Rohit
>>>>>>
>>>>>>java.lang.NullPointerException at 
>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>>>>at 
>>>>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>>>>at 
>>>>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>>>>at 
>>>>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>>>>at 
>>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>at 
>>>>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>at 
>>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>at 
>>>>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>>at 
>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>>at 
>>>>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>>>>at 
>>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>>>>at 
>>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>>>>at 
>>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>>>>at 
>>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>>>>at java.lang.Thread.run(Thread.java:534)
>>>>>>
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>


Re: recovering potentially corrupt data

Posted by Todd Byrne <by...@cns.montana.edu>.
Hi Rohit,

So I need you to run that export command again and send me the expection
thats going to be printed in your catalina.log . It should look like :

Ignored exception
(stack trace)

If I can get that stack trace maybe I can write up a patch and you can
still recover your data.

Todd

Rohit Mathur wrote:
> Hi Todd,
> 
> sorry about that last message, since i saw the error i was expecting, i
> didnt think to check the export command syntax.
> 
>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
> globalJobs1 -f globalJobs1
> trying to register database
> 
> Creating directory globalJobs1/db
> Extracting 0 files from xmldb:xindice://localhost:8080/db
> Creating directory globalJobs1/db/products
> Extracting 0 files from xmldb:xindice://localhost:8080/db/products
> ...............
> Creating directory globalJobs1/db/site
> Extracting 1 files from xmldb:xindice://localhost:8080/db/site
> Creating directory globalJobs1/db/jobs
> Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
> Creating directory globalJobs1/db/jobs/globalJobs1
> XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
> http://localhost:8080/xindice/,message: java.lang.Exception:
> java.lang.NullPointerException
> org.xmldb.api.base.XMLDBException: Failed to execute command
> 'ListDocuments' on server: http://localhost:8080/xindice/, message:
> java.lang.Exception: java.lang.NullPointerException
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>         .....      
> Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>         at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>         ... 8 more
> [B@16df84borg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>          ....
>         at
> org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>         at
> org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>         at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>         at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>         at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
> 
> and listing the document is where i encountered the null pointer error
> in the first place.
> I am able to list other documents/collections in this db
> 
>>xindice.sh ld -v -c  xmldb:xindice://localhost:8080/db/jobs/globalJobs1
> trying to register database
> XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
> http://localhost:8080/xindice/,message: java.lang.Exception:
> java.lang.NullPointerException
> org.xmldb.api.base.XMLDBException: Failed to execute command
> 'ListDocuments' on server: http://localhost:8080/xindice/, message:
> java.lang.Exception: java.lang.NullPointerException
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>         at
> org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>         at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>         at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>         at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
> Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>         at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>         at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>         ... 5 more
> [B@199f91corg.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>         at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>         at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>         at
> org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
>         at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>         at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>         at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
> 
> hope this helps/is fixable
> 
> thanks a lot for your quick responses. i'm new to this project, and i
> havent worked with xindice before so i'm all at sea here.
> 
> Rohit
> 
> Todd Byrne wrote:
> 
>>I wasn't quite clear but try this:
>>
>>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>>globalJobs1 -f globalJobs1
>>
>>Also try listing the documents from database and retriving them one by one.
>>
>>$XINDICE_HOME/bin/xindice ld -c
>>xmldb:xindice://localhost:8080/db/globalJobs1
>>
>>Todd
>>
>>
>>Rohit Mathur wrote:
>>  
>>
>>>Hi Todd,
>>>
>>>So the original db was running off an application that was a wrapper
>>>around xindice, which is why i didnt want to send details.
>>>I have since copied the db over to another machine where I'm running the
>>>xindice 1.1b4.
>>>
>>>I tried what you recommended on a subset of the db (i.e. db/jobs).
>>>Here is the error i get
>>>
>>>$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
>>>test -f test
>>>trying to register database
>>>
>>>Creating directory test/jobs
>>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>>Creating directory test/jobs/globalJobs1
>>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>>java.lang.NullPointerException
>>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>>java.lang.Exception: java.lang.NullPointerException
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>        ... 7 more
>>>[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>>java.lang.NullPointerException
>>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>>        at
>>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>>        at
>>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>>
>>>thanks,
>>>
>>>Rohit
>>>
>>>P.S. I am able to add/remove collections from db/jobs, but not from
>>>db/globalJobs1
>>>
>>>byrne@cns.montana.edu wrote:
>>>
>>>    
>>>
>>>>You could try running  xindice command line tool like this to export the 
>>>>data and then reload it.
>>>>
>>>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>>>
>>>>Maybe I can work with you to narrow down where this null pointer is coming 
>>>>from. Are you using the latest release?
>>>>
>>>>Todd
>>>>
>>>>
>>>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>>>
>>>> 
>>>>
>>>>      
>>>>
>>>>>Hi,
>>>>>
>>>>>Is there any utility out there that can recover the data from a collection.
>>>>>
>>>>>Is it at all possible to do this at all?
>>>>>
>>>>>One particular collection has "gone bad". The rest of the db is working 
>>>>>great.
>>>>>I am unable to query it or create a collection within it.
>>>>>
>>>>>I get a null pointer exception from the data.
>>>>>
>>>>>thanks
>>>>>
>>>>>Rohit
>>>>>
>>>>>java.lang.NullPointerException at 
>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>>>at 
>>>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>>>at 
>>>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>>>at 
>>>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>>>at 
>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>at 
>>>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>at 
>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>at 
>>>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>>at 
>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>>at 
>>>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>>>at 
>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>>>at 
>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>>>at 
>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>>>at 
>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>>>at java.lang.Thread.run(Thread.java:534)
>>>>>
>>>>>   
>>>>>
>>>>>        
>>>>>
>>>> 
>>>>
>>>>      
>>>>
> 

Re: recovering potentially corrupt data

Posted by Rohit Mathur <ro...@fnal.gov>.
Hi Todd,

sorry about that last message, since i saw the error i was expecting, i 
didnt think to check the export command syntax.

 >xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n 
globalJobs1 -f globalJobs1
trying to register database

Creating directory globalJobs1/db
Extracting 0 files from xmldb:xindice://localhost:8080/db
Creating directory globalJobs1/db/products
Extracting 0 files from xmldb:xindice://localhost:8080/db/products
...............
Creating directory globalJobs1/db/site
Extracting 1 files from xmldb:xindice://localhost:8080/db/site
Creating directory globalJobs1/db/jobs
Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
Creating directory globalJobs1/db/jobs/globalJobs1
XMLDB Exception 0: Failed to execute command 'ListDocuments' on server: 
http://localhost:8080/xindice/,message: java.lang.Exception: 
java.lang.NullPointerException
org.xmldb.api.base.XMLDBException: Failed to execute command 
'ListDocuments' on server: http://localhost:8080/xindice/, message: 
java.lang.Exception: java.lang.NullPointerException
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
        .....      
Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
        ... 8 more
[B@16df84borg.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
         ....
        at 
org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
        at 
org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)

and listing the document is where i encountered the null pointer error 
in the first place.
I am able to list other documents/collections in this db

 >xindice.sh ld -v -c  xmldb:xindice://localhost:8080/db/jobs/globalJobs1
trying to register database
XMLDB Exception 0: Failed to execute command 'ListDocuments' on server: 
http://localhost:8080/xindice/,message: java.lang.Exception: 
java.lang.NullPointerException
org.xmldb.api.base.XMLDBException: Failed to execute command 
'ListDocuments' on server: http://localhost:8080/xindice/, message: 
java.lang.Exception: java.lang.NullPointerException
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
        at 
org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
        ... 5 more
[B@199f91corg.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
        at 
org.apache.xindice.tools.command.ListCollectionDocuments.execute(ListCollectionDocuments.java:55)
        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)

hope this helps/is fixable

thanks a lot for your quick responses. i'm new to this project, and i 
havent worked with xindice before so i'm all at sea here.

Rohit

Todd Byrne wrote:

>I wasn't quite clear but try this:
>
>xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
>globalJobs1 -f globalJobs1
>
>Also try listing the documents from database and retriving them one by one.
>
>$XINDICE_HOME/bin/xindice ld -c
>xmldb:xindice://localhost:8080/db/globalJobs1
>
>Todd
>
>
>Rohit Mathur wrote:
>  
>
>>Hi Todd,
>>
>>So the original db was running off an application that was a wrapper
>>around xindice, which is why i didnt want to send details.
>>I have since copied the db over to another machine where I'm running the
>>xindice 1.1b4.
>>
>>I tried what you recommended on a subset of the db (i.e. db/jobs).
>>Here is the error i get
>>
>>$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
>>test -f test
>>trying to register database
>>
>>Creating directory test/jobs
>>Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
>>Creating directory test/jobs/globalJobs1
>>XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
>>http://localhost:8080/xindice/,message: java.lang.Exception:
>>java.lang.NullPointerException
>>org.xmldb.api.base.XMLDBException: Failed to execute command
>>'ListDocuments' on server: http://localhost:8080/xindice/, message:
>>java.lang.Exception: java.lang.NullPointerException
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>        at
>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>        at
>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>        at
>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>        ... 7 more
>>[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
>>java.lang.NullPointerException
>>        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>>        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>>        at
>>org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>>        at
>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>>        at
>>org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>>        at
>>org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>>        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>>        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>>        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
>>
>>thanks,
>>
>>Rohit
>>
>>P.S. I am able to add/remove collections from db/jobs, but not from
>>db/globalJobs1
>>
>>byrne@cns.montana.edu wrote:
>>
>>    
>>
>>>You could try running  xindice command line tool like this to export the 
>>>data and then reload it.
>>>
>>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>>
>>>Maybe I can work with you to narrow down where this null pointer is coming 
>>>from. Are you using the latest release?
>>>
>>>Todd
>>>
>>>
>>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>>
>>> 
>>>
>>>      
>>>
>>>>Hi,
>>>>
>>>>Is there any utility out there that can recover the data from a collection.
>>>>
>>>>Is it at all possible to do this at all?
>>>>
>>>>One particular collection has "gone bad". The rest of the db is working 
>>>>great.
>>>>I am unable to query it or create a collection within it.
>>>>
>>>>I get a null pointer exception from the data.
>>>>
>>>>thanks
>>>>
>>>>Rohit
>>>>
>>>>java.lang.NullPointerException at 
>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>>at 
>>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>>at 
>>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>>at 
>>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>>at 
>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>>at 
>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>at 
>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>at 
>>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>>at 
>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>at 
>>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>at 
>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>at 
>>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>at 
>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>>at 
>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>>at 
>>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>>at 
>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>>at 
>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>>at 
>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>>at 
>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>>at java.lang.Thread.run(Thread.java:534)
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>      
>>>


Re: recovering potentially corrupt data

Posted by Todd Byrne <by...@cns.montana.edu>.
I wasn't quite clear but try this:

xindice.sh export -v -c  xmldb:xindice://localhost:8080/db -n
globalJobs1 -f globalJobs1

Also try listing the documents from database and retriving them one by one.

$XINDICE_HOME/bin/xindice ld -c
xmldb:xindice://localhost:8080/db/globalJobs1

Todd


Rohit Mathur wrote:
> Hi Todd,
> 
> So the original db was running off an application that was a wrapper
> around xindice, which is why i didnt want to send details.
> I have since copied the db over to another machine where I'm running the
> xindice 1.1b4.
> 
> I tried what you recommended on a subset of the db (i.e. db/jobs).
> Here is the error i get
> 
> $ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n
> test -f test
> trying to register database
> 
> Creating directory test/jobs
> Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
> Creating directory test/jobs/globalJobs1
> XMLDB Exception 0: Failed to execute command 'ListDocuments' on server:
> http://localhost:8080/xindice/,message: java.lang.Exception:
> java.lang.NullPointerException
> org.xmldb.api.base.XMLDBException: Failed to execute command
> 'ListDocuments' on server: http://localhost:8080/xindice/, message:
> java.lang.Exception: java.lang.NullPointerException
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>         at
> org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>         at
> org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>         at
> org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>         at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>         at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>         at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
> Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>         at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>         at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>         ... 7 more
> [B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception:
> java.lang.NullPointerException
>         at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
>         at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
>         at
> org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
>         at
> org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
>         at
> org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
>         at
> org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
>         at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
>         at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
>         at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
> 
> thanks,
> 
> Rohit
> 
> P.S. I am able to add/remove collections from db/jobs, but not from
> db/globalJobs1
> 
> byrne@cns.montana.edu wrote:
> 
>>You could try running  xindice command line tool like this to export the 
>>data and then reload it.
>>
>>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>>
>>Maybe I can work with you to narrow down where this null pointer is coming 
>>from. Are you using the latest release?
>>
>>Todd
>>
>>
>>On Fri, 12 May 2006, Rohit Mathur wrote:
>>
>>  
>>
>>>Hi,
>>>
>>>Is there any utility out there that can recover the data from a collection.
>>>
>>>Is it at all possible to do this at all?
>>>
>>>One particular collection has "gone bad". The rest of the db is working 
>>>great.
>>>I am unable to query it or create a collection within it.
>>>
>>>I get a null pointer exception from the data.
>>>
>>>thanks
>>>
>>>Rohit
>>>
>>>java.lang.NullPointerException at 
>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>>at 
>>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>>at 
>>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>>at 
>>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>>at 
>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>>at 
>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>at 
>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>at 
>>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>>at 
>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>at 
>>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>at 
>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>at 
>>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>at 
>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>>at 
>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>>at 
>>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>>at 
>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>>at 
>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>>at 
>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>>at 
>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>>at java.lang.Thread.run(Thread.java:534)
>>>
>>>    
>>>
>>
>>
>>  
>>
> 

Re: recovering potentially corrupt data

Posted by Rohit Mathur <ro...@fnal.gov>.
Hi Todd,

So the original db was running off an application that was a wrapper 
around xindice, which is why i didnt want to send details.
I have since copied the db over to another machine where I'm running the 
xindice 1.1b4.

I tried what you recommended on a subset of the db (i.e. db/jobs).
Here is the error i get

$ xindice.sh export -v -c  xmldb:xindice://localhost:8080/db/jobs -n 
test -f test
trying to register database

Creating directory test/jobs
Extracting 0 files from xmldb:xindice://localhost:8080/db/jobs
Creating directory test/jobs/globalJobs1
XMLDB Exception 0: Failed to execute command 'ListDocuments' on server: 
http://localhost:8080/xindice/,message: java.lang.Exception: 
java.lang.NullPointerException
org.xmldb.api.base.XMLDBException: Failed to execute command 
'ListDocuments' on server: http://localhost:8080/xindice/, message: 
java.lang.Exception: java.lang.NullPointerException
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:124)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
        at 
org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
        at 
org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
        at 
org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)
Caused by: org.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
        ... 7 more
[B@13f3045org.apache.xmlrpc.XmlRpcException: java.lang.Exception: 
java.lang.NullPointerException
        at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java)
        at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.runRemoteCommand(CollectionImpl.java:112)
        at 
org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl.listResources(CollectionImpl.java:488)
        at 
org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:111)
        at 
org.apache.xindice.tools.command.ExportTree.process(ExportTree.java:148)
        at 
org.apache.xindice.tools.command.ExportTree.execute(ExportTree.java:71)
        at org.apache.xindice.tools.XMLTools.execute(XMLTools.java:293)
        at org.apache.xindice.tools.XMLTools.process(XMLTools.java:171)
        at org.apache.xindice.tools.XMLTools.main(XMLTools.java:82)

thanks,

Rohit

P.S. I am able to add/remove collections from db/jobs, but not from 
db/globalJobs1

byrne@cns.montana.edu wrote:

>You could try running  xindice command line tool like this to export the 
>data and then reload it.
>
>$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test
>
>Maybe I can work with you to narrow down where this null pointer is coming 
>from. Are you using the latest release?
>
>Todd
>
>
>On Fri, 12 May 2006, Rohit Mathur wrote:
>
>  
>
>>Hi,
>>
>>Is there any utility out there that can recover the data from a collection.
>>
>>Is it at all possible to do this at all?
>>
>>One particular collection has "gone bad". The rest of the db is working 
>>great.
>>I am unable to query it or create a collection within it.
>>
>>I get a null pointer exception from the data.
>>
>>thanks
>>
>>Rohit
>>
>>java.lang.NullPointerException at 
>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
>>org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
>>org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
>>at 
>>org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
>>at 
>>org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
>>at 
>>org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
>>at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
>>org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>>at 
>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>>at 
>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>at 
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>at 
>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>at 
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>at 
>>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
>>at 
>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>at 
>>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>at 
>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>at 
>>org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>>at 
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>at 
>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>>at 
>>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>>at 
>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>>at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>>at 
>>org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>>at 
>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
>>at 
>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
>>at 
>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
>>at 
>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
>>at java.lang.Thread.run(Thread.java:534)
>>
>>    
>>
>
>
>  
>


Re: recovering potentially corrupt data

Posted by by...@cns.montana.edu.
You could try running  xindice command line tool like this to export the 
data and then reload it.

$XINDICE_HOME/bin/xindice export -c  xmldb:xindice://localhost:8080/db/ -n test -f test

Maybe I can work with you to narrow down where this null pointer is coming 
from. Are you using the latest release?

Todd


On Fri, 12 May 2006, Rohit Mathur wrote:

> Hi,
> 
> Is there any utility out there that can recover the data from a collection.
> 
> Is it at all possible to do this at all?
> 
> One particular collection has "gone bad". The rest of the db is working 
> great.
> I am unable to query it or create a collection within it.
> 
> I get a null pointer exception from the data.
> 
> thanks
> 
> Rohit
> 
> java.lang.NullPointerException at 
> org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
> org.apache.xindice.core.filer.BTree$BTreeNode.query(BTree.java:937) at 
> org.apache.xindice.core.filer.BTree.query(BTree.java:221) at 
> org.apache.xindice.core.filer.BTreeFiler$BTreeFilerRecordSet.(BTreeFiler.java:191) 
> at 
> org.apache.xindice.core.filer.BTreeFiler.getRecordSet(BTreeFiler.java:174) 
> at 
> org.apache.xindice.core.Collection.listDocuments(Collection.java:1007) 
> at 
> org.apache.xindice.server.UglyBrowser.getHierarchy(UglyBrowser.java:157) 
> at org.apache.xindice.server.UglyBrowser.doGet(UglyBrowser.java:78) at 
> org.apache.xindice.server.XindiceServlet.doGet(XindiceServlet.java:82) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
> at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
> at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
> at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
> at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
> at 
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
> at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
> at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
> at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
> at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
> at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
> at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
> at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
> at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
> at 
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
> at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
> at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
> at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
> at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
> at java.lang.Thread.run(Thread.java:534)
>