[ 
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)

Reply via email to