This is an automated email from the ASF dual-hosted git repository.

yasithdev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/master by this push:
     new 6f0bca0796 fix: seed default sharing data idempotently without ERROR 
noise (#625)
6f0bca0796 is described below

commit 6f0bca0796aeb08817ad106ef061dd2df5238e78
Author: Yasith Jayawardana <[email protected]>
AuthorDate: Sat Jun 6 12:47:41 2026 -0400

    fix: seed default sharing data idempotently without ERROR noise (#625)
    
    On every server restart against an existing DB, default-data seeding re-ran
    and SharingService.create{Domain,EntityType,PermissionType} logged the
    expected duplicate at ERROR with a full stack trace. Make those creates
    idempotent: on an existing entry, log one clean WARN and return the existing
    id instead of throwing/wrapping. The seeder logs "Ensured" and surfaces
    genuine failures at ERROR.
---
 .../airavata/orchestration/util/ExpCatalogDBInitConfig.java      | 4 ++--
 .../java/org/apache/airavata/sharing/service/SharingService.java | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExpCatalogDBInitConfig.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExpCatalogDBInitConfig.java
index 5fbd5ddff3..5cafe49442 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExpCatalogDBInitConfig.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExpCatalogDBInitConfig.java
@@ -90,9 +90,9 @@ public class ExpCatalogDBInitConfig implements DBInitConfig {
     private void tryCreate(String label, ThrowingRunnable action) {
         try {
             action.run();
-            logger.info("Created {}", label);
+            logger.info("Ensured {}", label);
         } catch (Exception e) {
-            logger.debug("{} already exists: {}", label, e.getMessage());
+            logger.error("Failed to ensure {}: {}", label, e.getMessage(), e);
         }
     }
 
diff --git 
a/airavata-api/sharing-service/src/main/java/org/apache/airavata/sharing/service/SharingService.java
 
b/airavata-api/sharing-service/src/main/java/org/apache/airavata/sharing/service/SharingService.java
index c196acb50a..5db2886f9a 100644
--- 
a/airavata-api/sharing-service/src/main/java/org/apache/airavata/sharing/service/SharingService.java
+++ 
b/airavata-api/sharing-service/src/main/java/org/apache/airavata/sharing/service/SharingService.java
@@ -83,6 +83,9 @@ public class SharingService implements SharingFacade, 
SharingProvider {
             permissionType.setUpdatedTime(System.currentTimeMillis());
             (new PermissionTypeRepository()).create(permissionType);
 
+            return domain.getDomainId();
+        } catch (DuplicateEntryException e) {
+            logger.warn("Domain {} already exists, skipping creation", 
domain.getDomainId());
             return domain.getDomainId();
         } catch (Throwable ex) {
             logger.error(ex.getMessage(), ex);
@@ -635,6 +638,9 @@ public class SharingService implements SharingFacade, 
SharingProvider {
             entityType.setUpdatedTime(System.currentTimeMillis());
             (new EntityTypeRepository()).create(entityType);
             return entityType.getEntityTypeId();
+        } catch (DuplicateEntryException e) {
+            logger.warn("EntityType {} already exists, skipping creation", 
entityType.getEntityTypeId());
+            return entityType.getEntityTypeId();
         } catch (Throwable ex) {
             logger.error(ex.getMessage(), ex);
             throw new SharingRegistryException(ex.getMessage() + " Stack 
trace:" + ExceptionUtils.getStackTrace(ex));
@@ -727,6 +733,9 @@ public class SharingService implements SharingFacade, 
SharingProvider {
             permissionType.setUpdatedTime(System.currentTimeMillis());
             (new PermissionTypeRepository()).create(permissionType);
             return permissionType.getPermissionTypeId();
+        } catch (DuplicateEntryException e) {
+            logger.warn("PermissionType {} already exists, skipping creation", 
permissionType.getPermissionTypeId());
+            return permissionType.getPermissionTypeId();
         } catch (Throwable ex) {
             logger.error(ex.getMessage(), ex);
             throw new SharingRegistryException(ex.getMessage() + " Stack 
trace:" + ExceptionUtils.getStackTrace(ex));

Reply via email to