diff --git a/service/pom.xml b/service/pom.xml
index 879cf92b9..6732c2251 100644
--- a/service/pom.xml
+++ b/service/pom.xml
@@ -43,10 +43,6 @@
       io.dropwizard
       dropwizard-core
     
-    
-      io.dropwizard
-      dropwizard-jdbi3
-    
     
       io.dropwizard
       dropwizard-auth
@@ -118,19 +114,10 @@
       logstash-logback-encoder
     
 
-    
-      org.jdbi
-      jdbi3-core
-    
-
     
       io.dropwizard.metrics
       metrics-core
     
-    
-      io.dropwizard.metrics
-      metrics-jdbi3
-    
     
       io.dropwizard.metrics
       metrics-healthchecks
diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java
deleted file mode 100644
index e06e8749f..000000000
--- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2013-2020 Signal Messenger, LLC
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-package org.whispersystems.textsecuregcm.storage;
-
-import com.codahale.metrics.SharedMetricRegistries;
-import org.jdbi.v3.core.Jdbi;
-import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
-import org.whispersystems.textsecuregcm.util.CircuitBreakerUtil;
-import org.whispersystems.textsecuregcm.util.Constants;
-
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-import io.github.resilience4j.circuitbreaker.CircuitBreaker;
-
-public class FaultTolerantDatabase {
-
-  private final Jdbi           database;
-  private final CircuitBreaker circuitBreaker;
-
-  public FaultTolerantDatabase(String name, Jdbi database, CircuitBreakerConfiguration circuitBreakerConfiguration) {
-    this.database       = database;
-    this.circuitBreaker = CircuitBreaker.of(name, circuitBreakerConfiguration.toCircuitBreakerConfig());
-
-    CircuitBreakerUtil.registerMetrics(SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME),
-                                       circuitBreaker,
-                                       FaultTolerantDatabase.class);
-  }
-
-  public void use(Consumer consumer) {
-    this.circuitBreaker.executeRunnable(() -> consumer.accept(database));
-  }
-
-  public  T with(Function consumer) {
-    return this.circuitBreaker.executeSupplier(() -> consumer.apply(database));
-  }
-
-  public Jdbi getDatabase() {
-    return database;
-  }
-}
diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsTest.java
index f1e2a8c83..03ec5b583 100644
--- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsTest.java
+++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsTest.java
@@ -16,7 +16,6 @@ import static org.mockito.Mockito.when;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.uuid.UUIDComparator;
-import io.github.resilience4j.circuitbreaker.CallNotPermittedException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -27,14 +26,11 @@ import java.util.Random;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
-import org.jdbi.v3.core.transaction.TransactionException;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
-import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
 import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration;
 import org.whispersystems.textsecuregcm.tests.util.AccountsHelper;
 import org.whispersystems.textsecuregcm.tests.util.DevicesHelper;
@@ -494,60 +490,6 @@ class AccountsTest {
     assertThat(retrieved.isPresent()).isFalse();
   }
 
-  @Test
-  @Disabled("Need fault tolerant dynamodb")
-  void testBreaker() throws InterruptedException {
-
-    CircuitBreakerConfiguration configuration = new CircuitBreakerConfiguration();
-    configuration.setWaitDurationInOpenStateInSeconds(1);
-    configuration.setRingBufferSizeInHalfOpenState(1);
-    configuration.setRingBufferSizeInClosedState(2);
-    configuration.setFailureRateThreshold(50);
-
-    final DynamoDbClient client = mock(DynamoDbClient.class);
-    final DynamoDbAsyncClient asyncClient = mock(DynamoDbAsyncClient.class);
-
-    when(client.transactWriteItems(any(TransactWriteItemsRequest.class)))
-        .thenThrow(RuntimeException.class);
-
-    when(asyncClient.updateItem(any(UpdateItemRequest.class)))
-        .thenReturn(CompletableFuture.failedFuture(new RuntimeException()));
-
-    Accounts accounts = new Accounts(mockDynamicConfigManager, client, asyncClient, ACCOUNTS_TABLE_NAME, NUMBER_CONSTRAINT_TABLE_NAME,
-        PNI_CONSTRAINT_TABLE_NAME, USERNAME_CONSTRAINT_TABLE_NAME, SCAN_PAGE_SIZE);
-    Account account = generateAccount("+14151112222", UUID.randomUUID(), UUID.randomUUID());
-
-    try {
-      accounts.update(account);
-      throw new AssertionError();
-    } catch (TransactionException e) {
-      // good
-    }
-
-    try {
-      accounts.update(account);
-      throw new AssertionError();
-    } catch (TransactionException e) {
-      // good
-    }
-
-    try {
-      accounts.update(account);
-      throw new AssertionError();
-    } catch (CallNotPermittedException e) {
-      // good
-    }
-
-    Thread.sleep(1100);
-
-    try {
-      accounts.update(account);
-      throw new AssertionError();
-    } catch (TransactionException e) {
-      // good
-    }
-  }
-
   @Test
   void testCanonicallyDiscoverableSet() {
     Device device = generateDevice(1);