killbill-memoizeit

catalog: work around race condition Make sure to clear caches

11/30/2018 7:01:54 AM

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/api/user/DefaultCatalogUserApi.java b/catalog/src/main/java/org/killbill/billing/catalog/api/user/DefaultCatalogUserApi.java
index d883ea4..0a76a94 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/api/user/DefaultCatalogUserApi.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/api/user/DefaultCatalogUserApi.java
@@ -150,8 +150,8 @@ public class DefaultCatalogUserApi implements CatalogUserApi {
                 }
             }
 
-            catalogCache.clearCatalog(internalTenantContext);
             tenantApi.addTenantKeyValue(TenantKey.CATALOG.toString(), catalogXML, callContext);
+            catalogCache.clearCatalog(internalTenantContext);
         } catch (final TenantApiException e) {
             throw new CatalogApiException(e);
         } catch (final ValidationException e) {
@@ -179,8 +179,8 @@ public class DefaultCatalogUserApi implements CatalogUserApi {
                                                   new CatalogUpdater(currentCatalog) :
                                                   new CatalogUpdater(getSafeFirstCatalogEffectiveDate(effectiveDate, callContext), null);
 
-            catalogCache.clearCatalog(internalTenantContext);
             tenantApi.updateTenantKeyValue(TenantKey.CATALOG.toString(), catalogUpdater.getCatalogXML(), callContext);
+            catalogCache.clearCatalog(internalTenantContext);
         } catch (TenantApiException e) {
             throw new CatalogApiException(e);
         }
@@ -197,8 +197,8 @@ public class DefaultCatalogUserApi implements CatalogUserApi {
                                                   new CatalogUpdater(getSafeFirstCatalogEffectiveDate(effectiveDate, callContext), descriptor.getCurrency());
             catalogUpdater.addSimplePlanDescriptor(descriptor);
 
-            catalogCache.clearCatalog(internalTenantContext);
             tenantApi.updateTenantKeyValue(TenantKey.CATALOG.toString(), catalogUpdater.getCatalogXML(), callContext);
+            catalogCache.clearCatalog(internalTenantContext);
         } catch (TenantApiException e) {
             throw new CatalogApiException(e);
         }