From c5b323f78e599b670334efab32adc6dda9512332 Mon Sep 17 00:00:00 2001 From: ddubyk Date: Tue, 20 Aug 2024 21:39:36 +0300 Subject: [PATCH 1/2] Fix bug caused by incorrect usage of Promise. --- .../server/currency/CurrencyConversionService.java | 14 +++++++++----- .../vertx/verticles/server/DaemonVerticle.java | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/prebid/server/currency/CurrencyConversionService.java b/src/main/java/org/prebid/server/currency/CurrencyConversionService.java index 5adba78d6e8..74b148dee25 100644 --- a/src/main/java/org/prebid/server/currency/CurrencyConversionService.java +++ b/src/main/java/org/prebid/server/currency/CurrencyConversionService.java @@ -79,19 +79,23 @@ public void initialize(Promise initializePromise) { currencyServerUrl, defaultTimeout, httpClient)); - populatesLatestCurrencyRates(currencyServerUrl, defaultTimeout, httpClient); + populatesLatestCurrencyRates(currencyServerUrl, defaultTimeout, httpClient) + .onComplete(initializePromise); externalConversionProperties.getMetrics().createCurrencyRatesGauge(this::isRatesStale); + } else { + initializePromise.tryComplete(); } - - initializePromise.tryComplete(); } /** * Updates latest currency rates by making a call to currency server. */ - private void populatesLatestCurrencyRates(String currencyServerUrl, Long defaultTimeout, HttpClient httpClient) { - httpClient.get(currencyServerUrl, defaultTimeout) + private Future populatesLatestCurrencyRates(String currencyServerUrl, + Long defaultTimeout, + HttpClient httpClient) { + + return httpClient.get(currencyServerUrl, defaultTimeout) .map(this::processResponse) .map(this::updateCurrencyRates) .otherwise(this::handleErrorResponse); diff --git a/src/main/java/org/prebid/server/vertx/verticles/server/DaemonVerticle.java b/src/main/java/org/prebid/server/vertx/verticles/server/DaemonVerticle.java index fe954cd3354..c6175ccaafa 100644 --- a/src/main/java/org/prebid/server/vertx/verticles/server/DaemonVerticle.java +++ b/src/main/java/org/prebid/server/vertx/verticles/server/DaemonVerticle.java @@ -33,12 +33,12 @@ public DaemonVerticle(List initializables, List startPromise) { - startPromise.handle(all(initializables, initializable -> initializable::initialize)); + all(initializables, initializable -> initializable::initialize).onComplete(startPromise); } @Override public void stop(Promise stopPromise) { - stopPromise.handle(all(closeables, closeable -> closeable::close)); + all(closeables, closeable -> closeable::close).onComplete(stopPromise); } private static Future all(Collection entries, From 0e52917d28a0a9c5c5e530ecf1b326469bf26f00 Mon Sep 17 00:00:00 2001 From: ddubyk Date: Wed, 21 Aug 2024 12:48:09 +0300 Subject: [PATCH 2/2] Revert CurrencyConversionService changes. --- .../server/currency/CurrencyConversionService.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/prebid/server/currency/CurrencyConversionService.java b/src/main/java/org/prebid/server/currency/CurrencyConversionService.java index 74b148dee25..5adba78d6e8 100644 --- a/src/main/java/org/prebid/server/currency/CurrencyConversionService.java +++ b/src/main/java/org/prebid/server/currency/CurrencyConversionService.java @@ -79,23 +79,19 @@ public void initialize(Promise initializePromise) { currencyServerUrl, defaultTimeout, httpClient)); - populatesLatestCurrencyRates(currencyServerUrl, defaultTimeout, httpClient) - .onComplete(initializePromise); + populatesLatestCurrencyRates(currencyServerUrl, defaultTimeout, httpClient); externalConversionProperties.getMetrics().createCurrencyRatesGauge(this::isRatesStale); - } else { - initializePromise.tryComplete(); } + + initializePromise.tryComplete(); } /** * Updates latest currency rates by making a call to currency server. */ - private Future populatesLatestCurrencyRates(String currencyServerUrl, - Long defaultTimeout, - HttpClient httpClient) { - - return httpClient.get(currencyServerUrl, defaultTimeout) + private void populatesLatestCurrencyRates(String currencyServerUrl, Long defaultTimeout, HttpClient httpClient) { + httpClient.get(currencyServerUrl, defaultTimeout) .map(this::processResponse) .map(this::updateCurrencyRates) .otherwise(this::handleErrorResponse);