Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
trunk, 2.5.2
Description
When the ambari DB size is too large (around 1+ GB) then the db-purge-history may fail with the postgres error Tried to send an out-of-range integer as a 2-byte value
Following error trace is from Ambari 2.5.2 however the same might cause in higher version as well.
Internal Exception: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. Error Code: 0 Call: SELECT DISTINCT host_task_id FROM topology_logical_task WHERE (physical_task_id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, .... .... ..... ...... ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) Query: ReportQuery(name="TopologyLogicalTaskEntity.findHostTaskIdsByPhysicalTaskIds" referenceClass=TopologyLogicalTaskEntity sql="SELECT DISTINCT host_task_id FROM topology_logical_task WHERE (physical_task_id IN ?)") at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.processExceptionForCommError(DatabaseAccessor.java:1620) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:676) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:560) at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2055) at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:570) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:299) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:694) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2740) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllReportQueryRows(ExpressionQueryMechanism.java:2677) at org.eclipse.persistence.queries.ReportQuery.executeDatabaseQuery(ReportQuery.java:852) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:904) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1134) at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:460) at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1222) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857) at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1927) at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:694) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5536) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1893) at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1927) at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:694) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5536) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1893) at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1927) at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:694) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5536) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1893) at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1927) at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:694) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5536) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1893) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804) at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258) at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:473) at org.apache.ambari.server.orm.dao.DaoUtils.selectList(DaoUtils.java:60) at org.apache.ambari.server.orm.dao.TopologyLogicalTaskDAO.findHostTaskIdsByPhysicalTaskIds(TopologyLogicalTaskDAO.java:56) at org.apache.ambari.server.orm.AmbariLocalSessionInterceptor.invoke(AmbariLocalSessionInterceptor.java:53) at org.apache.ambari.server.orm.dao.RequestDAO.cleanup(RequestDAO.java:403) at org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:128) at org.apache.ambari.server.cleanup.CleanupServiceImpl.cleanup(CleanupServiceImpl.java:82) at org.apache.ambari.server.cleanup.CleanupDriver.main(CleanupDriver.java:89) Caused by: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:281) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:302) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:1009) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644) ... 43 more Caused by: java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 43222 at org.postgresql.core.PGStream.SendInteger2(PGStream.java:196) at org.postgresql.core.v3.QueryExecutorImpl.sendParse(QueryExecutorImpl.java:1242) at org.postgresql.core.v3.QueryExecutorImpl.sendOneQuery(QueryExecutorImpl.java:1547) at org.postgresql.core.v3.QueryExecutorImpl.sendQuery(QueryExecutorImpl.java:1100) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:253) ... 48 more
Looks like Postgres side limitation of around 32k parameters. However Ambari can send the large number of parameters in batch instead of sending it as bunch.