Hello,
I just updated BaseX to the last version (8.5), and I am now facing some
issues, while with the previous version (8.4.4) my application was working
flawlessly.
My application receive XML documents from a TCP socket and store them in
BaseX, in parallel and upon user request the same collection is queried.
For both adding new documents and querying the collection, I am using a
LocalSession, each one in its own thread.
The problem is that the following exception occurs very often, and when it
happens, it seems to corrupt definitely the DB.
I wrote 2 simple test cases. The ArrayExceptionTest.java exhibits the
problem while NoArrayExceptionTest.java does not.
The only difference between the 2 is:
· ArrayExceptionTest.java uses LocalSession for adding documents to
and querying the collection
· NoArrayExceptionTest.java uses LocalSession only for querying the
collection, adding documents in the collection is done by using directly
the Context.
org.basex.core.BaseXException: Improper use? Potential bug? Your feedback
is welcome:
Contact: basex-talk(a)mailman.uni-konstanz.de
Version: BaseX 8.5
Java: Oracle Corporation, 1.7.0_80
OS: Windows 7, x86
Stack Trace:
java.lang.ArrayIndexOutOfBoundsException: 2147483647
at
org.basex.io.random.TableDiskAccess.fpre(TableDiskAccess.java:501)
at
org.basex.io.random.TableDiskAccess.cursor(TableDiskAccess.java:452)
at
org.basex.io.random.TableDiskAccess.read2(TableDiskAccess.java:155)
at org.basex.data.Data.nameId(Data.java:360)
at org.basex.data.Data.name(Data.java:375)
at org.basex.query.value.node.DBNode.name(DBNode.java:169)
at org.basex.query.expr.path.NameTest.eq(NameTest.java:92)
at org.basex.query.func.db.DbAccess$1.next(DbAccess.java:67)
at org.basex.query.func.db.DbAccess$1.next(DbAccess.java:62)
at org.basex.query.iter.Iter.value(Iter.java:53)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:417)
at
org.basex.query.expr.path.CachedPath.nodeIter(CachedPath.java:36)
at org.basex.query.expr.path.AxisPath.iter(AxisPath.java:78)
at org.basex.query.expr.path.AxisPath.iter(AxisPath.java:51)
at org.basex.query.expr.gflwor.For$1.next(For.java:109)
at org.basex.query.expr.gflwor.OrderBy$1.sort(OrderBy.java:76)
at org.basex.query.expr.gflwor.OrderBy$1.next(OrderBy.java:57)
at org.basex.query.expr.gflwor.GFLWOR$1.next(GFLWOR.java:96)
at org.basex.query.func.fn.FnCount.item(FnCount.java:27)
at org.basex.query.expr.ParseExpr.iter(ParseExpr.java:44)
at org.basex.query.MainModule.iter(MainModule.java:118)
at org.basex.query.QueryContext.iter(QueryContext.java:340)
at org.basex.query.QueryProcessor.iter(QueryProcessor.java:91)
at org.basex.core.cmd.AQuery.query(AQuery.java:94)
at org.basex.core.cmd.XQuery.run(XQuery.java:22)
at org.basex.core.Command.run(Command.java:253)
at org.basex.core.Command.execute(Command.java:99)
at
org.basex.api.client.LocalSession.execute(LocalSession.java:132)
at org.basex.api.client.Session.execute(Session.java:36)
at
basextest.ArrayExceptionTest$1.run(ArrayExceptionTest.java:57)
at org.basex.core.Command.execute(Command.java:100)
at
org.basex.api.client.LocalSession.execute(LocalSession.java:132)
at org.basex.api.client.Session.execute(Session.java:36)
at
basextest.ArrayExceptionTest$1.run(ArrayExceptionTest.java:57)
Regards
Simon