You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ambari.apache.org by "Robert Levas (JIRA)" <ji...@apache.org> on 2018/05/02 14:07:00 UTC

[jira] [Updated] (AMBARI-22827) db-purge-history operation fails with large DB size in postgres.

     [ https://issues.apache.org/jira/browse/AMBARI-22827?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Levas updated AMBARI-22827:
----------------------------------
    Fix Version/s: 2.7.0

> 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: JaySenSharma
>            Assignee: Robert Levas
>            Priority: Major
>             Fix For: 2.7.0
>
>
> 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
(v7.6.3#76005)