From 534a1d4112aee0118334fbb540dfc9c23b6fab28 Mon Sep 17 00:00:00 2001 From: Greg Schoeninger Date: Thu, 7 Jul 2022 10:00:14 -0700 Subject: [PATCH] add retry logic to the client so we can deploy during a push --- Dockerfile | 4 ++-- docker-compose.yml | 5 +---- src/lib/src/index/indexer.rs | 17 ++++++++++++++++- traefik.yml | 11 +++++++++++ 4 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 traefik.yml diff --git a/Dockerfile b/Dockerfile index e8ac97bc8..a0438fab8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,5 +24,5 @@ FROM debian:bullseye-slim AS runtime WORKDIR /oxen-server COPY --from=builder /usr/src/oxen-server/target/release/oxen-server /usr/local/bin ENV SYNC_DIR=/var/oxen/data -EXPOSE 3000 -CMD ["oxen-server", "start"] \ No newline at end of file +EXPOSE 3001 +CMD ["oxen-server", "start", "-p", "3001"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3170404fe..9f6ef975c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,16 +3,13 @@ services: reverse-proxy: # The official v2 Traefik docker image image: traefik:v2.8 - # Enables the web UI and tells Traefik to listen to docker - command: --providers.docker # --api.insecure=true ports: # The HTTP port - "3000:80" - # The Web UI (enabled by --api.insecure=true) - # - "8080:8080" volumes: # So that Traefik can listen to the Docker events - /var/run/docker.sock:/var/run/docker.sock + - ./traefik.yml:/traefik.yml oxen: image: oxen/server:0.1.3 volumes: diff --git a/src/lib/src/index/indexer.rs b/src/lib/src/index/indexer.rs index c55c7a5bc..a10ed4b4c 100644 --- a/src/lib/src/index/indexer.rs +++ b/src/lib/src/index/indexer.rs @@ -3,6 +3,7 @@ use indicatif::ProgressBar; use rayon::prelude::*; use std::fs; use std::path::Path; +use std::{thread, time}; use crate::api; use crate::constants::HISTORY_DIR; @@ -206,7 +207,21 @@ impl Indexer { match self.push_entry(&entry_writer, entry) { Ok(_) => {} Err(err) => { - log::error!("Error pushing entry {:?} Err {}", entry, err) + // Retry logic + let total_tries = 3; + let mut num_tries = 0; + for i in 0..total_tries { + let duration = time::Duration::from_secs(i+1); + thread::sleep(duration); + if let Ok(_) = self.push_entry(&entry_writer, entry) { + break; + } + num_tries += 1; + } + + if num_tries == total_tries { + log::error!("Error pushing entry {:?} Err {}", entry, err); + } } } bar.inc(1); diff --git a/traefik.yml b/traefik.yml new file mode 100644 index 000000000..aa83e7dda --- /dev/null +++ b/traefik.yml @@ -0,0 +1,11 @@ +# log: +# level: DEBUG +# filepath: "/etc/traefik/log/traefik.log" +api: + dashboard: true + insecure: false + debug: true +providers: + docker: + exposedByDefault: false +