[ https://issues.apache.org/jira/browse/AMBARI-22827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17298035#comment-17298035 ]
Tamas Payer commented on AMBARI-22827: -------------------------------------- Addendum of this fix "AMBARI-22827. DB Cleanup scripts are using IN clauses" was merged in PR#3291. > db-purge-history operation fails with large DB size in postgres. > ---------------------------------------------------------------- > > Key: AMBARI-22827 > URL: https://issues.apache.org/jira/browse/AMBARI-22827 > Project: Ambari > Issue Type: Bug > Components: ambari-server > Affects Versions: trunk, 2.5.2 > Reporter: Jay SenSharma > Assignee: Sandor Molnar > Priority: Major > Labels: pull-request-available > Fix For: 2.7.0 > > Time Spent: 1h 40m > Remaining Estimate: 0h > > 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. > {code} > 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 > {code} > 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. -- This message was sent by Atlassian Jira (v8.3.4#803005)