Hi Marco,

Finally some news on the storage bug you reported: It is fixed with
the latest snapshot [1].

Looking forward to your tests (and I hope you received my response on
parallel querying),
Christian

[1] http://files.basex.org/releases/latest/



On Tue, Aug 6, 2019 at 9:38 AM Christian Grün <christian.gr...@gmail.com> wrote:
>
> Hi Marco,
>
> I think that the bug fix (which is still on my todo list) will be made
> available with BaseX 9.3; so, for now, it’s probably better to choose
> the workaround.
>
> Cheers,
> Christian
>
>
>
> On Sat, Aug 3, 2019 at 10:02 AM Marco Lettere <m.lett...@gmail.com> wrote:
> >
> > Hi Christian,
> > I'm currently preparing a deployment based on Docker for one of our
> > customers. Here in Italy it's holiday time in August so I have a bit of
> > time and I can coope with your suggested workaround for the moment.
> > Just a question to be prepared ... are intermediate bug-fix releases
> > also available in the form of docker containers?
> > Thanks for your support as usual.
> > Regards,
> > Marco.
> >
> > On 02/08/19 15:04, Christian Grün wrote:
> > > Hi Marco,
> > >
> > > A little update on the status quo:
> > >
> > > • I noticed that the bug you observed was basically exposed by the
> > > previous bug fix (it existed before, but it didn’t occur in your
> > > particular setting).
> > > • It happens only in certain cases (i.e., for specific document sizes)
> > > and if the added/replaced document has namespaces.
> > > • Another good thing: It happens only if your database is empty.
> > >
> > > It’s not exactly an elegant proposal, but as long as we haven’t fixed
> > > the bug, you could add an initial <dummy/> document to your database.
> > >
> > > We are doing our best, though.
> > > Christian
> > >
> > >
> > >
> > > On Wed, Jul 31, 2019 at 10:20 AM Christian Grün
> > > <christian.gr...@gmail.com> wrote:
> > >> Marco, thanks for the attachment. I have created a script that
> > >> triggers the error [1]. Most probably, the bug is related to the
> > >> previous bug issue. We’ll have a look at this soon. – Christian
> > >>
> > >> [1] https://github.com/BaseXdb/basex/issues/1711
> > >>
> > >>
> > >>
> > >> On Sat, Jul 27, 2019 at 4:02 PM Marco Lettere <m.lett...@gmail.com> 
> > >> wrote:
> > >>> Thanks Christian,
> > >>> I haven't been able to reproduce the bug with your SSCE.
> > >>> Nevertheless I spent some time in tracing the operations with the actual
> > >>> data I'm currently storing into the DB and a sequence of
> > >>> db:add/db:replace close enough to actual app flow.
> > >>> I attach the query script which should be rather self explaining.
> > >>> You may run the script changing always $f with $f + 1 starting (from 0).
> > >>> By uncommenting the different configurations of the variable $input you
> > >>> can see how the misbehaviour depends somehow on the data because only
> > >>> $d8 is causing the crash.
> > >>> I stared at the diffs from $d8 to the other but there really isn't any
> > >>> significant difference so now it's very hard for me to understand.
> > >>>
> > >>> Thank you in advance for all support that you can provide as usual.
> > >>> Regards,
> > >>> Marco.
> > >>>
> > >>> On 26/07/19 18:41, Christian Grün wrote:
> > >>>> Hi Marco,
> > >>>>
> > >>>> Back in February, a user reported a database inconsistency [1] – which
> > >>>> happened, too, if a database was nearly empty – and we managed to
> > >>>> build a little text case to get this reproduced [2]. After that, 9.2
> > >>>> was released. Maybe this fix introduced another irregularity for this
> > >>>> special case?
> > >>>>
> > >>>> Maybe we can get this reproduced by taking the script from issue 1662
> > >>>> and modify it a little? That would be great.
> > >>>>
> > >>>> Sorry to the inconvenience,
> > >>>> Christian
> > >>>>
> > >>>> PS: You can safely ignore the "Creating database..." output. It may
> > >>>> just indicate that an XML document is parsed, and that an internal
> > >>>> main-memory database instance is created, possibly for your users.xml
> > >>>> file in the data directory.
> > >>>>
> > >>>> [1] 
> > >>>> https://www.mail-archive.com/basex-talk@mailman.uni-konstanz.de/msg11459.html
> > >>>> [2] https://github.com/BaseXdb/basex/issues/1662
> > >>>>
> > >>>>
> > >>>>
> > >>>> On Fri, Jul 26, 2019 at 4:29 PM Marco Lettere <m.lett...@gmail.com> 
> > >>>> wrote:
> > >>>>> Hi all,
> > >>>>>
> > >>>>> starting with 9.2.1 we experience a strange error with a RESTXQ API  
> > >>>>> of
> > >>>>> ours that we have been using for years.
> > >>>>>
> > >>>>> The typical pattern is lookup a document update it and store it back.
> > >>>>>
> > >>>>> We have done this milions of time and also all the tests work neatly.
> > >>>>>
> > >>>>> But when using it from inside the web application, at around the tenth
> > >>>>> operation we get the DB corrupted with the stack trace [1]. This seems
> > >>>>> to happen only when the database is nearly empty and, for sure, it
> > >>>>> doesn't appear on 8.x series.
> > >>>>>
> > >>>>> It feels like some concurrency flaw is introduced somewhere but it's
> > >>>>> hard to say because the API is eight years in age and it never changed
> > >>>>> significantly.
> > >>>>>
> > >>>>> I know it's hard without an SSCE... but while working to insulate this
> > >>>>> byzantine behaviour (I've been trying for days now) maybe someone in 
> > >>>>> the
> > >>>>> list has a clue or is able to interpret the stack trace?
> > >>>>>
> > >>>>> Thanks and have a nice weekend,
> > >>>>>
> > >>>>> Marco.
> > >>>>>
> > >>>>>
> > >>>>> [1]
> > >>>>>
> > >>>>> Improper use? Potential bug? Your feedback is welcome:
> > >>>>> Contact: basex-talk@mailman.uni-konstanz.de
> > >>>>> Version: BaseX 9.3 beta
> > >>>>> Java: Ubuntu, 13
> > >>>>> OS: Linux, amd64
> > >>>>> Stack Trace:
> > >>>>> java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for 
> > >>>>> length 1
> > >>>>>        at 
> > >>>>> org.basex.io.random.TableDiskAccess.fpre(TableDiskAccess.java:507)
> > >>>>>        at 
> > >>>>> org.basex.io.random.TableDiskAccess.cursor(TableDiskAccess.java:468)
> > >>>>>        at 
> > >>>>> org.basex.io.random.TableDiskAccess.read1(TableDiskAccess.java:156)
> > >>>>>        at org.basex.data.Data.kind(Data.java:304)
> > >>>>>        at org.basex.query.value.node.DBNode.<init>(DBNode.java:50)
> > >>>>>        at org.basex.query.value.seq.DBNodeSeq.get(DBNodeSeq.java:139)
> > >>>>>        at org.basex.query.value.seq.DBNodeSeq.get(DBNodeSeq.java:164)
> > >>>>>        at org.basex.query.func.db.DbOpen.value(DbOpen.java:19)
> > >>>>>        at 
> > >>>>> org.basex.query.func.StandardFunc.optimize(StandardFunc.java:82)
> > >>>>>        at org.basex.query.expr.Arr.inline(Arr.java:69)
> > >>>>>        at org.basex.query.expr.path.Path.inline(Path.java:962)
> > >>>>>        at org.basex.query.expr.gflwor.ForLet.inline(ForLet.java:66)
> > >>>>>        at org.basex.query.expr.gflwor.GFLWOR.inline(GFLWOR.java:804)
> > >>>>>        at 
> > >>>>> org.basex.query.expr.gflwor.GFLWOR.inlineLets(GFLWOR.java:339)
> > >>>>>        at org.basex.query.expr.gflwor.GFLWOR.optimize(GFLWOR.java:106)
> > >>>>>        at org.basex.query.expr.gflwor.GFLWOR.inline(GFLWOR.java:785)
> > >>>>>        at org.basex.query.expr.Try.inline(Try.java:106)
> > >>>>>        at org.basex.query.expr.gflwor.GFLWOR.inline(GFLWOR.java:816)
> > >>>>>        at 
> > >>>>> org.basex.query.expr.gflwor.GFLWOR.inlineLets(GFLWOR.java:339)
> > >>>>>        at org.basex.query.expr.gflwor.GFLWOR.optimize(GFLWOR.java:106)
> > >>>>>        at org.basex.query.func.StaticFunc.inline(StaticFunc.java:294)
> > >>>>>        at 
> > >>>>> org.basex.query.func.StaticFuncCall.compile(StaticFuncCall.java:67)
> > >>>>>        at org.basex.query.scope.MainModule.comp(MainModule.java:81)
> > >>>>>        at 
> > >>>>> org.basex.query.QueryCompiler.compile(QueryCompiler.java:114)
> > >>>>>        at 
> > >>>>> org.basex.query.QueryCompiler.compile(QueryCompiler.java:105)
> > >>>>>        at org.basex.query.QueryContext.compile(QueryContext.java:312)
> > >>>>>        at org.basex.query.QueryContext.iter(QueryContext.java:331)
> > >>>>>        at
> > >>>>> org.basex.http.restxq.RestXqResponse.serialize(RestXqResponse.java:73)
> > >>>>>        at org.basex.http.web.WebResponse.create(WebResponse.java:63)
> > >>>>>        at 
> > >>>>> org.basex.http.restxq.RestXqServlet.run(RestXqServlet.java:53)
> > >>>>>        at org.basex.http.BaseXServlet.service(BaseXServlet.java:65)
> > >>>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> > >>>>>        at org.eclipse.jetty.server.Server.handle(Server.java:505)
> > >>>>>        at 
> > >>>>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> > >>>>>        at 
> > >>>>> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
> > >>>>>        at 
> > >>>>> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
> > >>>>>        at
> > >>>>> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
> > >>>>>        at java.base/java.lang.Thread.run(Thread.java:835)
> > >>>>>
> >

Reply via email to