Giter Club home page Giter Club logo

Comments (4)

afs avatar afs commented on July 22, 2024

Hi @awoestmann - could you give some context because the stacktrace isn't enough to investigate.

  • What is the server configuration - the stack trace has DatasetImpl so is it some kind of configuration file setup.
  • What operation of the server is this occurring at the time of the stacktrace?
  • How is data loaded into this dataset?
  • Is it HTTP/1 or HTTP/2 connections to the server?
  • Are calling clients properly ending their closing their HTTP connections?

from jena.

awoestmann avatar awoestmann commented on July 22, 2024

Hi @afs,

thanks for quick reply.

I will try to give you some context:

What is the server configuration - the stack trace has DatasetImpl so is it some kind of configuration file setup.

I am not entirely sure what you mean here. We are creating the dataset using something like:

Dataset dataset = TDB2Factory.connectDataset("path/to/tdb/dir")

What operation of the server is this occurring at the time of the stacktrace?

At the time of the stacktrace the server is handling a request that should return the result of a sparql query. The error then occurs when we start the transaction to execute the query:

    dataset.begin(TxnType.READ);
    try {
      //Execute query and return result
    } finally {
      dataset.end();
    }

How is data loaded into this dataset?

Like mentioned above we are using TDB2Factory.connectDataset(String location) once when the REST-Controller is created.

Is it HTTP/1 or HTTP/2 connections to the server?

We only have HTTP/1 connections.

Are calling clients properly ending their closing their HTTP connections?

It looks like the connections are closed properly, we could not find any requests with connections that have been aborted before the response was sent.

from jena.

rvesse avatar rvesse commented on July 22, 2024

What is the server configuration - the stack trace has DatasetImpl so is it some kind of configuration file setup.

I am not entirely sure what you mean here. We are creating the dataset using something like:

Andy initially assumed that this was an issue with the Fuseki server provided by the project, likely because the potential related issue you referenced was specific to Fuseki.

Like mentioned above we are using TDB2Factory.connectDataset(String location) once when the REST-Controller is created.

Are you certain that is only gets created once? Depending on what REST framework you are using there's no guarantee that it doesn't create and destroy instances of your REST controller over the lifetime of your server, have you tried adding some logging to verify whether this is the case?

The REST framework used may be a pertinent detail here.

from jena.

afs avatar afs commented on July 22, 2024

Yes, I was assuming this was inside Fuseki because of the link to #1499.

TDB2Factory.connectDataset returns the same dataset on all calls for the same location. There's a computeIfAbsent cache.
There shouldn't be a need to create it more than once and keep an object reference.

Is the TDB2Factory.connectDataset always was same directory path?

I'm assuming that writes are not blocking before this problem is seen.

It looks like somewhere that is a code path which is not ending a read transaction code.
That's what was behind #1499.

from jena.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.