Hello,
Unfortunately I am unable to use BaseX (6.5) as I keep getting data corruption. I run BaseX on a dedicated server.
The xml-datafiles I insert into the database have the following layout: <EEGData bla="x" > <signal name="x"> <timeslot start="2008-07-24T14:22:16">-53.2942688282 -37.5091841347 -35.6337285276 (many more values)</timeslot> <!-- more timeslot nodes--> </signal> <!-- more signals --> </EEGData>
Running "list" on the client returns the following: Name Documents Size Path ------------------------------------------------------------------------ ------------------ fullxml 3789 522153128560 /path/to/xml
This database was created by running the command: java -cp basex.jar org.basex.BaseXClient -c "create db fullxml /path/to/xml/files/"
The problems start when I execute the "list fullxml" command, this returns:
list fullxml
Possible bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 6.5 Java: Sun Microsystems Inc., 1.6.0_17 OS: Linux, amd64 Stack Trace: java.lang.ArrayIndexOutOfBoundsException: 48 org.basex.util.Compress.pull(Compress.java:143) org.basex.util.Compress.unpack(Compress.java:103) org.basex.data.DiskData.txt(DiskData.java:206) org.basex.data.DiskData.text(DiskData.java:173) org.basex.core.cmd.ListDB.run(ListDB.java:48) org.basex.core.Command.run(Command.java:292) org.basex.core.Command.exec(Command.java:274) org.basex.core.Command.execute(Command.java:67) org.basex.server.ServerProcess.run(ServerProcess.java:172)
I randomly queried some XML documents and they looked correct, but after some searching I found a few problematic ones. When queried, the (text)nodes contain garbage like this one: <timeslot start="2008-07-25T11:21:46">HLAD IIrHEHAHIimimO Ga 1YI G@OXba O GW O O OI1R? O</timeslot>
Weirdly enough, the attributes are correct.
info storage 230000000 230000010
PRE DIS SIZ ATS NS KIND CONTENT ------------------------------------------------------------------------ -------------------- 230000000 1 1 1 0 ATTR start="2006-09-05T15:21:22" 230000001 2 1 1 0 TEXT 4EpfL AchD KIAEAEA ABAH IIGRmI I 9mr0LHIKDIIII OIKA 230000002 1698 3 2 0 ELEM timeslot 230000003 1 1 1 0 ATTR start="2006-09-05T15:21:23" 230000004 2 1 1 0 TEXT yoio i o gcyg@hBP i gA kd o RrP kbad n gJua a3kd gA o 230000005 1701 3 2 0 ELEM timeslot 230000006 1 1 1 0 ATTR start="2006-09-05T15:21:24" 230000007 2 1 1 0 TEXT 4EUAHIO rRjRNJNJNLATO N iYOIO KcHADIKTO NIGXLANAIAD 230000008 1704 3 2 0 ELEM timeslot 230000009 1 1 1 0 ATTR start="2006-09-05T15:21:25" 230000010 2 1 1 0 TEXT mIIKEAH GXDA ACIIIO GaIimO
Retrieving all timeslot nodes within this document is not possible and results in an error: Error: Possible bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 6.5 Java: Sun Microsystems Inc., 1.6.0_17 OS: Linux, amd64 Stack Trace: java.lang.ArrayIndexOutOfBoundsException: 32 org.basex.util.Compress.pull(Compress.java:127) org.basex.util.Compress.unpack(Compress.java:112) org.basex.data.DiskData.txt(DiskData.java:206) org.basex.data.DiskData.text(DiskData.java:173) org.basex.data.Serializer.node(Serializer.java:298) org.basex.data.Serializer.node(Serializer.java:259) org.basex.query.item.DBNode.serialize(DBNode.java:110) org.basex.query.item.FElem.serialize(FElem.java:245) org.basex.core.cmd.AQuery.query(AQuery.java:97) org.basex.core.cmd.XQuery.run(XQuery.java:22) org.basex.core.Command.run(Command.java:292) org.basex.core.Command.exec(Command.java:274) org.basex.core.Command.execute(Command.java:67) org.basex.server.ServerProcess.run(ServerProcess.java:172)
Furthermore, I cannot delete the problematic documents:
delete a0008788.edf.xml
Possible bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 6.5 Java: Sun Microsystems Inc., 1.6.0_17 OS: Linux, amd64 Stack Trace: java.lang.ArrayIndexOutOfBoundsException: 32 org.basex.util.Compress.pull(Compress.java:143) org.basex.util.Compress.unpack(Compress.java:107) org.basex.data.DiskData.txt(DiskData.java:206) org.basex.data.DiskData.text(DiskData.java:173) org.basex.core.cmd.Delete.run(Delete.java:36) org.basex.core.Command.run(Command.java:292) org.basex.core.Command.exec(Command.java:274) org.basex.core.Command.execute(Command.java:67) org.basex.server.ServerProcess.run(ServerProcess.java:172)
When running "info storage" on a document given a certain query, I also get an exception:
info storage
db:open("fullxml/a0008788.edf.xml")/EEGData/signal[position()=1]/timeslo t[position()=1] Possible bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 6.5 Java: Sun Microsystems Inc., 1.6.0_17 OS: Linux, amd64 Stack Trace: java.lang.NullPointerException org.basex.data.DataPaths.find(DataPaths.java:93) org.basex.data.DataPaths.doc(DataPaths.java:79) org.basex.data.Data.doc(Data.java:213) org.basex.query.func.FNDb.open(FNDb.java:88) org.basex.query.func.FNDb.iter(FNDb.java:52) org.basex.query.QueryContext.iter(QueryContext.java:304) org.basex.query.expr.ParseExpr.value(ParseExpr.java:73) org.basex.query.func.Fun.comp(Fun.java:47) org.basex.query.path.Path.comp(Path.java:40) org.basex.query.QueryContext.compile(QueryContext.java:206) org.basex.query.QueryProcessor.compile(QueryProcessor.java:82) org.basex.query.QueryProcessor.execute(QueryProcessor.java:103) org.basex.query.QueryProcessor.queryNodes(QueryProcessor.java:182) org.basex.core.cmd.AQuery.queryNodes(AQuery.java:148) org.basex.core.cmd.InfoStorage.run(InfoStorage.java:41) org.basex.core.Command.run(Command.java:292) org.basex.core.Command.exec(Command.java:274) org.basex.core.Command.execute(Command.java:67) org.basex.server.ServerProcess.run(ServerProcess.java:172)
The XML document itself is valid and I can import and query it in BaseX on my local machine without a problem. I even dropped the entire database and recreated it, with the same problem on the same file(s). It seems that after a certain amount of data, the database gets corrupted; all documents inserted after this point contain garbage. I also tried to create the database with "intparse" set to ON, but I get the same problem.
Regards,
Elmer