Skip to content

Commit

Permalink
Response sensibly while Database is down
Browse files Browse the repository at this point in the history
  • Loading branch information
Tillerino committed Nov 19, 2024
1 parent c8d6cdc commit 7eddd5c
Showing 1 changed file with 7 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.SQLRecoverableException;
import java.time.Duration;
import java.util.Optional;
import java.util.Properties;
Expand All @@ -12,16 +13,18 @@
import javax.inject.Named;
import javax.inject.Singleton;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.dbcp2.PoolableConnection;
import org.apache.commons.dbcp2.PoolableConnectionFactory;
import org.apache.commons.dbcp2.PoolingDataSource;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.tillerino.mormon.Persister.Action;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import lombok.NonNull;
import org.tillerino.ppaddict.util.MaintenanceException;

@Slf4j
@Singleton
public class DatabaseManager implements AutoCloseable {
private final Properties properties;
Expand Down Expand Up @@ -99,15 +102,14 @@ public Database getDatabase() {
return new Database(pool.borrowObject());
} catch (RuntimeException | Error e) {
throw e;
} catch (SQLRecoverableException e) {
log.warn("Recoverable exception while borrowing connection. Assuming maintenance.", e);
throw new MaintenanceException("Database maintenance");
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public PoolingDataSource<PoolableConnection> getPoolingDatasource() {
return new PoolingDataSource<>(pool);
}

@Override
public void close() {
pool.close();
Expand Down

0 comments on commit 7eddd5c

Please sign in to comment.