private void updateTempStatementWithRetry(TempStatementEntity entity, int retry) throws IOException { try { crud.save(entity); } catch (WriteConflictException ise) { logger.warn("Write conflict to update temp statement" + entity.statementId + " at try " + retry + ", will retry..."); if (retry >= 7) { logger.error("Retried 7 times till got error, abandoning...", ise); throw ise; } TempStatementEntity reload = crud.reload(entity.resourceName()); entity = prepareToOverwrite(entity, reload); updateTempStatementWithRetry(entity, ++retry); } }
public static String concatResourcePath(String statementId) { return concatResourcePath(DEFAULT_SESSION_ID, statementId); }
private void updateTempStatementWithRetry(TempStatementEntity entity, int retry) throws IOException { try { crud.save(entity); } catch (WriteConflictException ise) { logger.warn("Write conflict to update temp statement" + entity.statementId + " at try " + retry + ", will retry..."); if (retry >= 7) { logger.error("Retried 7 times till got error, abandoning...", ise); throw ise; } TempStatementEntity reload = crud.reload(entity.resourceName()); entity = prepareToOverwrite(entity, reload); updateTempStatementWithRetry(entity, ++retry); } }
public String concatResourcePath() { return concatResourcePath(this.sessionId, this.statementId); }
/** * Get the key to localmapping * @return */ public String getMapKey() { return resourceName(); }
public void updateTempStatement(String sessionId, String statementId, String statement) throws IOException { try (AutoLock l = lock.lockForWrite()) { TempStatementEntity entity = new TempStatementEntity(sessionId, statementId, statement); entity = prepareToOverwrite(entity, getTempStatEntity(sessionId, statementId)); updateTempStatementWithRetry(entity, 0); } }
public void removeTempStatement(String session, String statementId) throws IOException { try (AutoLock l = lock.lockForWrite()) { crud.delete(TempStatementEntity.resourceName(session, statementId)); } }
private TempStatementEntity prepareToOverwrite(TempStatementEntity entity, TempStatementEntity origin) { if (origin == null) { // create entity.updateRandomUuid(); } else { // update entity.setUuid(origin.getUuid()); entity.setLastModified(origin.getLastModified()); } return entity; }
public TempStatementEntity getTempStatEntity(String sessionId, String statementId) { try (AutoLock l = lock.lockForRead()) { return tmpStatMap.get(TempStatementEntity.resourceName(sessionId, statementId)); } }
public static String concatResourcePath(String statementId) { return concatResourcePath(DEFAULT_SESSION_ID, statementId); }
public String concatResourcePath() { return concatResourcePath(this.sessionId, this.statementId); }
public void removeTempStatement(String session, String statementId) throws IOException { try (AutoLock l = lock.lockForWrite()) { crud.delete(TempStatementEntity.resourceName(session, statementId)); } }
public void updateTempStatement(String sessionId, String statementId, String statement) throws IOException { try (AutoLock l = lock.lockForWrite()) { TempStatementEntity entity = new TempStatementEntity(sessionId, statementId, statement); entity = prepareToOverwrite(entity, getTempStatEntity(sessionId, statementId)); updateTempStatementWithRetry(entity, 0); } }
/** * Get the key to localmapping * @return */ public String getMapKey() { return resourceName(); }
public TempStatementEntity getTempStatEntity(String sessionId, String statementId) { try (AutoLock l = lock.lockForRead()) { return tmpStatMap.get(TempStatementEntity.resourceName(sessionId, statementId)); } }
private TempStatementEntity prepareToOverwrite(TempStatementEntity entity, TempStatementEntity origin) { if (origin == null) { // create entity.updateRandomUuid(); } else { // update entity.setUuid(origin.getUuid()); entity.setLastModified(origin.getLastModified()); } return entity; }