Quoting Niclas Hedhman <[email protected]>:

On Mon, Jan 4, 2010 at 5:30 PM, Niclas Hedhman <[email protected]> wrote:

But, no slow performance must be a general problem. I am not happy
that deleting an entity in Qi4j will take 100s of milliseconds.

Brrrrrr....

2) are you sure the latest Sesame is used? The latest release has increased
performance quite a lot, so make sure that not an older version is used.

2.3-pr1 was used. I'll check with 2.3.0 tomorrow.

2.3.0 is the same result.



I ran to this same issue myself a couple days ago. Well, my issue is regarding strictly to creating of entities. I'm not sure about deleting, as it seems that it gets stuck at

41188 [main] INFO org.openrdf.sail.nativerdf.NativeStore - Waiting for active connections to close before shutting down...

for indefinite amount of time whenever I shut down - maybe I should have waited even longer. Actually came to think about it, this might be exactly that - the other thread is doing deleting, which is taking huge amount of time, and when shutdown is initated from another thread, it waits till that gets completed - apparently a very long time.

The problem manifested itself already with couple thousand entities or so. And that wasn't even a fairly large usecase in our project. Of course I might need to re-work on architecture a bit and maybe turn those entities into value-composites or something.

Anyway, I was using old (2.2.4) Sesame. Perhaps I should try a newer version, but because of my discovery, I don't think it will help much. Here's the case.

I downloaded and installed TPTP for Eclipse (profiling plug-in). Having lots of trouble running it (our code was Eclipse plug-in in itself, so had to profile the whole thing as Eclipse application, thus ending up with profiler eating over 2.5GB of memory), it finally crashed and corrupted itself, so I am now unable to run further tests without a proper cleanup of my Eclipse (gee, thanks). Before that happened though, I managed to find out that when the commit of the unit of work began, roughly half of the time was spent somewhere in info.aduna.concurrent.locks.Lock.getExclusiveLock() . I tried to find source for that component but it seems there isn't available one. But, because of the nature of this concurrent problem (it sometimes actually doesn't take long time to commit uow at all - time varies between 3 sec and 1min with current load), and Niclas reporting same performance issues in 2.3.0, I doubt the problem has been solved. Additionally, I tried to divide my process into several smaller uow's but it didn't help.

So, as a conclusion, it seems that Sesame has got some concurrency problems regarding locking (possibly a file? or some other resource?). I did not have time nor energy to perform deep-in investigation as to what kind of problem exactly there is. I guess next step would be either localizing the problem and reporting it and hope for a (proper!) fix, or continue to endure it and try to work around it and use a little 'hacks', or step away from Sesame.


_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to