Hello,
I have a strange exception :
Improper use? Potential bug? Your feedback is welcome:
Contact: basex-talk(a)mailman.uni-konstanz.de
Version: BaseX 8.2.3
Java: Oracle Corporation, 1.8.0_91
OS: Linux, amd64
Stack Trace:
java.lang.RuntimeException: Data Access out of bounds:
- pre value: 120241192
- #used blocks: 469694
- #total locks: 469770
- access: 469693 (469694 > 469693]
at org.basex.util.Util.notExpected(Util.java:60)
at
org.basex.io.random.TableDiskAccess.cursor(TableDiskAccess.java:458)
at
org.basex.io.random.TableDiskAccess.read1(TableDiskAccess.java:148)
at org.basex.data.Data.kind(Data.java:306)
at org.basex.query.value.node.DBNode.<init>(DBNode.java:51)
at org.basex.query.value.seq.DBNodeSeq.itemAt(DBNodeSeq.java:68)
at org.basex.query.value.seq.DBNodeSeq.itemAt(DBNodeSeq.java:22)
at org.basex.query.value.seq.Seq$1.next(Seq.java:77)
at org.basex.query.expr.path.IterPath$1.next(IterPath.java:58)
at org.basex.query.expr.path.IterPath$1.next(IterPath.java:36)
at org.basex.query.expr.gflwor.For$1.next(For.java:79)
at org.basex.query.expr.gflwor.GroupBy$1.init(GroupBy.java:131)
at org.basex.query.expr.gflwor.GroupBy$1.next(GroupBy.java:98)
at org.basex.query.expr.gflwor.Let$LetEval.next(Let.java:174)
at org.basex.query.expr.gflwor.For$1.next(For.java:99)
at org.basex.query.expr.gflwor.GFLWOR$1.next(GFLWOR.java:95)
at org.basex.query.expr.List$1.next(List.java:135)
at org.basex.query.MainModule.cache(MainModule.java:91)
at org.basex.query.QueryContext.iter(QueryContext.java:352)
at org.basex.query.QueryProcessor.iter(QueryProcessor.java:80)
at org.basex.core.cmd.AQuery.query(AQuery.java:89)
at org.basex.core.cmd.XQuery.run(XQuery.java:22)
at org.basex.core.Command.run(Command.java:398)
at org.basex.core.Command.execute(Command.java:100)
at org.basex.server.ClientListener.run(ClientListener.java:136)
The XQuery is :
for $fs in collection('FichiersBase')/forms
group by $s := $fs/@supp
return
let $mv := max($fs/@omversion)
for $f in $fs
return
if (empty($mv) or $f/@omversion >= $mv)
then
()
else
db:delete('FichiersBase', db:path($f))
),
db:optimize('FichiersBase')
After this, trying a OPTIMIZE ALL on DATABASE FichiersBase, I have this
exception :
> OPEN FichiersBase
Database 'FichiersBase' was opened in 744.68 ms.
> OPTIMIZE ALL
Improper use? Potential bug? Your feedback is welcome:
Contact: basex-talk(a)mailman.uni-konstanz.de
Version: BaseX 8.2.3
Java: Oracle Corporation, 1.8.0_91
OS: Linux, amd64
Stack Trace:
java.lang.ArrayIndexOutOfBoundsException: 1
at org.basex.data.Namespaces.values(Namespaces.java:201)
at org.basex.data.Data.namespaces(Data.java:450)
at org.basex.io.serial.Serializer.node(Serializer.java:449)
at org.basex.io.serial.Serializer.node(Serializer.java:176)
at org.basex.io.serial.Serializer.serialize(Serializer.java:126)
at org.basex.core.cmd.OptimizeAll$DBParser.parse(OptimizeAll.java:202)
at org.basex.build.Builder.parse(Builder.java:73)
at org.basex.build.DiskBuilder.build(DiskBuilder.java:85)
at org.basex.core.cmd.OptimizeAll.optimizeAll(OptimizeAll.java:131)
at org.basex.core.cmd.OptimizeAll.run(OptimizeAll.java:47)
at org.basex.core.Command.run(Command.java:398)
at org.basex.core.Command.execute(Command.java:100)
at org.basex.server.ClientListener.run(ClientListener.java:136)
Any idea ?
Does this mean my database is corrupted ?
Best,
Christophe