Subject Re: [Firebird-Java] Re: 335544329 invalid BLOB ID
Author Roman Rokytskyy
> No, the transaction stays with a single thread, the operations are
> synchronous within that thread (different parts are not executed by
> different threads).

...

> No, but it takes so long for this operation to reproduce that it would
> take a long time to find out if that made a difference. For example, I
> can create a loop inserting blobs with a different sequence dedicated
> to a single thread (using many threads), run it for a couple of days
> continuously and still never see the error. Makes me wonder if it is
> not a networking issue. For example, if a connection is interrupted at
> just the right time if it could cause this behavior.

Unlikely. The only thing that comes to my mind is that Jaybird (?) somehow
mixes the BLOB IDs it received during creation. However I have no idea how
this could happen, since FBField instances (they hold the references to BLOB
IDs) are referenced from the AbstractStatement instance, which in turn is
referenced by AbstractConnection reference (and anyway they have direct
reference on the corresponding physical connection). So, the reference on
BLOB ID remains "local" to the thread in which code is executed...

Sorry, I have no real idea how to help you... Though you can change the
transaction isolation level (to ensure that this is somehow related to the
garbage collector in Firebird). And you can try to switch to either NATIVE
or LOCAL mode to ensure that no error ever happens on the wire level (though
I doubt it).

Roman