[Geoserver-devel] [JIRA] (GEOS-7018) GWC disk quota JDBC transaction deadlock

Andrea Aime [Administrator] created an issue

GeoServer / BugGEOS-7018

GWC disk quota JDBC transaction deadlock

Issue Type:

BugBug

Assignee:

Unassigned

Created:

11/May/15 11:51 AM

Environment:

Found in a production instance with disk quota running on top of Postgresql

org.geowebcache.diskquota.jdbc.ParametricDataAccessException: Failed to execute statement UPDATE TILEPAGE SET FILL_FACTOR = :fillFactor WHERE KEY = :key AND FILL_FACTOR = :oldFillFactor with params: {oldFillFactor=0.1875, fillFactor=0.375, key=publiacqua_pg:contatore_ubicazione_set2014#EPSG:900913#image/png8@anonymised.com,18,16}; nested exception is org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [UPDATE TILEPAGE SET FILL_FACTOR = ? WHERE KEY = ? AND FILL_FACTOR = ?]; ERRORE: rilevato deadlock
  Detail: Il processo 32210 è in attesa di ShareLock su la transazione 1569439; bloccato dal processo 32207
Il processo 32207 è in attesa di ShareLock su la transazione 1569440; bloccato dal processo 32210
  Hint: Vedi i log del server per i dettagli della query.; nested exception is org.postgresql.util.PSQLException: ERRORE: rilevato deadlock
  Detail: Il processo 32210 è in attesa di ShareLock su la transazione 1569439; bloccato dal processo 32207
Il processo 32207 è in attesa di ShareLock su la transazione 1569440; bloccato dal processo 32210
  Hint: Vedi i log del server per i dettagli della query.
	at org.geowebcache.diskquota.jdbc.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:69)
	at org.geowebcache.diskquota.jdbc.JDBCQuotaStore.updatePageFillFactor(JDBCQuotaStore.java:555)
	at org.geowebcache.diskquota.jdbc.JDBCQuotaStore.access$400(JDBCQuotaStore.java:67)
	at org.geowebcache.diskquota.jdbc.JDBCQuotaStore$9.upsertTilePageFillFactor(JDBCQuotaStore.java:501)
	at org.geowebcache.diskquota.jdbc.JDBCQuotaStore$9.doInTransactionWithoutResult(JDBCQuotaStore.java:448)
	at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
	at org.geowebcache.diskquota.jdbc.JDBCQuotaStore.addToQuotaAndTileCounts(JDBCQuotaStore.java:436)
	at org.geoserver.gwc.ConfigurableQuotaStore.addToQuotaAndTileCounts(ConfigurableQuotaStore.java:89)
	at org.geowebcache.diskquota.QueuedQuotaUpdatesConsumer.commit(QueuedQuotaUpdatesConsumer.java:306)
	at org.geowebcache.diskquota.QueuedQuotaUpdatesConsumer.checkAggregatedTimeout(QueuedQuotaUpdatesConsumer.java:287)
	at org.geowebcache.diskquota.QueuedQuotaUpdatesConsumer.checkAggregatedTimeouts(QueuedQuotaUpdatesConsumer.java:244)
	at org.geowebcache.diskquota.QueuedQuotaUpdatesConsumer.call(QueuedQuotaUpdatesConsumer.java:192)
	at org.geowebcache.diskquota.QueuedQuotaUpdatesConsumer.call(QueuedQuotaUpdatesConsumer.java:24)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [UPDATE TILEPAGE SET FILL_FACTOR = ? WHERE KEY = ? AND FILL_FACTOR = ?]; ERRORE: rilevato deadlock
  Detail: Il processo 32210 è in attesa di ShareLock su la transazione 1569439; bloccato dal processo 32207
Il processo 32207 è in attesa di ShareLock su la transazione 1569440; bloccato dal processo 32210
  Hint: Vedi i log del server per i dettagli della query.; nested exception is org.postgresql.util.PSQLException: ERRORE: rilevato deadlock
  Detail: Il processo 32210 è in attesa di ShareLock su la transazione 1569439; bloccato dal processo 32207
Il processo 32207 è in attesa di ShareLock su la transazione 1569440; bloccato dal processo 32210
  Hint: Vedi i log del server per i dettagli della query.
	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:265)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:834)
	at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:260)
	at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:264)
	at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:243)
	at org.geowebcache.diskquota.jdbc.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:67)
	... 17 more
Caused by: org.postgresql.util.PSQLException: ERRORE: rilevato deadlock
  Detail: Il processo 32210 è in attesa di ShareLock su la transazione 1569439; bloccato dal processo 32207
Il processo 32207 è in attesa di ShareLock su la transazione 1569440; bloccato dal processo 32210
  Hint: Vedi i log del server per i dettagli della query.
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
	at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
	at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
	at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
	at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818)
	at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
	... 23 more

Priority:

MediumMedium

Reporter:

Andrea Aime [Administrator]

Add Comment

Add Comment

This message was sent by Atlassian JIRA (v6.5-OD-03-002#65000-sha1:b8f65f8)

Atlassian logo