On 18/03/2025 22:58, Fabio Luis - Vanguarda TI wrote:
> From time to time I receive the message "BLOB not found".
Looking at the stacktrace, it was the server which reported the blob was
not found.
This would mean that Firebird sent a blob id in the query result that
doesn't actually exist, or it was deleted in the mean time, or Jaybird
decoded or encoded it wrong (but if that were the case, I'd expect all,
or at least most, of your blobs to be not found).
Blobs shouldn't be deleted as long as a transaction is active, and given
you could access the result set, the transaction was still active, or
you used a holdable result set (which would cache the blob locally
before commit).
Without a reproducible case, it is hard to be certain, but my first
guess would be a bug in Firebird (though that might be my bias).
You could try upgrading to Firebird 5.0.2, but as there was no
blob-related fixes as far as I can see, I don't expect that to change
anything.
Does the query involve any expressions or calculated columns that
generate (temporary) blobs?
Mark
> Environment:
>
> * APP server
> o Rocky Linux release 8.5 (*aarch64*)
> o docker-ce-20.10.12-3
> o zulu-openjdk8.0.302
> o payara-server-full-5.2022.3 (JDBC connection pool | Eclipse
> Persistence Services - 2.7.9.payara-p2)
> o jaybird-5.0.6.java8.jar
> * DB server
> o Rocky Linux release 8.5 (x86_64)
> o Firebird 5.0 (ver. LI-V5.0.1.1469)
> * Both servers are on the same VPC using internal IP addresses to
> communicate each other.
>
>
> Stacktrace:
>
> Local Exception Stack: Exception [EclipseLink-4002] (Eclipse Persistence
> Services - 2.7.9.payara-p2):
> org.eclipse.persistence.exceptions.DatabaseException Internal Exception:
> java.sql.SQLException: BLOB not found [SQLState:HY000, ISC error
> code:335544382] Error Code: 335544382 Call: SELECT *MY_FIELDS* FROM
> *MY_TABLE* WHERE *SOME_CONDITIONS* ORDER BY *FIELD* ASC bind => [XXXX,
> XXXX, 11111111111111, 2025-03-15 23:52:40.145] Query:
> ReadAllQuery(name="*jpaQueryName*" referenceClass=*MyClass* sql="SELECT
> *MY_FIELDS* FROM *MY_TABLE* WHERE *SOME_CONDITIONS* ORDER BY
> *FIELD* ASC") at
> org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.getObject(DatabaseAccessor.java:1337) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.fetchRow(DatabaseAccessor.java:1083) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.processResultSet(DatabaseAccessor.java:775) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:664) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:567) at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2105) at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:603) at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:265) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:277) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:263) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:334) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:746) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2776) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:2729) at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:584) at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1232) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:911) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1191) at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:485) at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1279) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:3004) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1898) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1880) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1845) at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:262) at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:482) at *MyCompanyStackCall* at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLException: BLOB not found [SQLState:HY000, ISC error code:335544382] at org.firebirdsql.gds.ng.FbExceptionBuilder$Type$1.createSQLException(FbExceptionBuilder.java:618) at org.firebirdsql.gds.ng.FbExceptionBuilder.toFlatSQLException(FbExceptionBuilder.java:384) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readStatusVector(AbstractWireOperations.java:154) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readStatusVector(AbstractWireOperations.java:99) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.processOperation(AbstractWireOperations.java:209) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readOperationResponse(AbstractWireOperations.java:175) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readResponse(AbstractWireOperations.java:169) at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readGenericResponse(AbstractWireOperations.java:283) at org.firebirdsql.gds.ng.wire.AbstractFbWireDatabase.readGenericResponse(AbstractFbWireDatabase.java:206) at org.firebirdsql.gds.ng.wire.version10.V10InputBlob.open(V10InputBlob.java:76) at org.firebirdsql.gds.impl.GDSHelper.openBlob(GDSHelper.java:137) at org.firebirdsql.jdbc.FBBlob.openBlob(FBBlob.java:200) at org.firebirdsql.jdbc.FBBlobInputStream.(FBBlobInputStream.java:53) at org.firebirdsql.jdbc.FBBlob.getBinaryStream(FBBlob.java:373) at org.firebirdsql.jdbc.field.FBLongVarCharField.getBytes(FBLongVarCharField.java:125) at org.firebirdsql.jdbc.field.FBLongVarCharField.getString(FBLongVarCharField.java:171) at org.firebirdsql.jdbc.field.FBStringField.getObject(FBStringField.java:79) at org.firebirdsql.jdbc.field.FBLongVarCharField.getObject(FBLongVarCharField.java:44) at org.firebirdsql.jdbc.FBResultSet.getObject(FBResultSet.java:530) at com.sun.gjc.spi.base.ResultSetWrapper.getObject(ResultSetWrapper.java:830) at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.getObjectFromResultSet(DatabasePlatform.java:1454) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.getObject(DatabaseAccessor.java:1308) ... 36 more Caused by: org.firebirdsql.jdbc.FBSQLExceptionInfo: BLOB not found
--
Mark Rotteveel