Hi James, I've just updated the latest snapshot: could you give it another try?
Christian ______________________________________ > On Thu, Aug 7, 2014 at 2:26 AM, James Ball <basex-t...@jamesball.co.uk> > wrote: >> >> Hi Christian, >> >> I've been following along with your snapshots and I think there's a bug >> still remaining somewhere but I can't work out what's causing it which is >> why I haven't been back to you. >> >> If you use the GUI and the database is open in the GUI then everything >> works correctly. I can add, replace or a mix of the two with no issues. >> >> However if I use the GUI but the database is closed then I can still get >> AOOB errors. >> >> I've spent the evening gradually reducing it down so I can reproduce the >> error using just one element and one attribute and do it with command files. >> >> I've attached three files: >> >> AOOB-succeed.bxs will always work. The database is created and remains >> open during the replacements. Everything is fine. >> AOOB-fail.bxs will fail. The database is closed after being created and >> the XQuery runs on the closed database. The first replacements (plural but >> fewer than the number of documents in the database - 1) are fine but >> subsequent ones fail. >> AOOB-fail2.bxs will also fail. This is the same as AOOB-fail.bxs except >> that only one replacement is made. This still fails but will a different >> error (key does not exist). >> >> I hope these help track down this bug - it's working really well >> otherwise. >> >> Regards, James >> >> >> >> >> On 6 Aug 2014, at 11:14, Christian Grün <christian.gr...@gmail.com> wrote: >> >> > Hi James, >> > >> > while writing some more tests, I stumbled upon another small bug, >> > causing AOOB exceptions during the insertion of new entries. The new >> > snapshot is online. >> > >> > Christian >> > >> > >> > On Mon, Aug 4, 2014 at 7:32 PM, Christian Grün >> > <christian.gr...@gmail.com> wrote: >> >> A last one for today: I have just uploaded another snapshot which >> >> should speed up index updates. >> >> >> >> Looking forward to your feedback, >> >> Christian >> >> >> >> >> >> >> >> On Mon, Aug 4, 2014 at 4:01 PM, Christian Grün >> >> <christian.gr...@gmail.com> wrote: >> >>> The bug was hidden well [1], but it should be fixed now. Could you >> >>> check out the latest snapshot? >> >>> Christian >> >>> >> >>> [1] >> >>> https://github.com/BaseXdb/basex/commit/429585ce26fca98d124d78fb88216ad7317c52fa >> >>> >> >>> >> >>> >> >>> On Mon, Aug 4, 2014 at 2:41 PM, Christian Grün >> >>> <christian.gr...@gmail.com> wrote: >> >>>> Hi James, >> >>>> >> >>>> I've found a little example for the bug (see attached). >> >>>> >> >>>> Sorry for the inconvenience; I'm working on a fix. >> >>>> >> >>>> Christian >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> On Mon, Aug 4, 2014 at 11:30 AM, Christian Grün >> >>>> <christian.gr...@gmail.com> wrote: >> >>>>> James, >> >>>>> >> >>>>> thanks for testing. We have a bunch of test cases that succeeded for >> >>>>> the rewritten index handling, but as it seems, we definitely need >> >>>>> some >> >>>>> more. I'm pretty sure it's a single bug that causes all the error >> >>>>> messages (because the code is in itself pretty straightforward), so >> >>>>> I >> >>>>> would be glad if you could compose a little, self-contained example >> >>>>> that provokes the error. I have attached a little (working) command >> >>>>> script which you can open in the gui (and execute there) and modify >> >>>>> it >> >>>>> until it raises one of the reported errors. >> >>>>> >> >>>>> Thanks, >> >>>>> Christian >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Fri, Aug 1, 2014 at 7:14 PM, James Ball >> >>>>> <basex-t...@jamesball.co.uk> wrote: >> >>>>>> Hi Christian, >> >>>>>> >> >>>>>>> I'm glad to tell you that I have now implemented the projected >> >>>>>>> optimizations >> >>>>>> >> >>>>>> Thank you for providing the snapshot. I've downloaded it and begun >> >>>>>> running some tests. >> >>>>>> >> >>>>>> Unfortunately I'm immediately finding some odd behaviour. I'm using >> >>>>>> the script I provided in my original issue report to the list. >> >>>>>> >> >>>>>> I can use replace() to add as many documents to the database as I >> >>>>>> want as long as the documents are new (no document exists to be >> >>>>>> replaced). >> >>>>>> >> >>>>>> If I use replace() on one document in a transaction ($files set to >> >>>>>> 1 in my script) then everything works. >> >>>>>> >> >>>>>> However if I try to replace more than one file in a transaction >> >>>>>> ($files set to 2+) I get an error. >> >>>>>> >> >>>>>> Error: >> >>>>>> Improper use? Potential bug? Your feedback is welcome: >> >>>>>> Contact: basex-talk@mailman.uni-konstanz.de >> >>>>>> Version: BaseX 8.0 beta 3a7d766 >> >>>>>> Java: Oracle Corporation, 1.7.0_60 >> >>>>>> OS: Mac OS X, x86_64 >> >>>>>> Stack Trace: >> >>>>>> java.lang.RuntimeException: Key does not exist: 'Name' >> >>>>>> at org.basex.util.Util.notExpected(Util.java:60) >> >>>>>> at >> >>>>>> org.basex.index.value.UpdatableDiskValues.delete(UpdatableDiskValues.java:82) >> >>>>>> at org.basex.data.DiskData.indexDelete(DiskData.java:390) >> >>>>>> at org.basex.data.DiskData.indexDelete(DiskData.java:452) >> >>>>>> at org.basex.data.Data.delete(Data.java:632) >> >>>>>> at org.basex.data.atomic.Delete.apply(Delete.java:39) >> >>>>>> at >> >>>>>> org.basex.data.atomic.AtomicUpdateCache.applyUpdates(AtomicUpdateCache.java:298) >> >>>>>> at >> >>>>>> org.basex.data.atomic.AtomicUpdateCache.execute(AtomicUpdateCache.java:282) >> >>>>>> at >> >>>>>> org.basex.query.up.DataUpdates.apply(DataUpdates.java:161) >> >>>>>> at >> >>>>>> org.basex.query.up.ContextModifier.apply(ContextModifier.java:118) >> >>>>>> at org.basex.query.up.Updates.apply(Updates.java:129) >> >>>>>> at org.basex.query.QueryContext.iter(QueryContext.java:351) >> >>>>>> at >> >>>>>> org.basex.query.QueryContext.execute(QueryContext.java:605) >> >>>>>> at >> >>>>>> org.basex.query.QueryProcessor.execute(QueryProcessor.java:100) >> >>>>>> at org.basex.core.cmd.AQuery.query(AQuery.java:82) >> >>>>>> at org.basex.core.cmd.XQuery.run(XQuery.java:22) >> >>>>>> at org.basex.core.Command.run(Command.java:360) >> >>>>>> at org.basex.core.Command.execute(Command.java:94) >> >>>>>> at org.basex.gui.GUI.exec(GUI.java:417) >> >>>>>> at org.basex.gui.GUI.access$500(GUI.java:41) >> >>>>>> at org.basex.gui.GUI$8.run(GUI.java:361) >> >>>>>> >> >>>>>> If I keep running the command then eventually it will work >> >>>>>> (eventually is related to the number of documents being replace/in the >> >>>>>> database). Note that this is in the GUI with the database open in the >> >>>>>> GUI. >> >>>>>> >> >>>>>> If I do it in the GUI but with the database closed I get >> >>>>>> alternating errors between 'Key does not exist' and 'Key should not >> >>>>>> exist' >> >>>>>> each time I run. The error never corrects itself. >> >>>>>> >> >>>>>> I'm happy to investigate further and provide more details if >> >>>>>> required but I'm confused as to what might actually be happening to >> >>>>>> cause >> >>>>>> this so I'm not sure where to go next. Let me if you need anything >> >>>>>> from me. >> >>>>>> >> >>>>>> Regards, James >> >> >