diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java index df4d29f638..a66807c6ae 100644 --- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java +++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java @@ -566,13 +566,13 @@ private Group adjustTargetGroup( final RemoteRepository buildRepo, final Group s "Adding remote repository for Koji build: " + buildRepo.getMetadata( NVR ) ); - storeDataManager.storeArtifactStore( targetGroup, changeSummary, false, true, new EventMetadata() ); + // storeDataManager.storeArtifactStore( targetGroup, changeSummary, false, true, new EventMetadata() ); + // Use repo service API to append the member of group instead of to override during target group update. + storeDataManager.addConstituentToGroup( targetGroup.getKey(), buildRepo.getKey() ); } - catch ( IndyDataException e ) + catch ( IndyWorkflowException e ) { - wfEx.set( new IndyWorkflowException( "Cannot store target-group: %s changes for: %s. Error: %s", e, - targetGroup.getName(), buildRepo.getMetadata( NVR ), - e.getMessage() ) ); + wfEx.set( e ); return null; } diff --git a/api/src/main/java/org/commonjava/indy/data/StoreDataManager.java b/api/src/main/java/org/commonjava/indy/data/StoreDataManager.java index bf5d52a075..fcc22012ea 100644 --- a/api/src/main/java/org/commonjava/indy/data/StoreDataManager.java +++ b/api/src/main/java/org/commonjava/indy/data/StoreDataManager.java @@ -15,6 +15,7 @@ */ package org.commonjava.indy.data; +import org.commonjava.indy.IndyWorkflowException; import org.commonjava.indy.audit.ChangeSummary; import org.commonjava.indy.model.core.ArtifactStore; import org.commonjava.indy.model.core.Group; @@ -177,6 +178,9 @@ Set affectedBy( Collection keys ) Set filterAffectedGroups( Set affectedGroups ); + void addConstituentToGroup( StoreKey key, StoreKey member ) + throws IndyWorkflowException; + class ContextualTask { private String threadName; diff --git a/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java b/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java index 10bf213ea0..65c5338910 100644 --- a/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java +++ b/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.StringUtils; import org.commonjava.cdi.util.weft.Locker; import org.commonjava.cdi.util.weft.NamedThreadFactory; +import org.commonjava.indy.IndyWorkflowException; import org.commonjava.indy.audit.ChangeSummary; import org.commonjava.indy.change.event.ArtifactStoreUpdateType; import org.commonjava.indy.conf.IndyConfiguration; @@ -681,4 +682,8 @@ public boolean isExcludedGroup( Group group ) String filter = indyConfiguration.getAffectedGroupsExcludeFilter(); return isNotBlank( filter ) && group.getName().matches( filter ); } + + @Override + public abstract void addConstituentToGroup( StoreKey key, StoreKey member ) + throws IndyWorkflowException; } diff --git a/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java b/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java index 84d1ba6722..2984f39480 100644 --- a/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java +++ b/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java @@ -15,6 +15,7 @@ */ package org.commonjava.indy.infinispan.data; +import org.commonjava.indy.IndyWorkflowException; import org.commonjava.indy.audit.ChangeSummary; import org.commonjava.indy.conf.IndyConfiguration; import org.commonjava.indy.data.NoOpStoreEventDispatcher; @@ -344,4 +345,10 @@ public void initByPkgMap() keys.add( store.getKey() ); } } + + @Override + public void addConstituentToGroup( StoreKey key, StoreKey member ) + throws IndyWorkflowException + { + } } diff --git a/db/memory/src/main/java/org/commonjava/indy/mem/data/MemoryStoreDataManager.java b/db/memory/src/main/java/org/commonjava/indy/mem/data/MemoryStoreDataManager.java index 68ac1b9a7e..615ca777da 100644 --- a/db/memory/src/main/java/org/commonjava/indy/mem/data/MemoryStoreDataManager.java +++ b/db/memory/src/main/java/org/commonjava/indy/mem/data/MemoryStoreDataManager.java @@ -16,6 +16,7 @@ package org.commonjava.indy.mem.data; import org.commonjava.cdi.util.weft.NamedThreadFactory; +import org.commonjava.indy.IndyWorkflowException; import org.commonjava.indy.audit.ChangeSummary; import org.commonjava.indy.data.IndyDataException; import org.commonjava.indy.data.NoOpStoreEventDispatcher; @@ -29,7 +30,6 @@ import org.slf4j.LoggerFactory; import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Alternative; import javax.inject.Inject; import java.util.HashMap; import java.util.HashSet; @@ -180,4 +180,9 @@ protected ArtifactStore putArtifactStoreInternal( StoreKey storeKey, ArtifactSto return stores.put( storeKey, store ); } + @Override + public void addConstituentToGroup( StoreKey key, StoreKey member ) + throws IndyWorkflowException + { + } } diff --git a/db/service/src/main/java/org/commonjava/indy/db/service/ServiceStoreDataManager.java b/db/service/src/main/java/org/commonjava/indy/db/service/ServiceStoreDataManager.java index 047d25dfe2..a89f16685d 100644 --- a/db/service/src/main/java/org/commonjava/indy/db/service/ServiceStoreDataManager.java +++ b/db/service/src/main/java/org/commonjava/indy/db/service/ServiceStoreDataManager.java @@ -15,6 +15,7 @@ */ package org.commonjava.indy.db.service; +import org.commonjava.indy.IndyWorkflowException; import org.commonjava.indy.audit.ChangeSummary; import org.commonjava.indy.client.core.Indy; import org.commonjava.indy.client.core.IndyClientException; @@ -56,7 +57,6 @@ import static java.util.Collections.emptyMap; import static java.util.Collections.emptySet; import static org.apache.commons.lang3.StringUtils.isBlank; -import static org.commonjava.indy.db.common.StoreUpdateAction.STORE; import static org.commonjava.indy.model.core.ArtifactStore.METADATA_CHANGELOG; import static org.commonjava.indy.model.core.StoreType.hosted; @@ -492,4 +492,18 @@ protected void removeAffectedStore( StoreKey key ) logger.debug( "Do nothing here. Delegate to repository service for further operations." ); } + @Override + public void addConstituentToGroup( StoreKey key, StoreKey member ) + throws IndyWorkflowException + { + try + { + client.module( IndyStoresClientModule.class ).addConstituentToGroup( key, member ); + } + catch ( IndyClientException e ) + { + throw new IndyWorkflowException( "Failed to add member %s into Group %s, Error: %s", e, member, key, + e.getMessage() ); + } + } } diff --git a/pom.xml b/pom.xml index 79fc6217a2..3bf2567d91 100644 --- a/pom.xml +++ b/pom.xml @@ -106,7 +106,7 @@ 1.5 - 3.4.0 + 3.4.4-SNAPSHOT 1.1.4 1.20 1.24