incubator-jena-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andy Seaborne <>
Subject Fwd: UnsupportedOperationException when using renameResource on a TDB-backed graph
Date Thu, 09 Jun 2011 16:08:42 GMT
(jena-dev@i.a.o, cc'ed to Steve)


TDB does not support any kind of Iterator.remove. It's rather messy and 
in some cases not possible (delete from dynamic union) which would have 
to be special cased.  i.e. adding ideal streaming support is quite a lot 
of work.

For renameResource, would it be reasonable to switch to a design which 
is "gather a chunlk of things to be deleted, delete them, insert new 
stuff" so that iterator.remove isn't needed?

The TDB bulk handler for delete does this is chunks of a few 1000 items 
to avoid the iterator.remove problem but that is easy by the nature of 
the deletion.  This would work for ResourceUtils.renameResource because 
it's similarly idempotent and chunkable.

But if it is really necessary for a streaming based rename, then TDB 
could be changed at the expense of a lot of work and development latency 
- there are a lot of iterators to check.

Are there any other operations that do iterator.remove style processing 
I need to check?

> Versions:
> Jena 2.6.4
> TDB 0.8.10
> I also tried Jena 2.6.5-SNAPSHOT as of June 6, 2011, for kicks. The stacktrace is slightly
different, due to a rewrite of RenameResource, but the result is the same UnsupportedOperationException.
> If it's helpful, I can pack up a unit test to demonstrate that renameResource fails for
a TDB-backed model, but works fine on a model created by ModelFactory.createDefaultModel().

TDB has a in-memory mode - really useful for testing.


View raw message