diff --git a/catalog/src/main/java/org/killbill/billing/catalog/CatalogSafetyInitializer.java b/catalog/src/main/java/org/killbill/billing/catalog/CatalogSafetyInitializer.java
index c04bb98..60f56e3 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/CatalogSafetyInitializer.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/CatalogSafetyInitializer.java
@@ -109,19 +109,23 @@ public class CatalogSafetyInitializer {
}
private static void initializeFieldWithValue(final Object obj, final Field f, final Object value) throws IllegalAccessException, ClassNotFoundException {
- f.setAccessible(true);
- if (f.get(obj) == null) {
- f.set(obj, value);
+ synchronized (perCatalogClassNonRequiredFields) {
+ f.setAccessible(true);
+ if (f.get(obj) == null) {
+ f.set(obj, value);
+ }
+ f.setAccessible(false);
}
- f.setAccessible(false);
}
private static void initializeArrayIfNull(final Object obj, final Field f) throws IllegalAccessException, ClassNotFoundException {
- f.setAccessible(true);
- if (f.get(obj) == null) {
- f.set(obj, getZeroLengthArrayInitializer(f));
+ synchronized (perCatalogClassNonRequiredFields) {
+ f.setAccessible(true);
+ if (f.get(obj) == null) {
+ f.set(obj, getZeroLengthArrayInitializer(f));
+ }
+ f.setAccessible(false);
}
- f.setAccessible(false);
}