Skip to content

Commit ff97a46

Browse files
fix: [CDS-35637]: fix indexoutofbounds exception during instance sync in NG (#32513)
* [CDS-35637]: fix indexoutofbounds exception and pass instanceHandler using deployment type * [CDS-35637]: return deployment type from PT response instead * [CDS-35637]: moved constants class to higher module * Update config.yml
1 parent f16c1aa commit ff97a46

File tree

16 files changed

+36
-25
lines changed

16 files changed

+36
-25
lines changed

125-cd-nextgen/src/main/java/io/harness/cdng/creator/variables/ServiceVariableCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import io.harness.annotations.dev.HarnessTeam;
1414
import io.harness.annotations.dev.OwnedBy;
1515
import io.harness.cdng.manifest.ManifestType;
16-
import io.harness.cdng.service.beans.ServiceSpecType;
1716
import io.harness.cdng.visitor.YamlTypes;
1817
import io.harness.exception.InvalidRequestException;
18+
import io.harness.ng.core.k8s.ServiceSpecType;
1919
import io.harness.pms.contracts.plan.YamlProperties;
2020
import io.harness.pms.sdk.core.variables.VariableCreatorHelper;
2121
import io.harness.pms.sdk.core.variables.beans.VariableCreationResponse;

125-cd-nextgen/src/main/java/io/harness/cdng/service/beans/KubernetesServiceSpec.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.harness.cdng.variables.beans.NGVariableOverrideSetWrapper;
1919
import io.harness.cdng.visitor.helpers.serviceconfig.KubernetesServiceSpecVisitorHelper;
2020
import io.harness.data.structure.EmptyPredicate;
21+
import io.harness.ng.core.k8s.ServiceSpecType;
2122
import io.harness.walktree.beans.VisitableChildren;
2223
import io.harness.walktree.visitor.SimpleVisitorHelper;
2324
import io.harness.walktree.visitor.Visitable;

125-cd-nextgen/src/main/java/io/harness/cdng/service/beans/NativeHelmServiceSpec.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.harness.cdng.variables.beans.NGVariableOverrideSetWrapper;
1616
import io.harness.cdng.visitor.helpers.serviceconfig.NativeHelmServiceSpecVisitorHelper;
1717
import io.harness.data.structure.EmptyPredicate;
18+
import io.harness.ng.core.k8s.ServiceSpecType;
1819
import io.harness.walktree.beans.VisitableChildren;
1920
import io.harness.walktree.visitor.SimpleVisitorHelper;
2021
import io.harness.walktree.visitor.Visitable;

125-cd-nextgen/src/main/java/io/harness/cdng/service/beans/ServiceDefinitionType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package io.harness.cdng.service.beans;
99

1010
import io.harness.beans.ExecutionStrategyType;
11+
import io.harness.ng.core.k8s.ServiceSpecType;
1112

1213
import com.fasterxml.jackson.annotation.JsonCreator;
1314
import com.fasterxml.jackson.annotation.JsonProperty;

125-cd-nextgen/src/main/java/io/harness/cdng/service/beans/SshServiceSpec.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.harness.cdng.variables.beans.NGVariableOverrideSetWrapper;
1919
import io.harness.cdng.visitor.helpers.serviceconfig.SshServiceSpecVisitorHelper;
2020
import io.harness.data.structure.EmptyPredicate;
21+
import io.harness.ng.core.k8s.ServiceSpecType;
2122
import io.harness.walktree.beans.VisitableChildren;
2223
import io.harness.walktree.visitor.SimpleVisitorHelper;
2324
import io.harness.walktree.visitor.Visitable;

125-cd-nextgen/src/main/java/io/harness/cdng/service/beans/WinRmServiceSpec.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.harness.cdng.variables.beans.NGVariableOverrideSetWrapper;
1919
import io.harness.cdng.visitor.helpers.serviceconfig.WinRmServiceSpecVisitorHelper;
2020
import io.harness.data.structure.EmptyPredicate;
21+
import io.harness.ng.core.k8s.ServiceSpecType;
2122
import io.harness.walktree.beans.VisitableChildren;
2223
import io.harness.walktree.visitor.SimpleVisitorHelper;
2324
import io.harness.walktree.visitor.Visitable;

126-instance/src/main/java/io/harness/dtos/deploymentinfo/K8sDeploymentInfoDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import static io.harness.annotations.dev.HarnessTeam.CDP;
1111

1212
import io.harness.annotations.dev.OwnedBy;
13-
import io.harness.cdng.service.beans.ServiceSpecType;
13+
import io.harness.ng.core.k8s.ServiceSpecType;
1414
import io.harness.util.InstanceSyncKey;
1515

1616
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

126-instance/src/main/java/io/harness/dtos/deploymentinfo/NativeHelmDeploymentInfoDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import static io.harness.annotations.dev.HarnessTeam.CDP;
1111

1212
import io.harness.annotations.dev.OwnedBy;
13-
import io.harness.cdng.service.beans.ServiceSpecType;
1413
import io.harness.delegate.task.helm.HelmChartInfo;
1514
import io.harness.k8s.model.HelmVersion;
15+
import io.harness.ng.core.k8s.ServiceSpecType;
1616
import io.harness.util.InstanceSyncKey;
1717

1818
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

126-instance/src/main/java/io/harness/mappers/InstanceDetailsMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
import io.harness.annotations.dev.HarnessTeam;
1111
import io.harness.annotations.dev.OwnedBy;
12-
import io.harness.cdng.service.beans.ServiceSpecType;
1312
import io.harness.dtos.InstanceDTO;
1413
import io.harness.dtos.instanceinfo.K8sInstanceInfoDTO;
1514
import io.harness.models.InstanceDetailsDTO;
15+
import io.harness.ng.core.k8s.ServiceSpecType;
1616
import io.harness.service.instancesynchandler.AbstractInstanceSyncHandler;
1717
import io.harness.service.instancesynchandlerfactory.InstanceSyncHandlerFactoryService;
1818

126-instance/src/main/java/io/harness/service/instancesync/InstanceSyncServiceImpl.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99

1010
import io.harness.annotations.dev.HarnessTeam;
1111
import io.harness.annotations.dev.OwnedBy;
12-
import io.harness.cdng.service.beans.ServiceSpecType;
1312
import io.harness.delegate.beans.instancesync.InstanceSyncPerpetualTaskResponse;
1413
import io.harness.delegate.beans.instancesync.ServerInstanceInfo;
15-
import io.harness.delegate.beans.instancesync.info.K8sServerInstanceInfo;
1614
import io.harness.dtos.DeploymentSummaryDTO;
1715
import io.harness.dtos.InfrastructureMappingDTO;
1816
import io.harness.dtos.InstanceDTO;
@@ -128,8 +126,10 @@ public void processInstanceSyncForNewDeployment(DeploymentEvent deploymentEvent)
128126
InstanceSyncLocalCacheManager.setDeploymentSummary(
129127
deploymentSummaryDTO.getInstanceSyncKey(), deploymentSummaryDTO);
130128
// Sync only for deployment infos / instance sync handler keys from instances from server
129+
AbstractInstanceSyncHandler instanceSyncHandler = instanceSyncHandlerFactoryService.getInstanceSyncHandler(
130+
deploymentSummaryDTO.getDeploymentInfoDTO().getType());
131131
performInstanceSync(instanceSyncPerpetualTaskInfoDTO, infrastructureMappingDTO,
132-
deploymentSummaryDTO.getServerInstanceInfoList(), true);
132+
deploymentSummaryDTO.getServerInstanceInfoList(), instanceSyncHandler, true);
133133

134134
log.info("Instance sync completed for infrastructure mapping id : {}", infrastructureMappingDTO.getId());
135135
return;
@@ -186,8 +186,10 @@ public void processInstanceSyncByPerpetualTask(String accountIdentifier, String
186186
AcquiredLock<?> acquiredLock = persistentLocker.waitToAcquireLock(InstanceSyncConstants.INSTANCE_SYNC_PREFIX
187187
+ instanceSyncPerpetualTaskInfoDTO.getInfrastructureMappingId(),
188188
InstanceSyncConstants.INSTANCE_SYNC_LOCK_TIMEOUT, InstanceSyncConstants.INSTANCE_SYNC_WAIT_TIMEOUT)) {
189+
AbstractInstanceSyncHandler instanceSyncHandler = instanceSyncHandlerFactoryService.getInstanceSyncHandler(
190+
instanceSyncPerpetualTaskResponse.getDeploymentType());
189191
performInstanceSync(instanceSyncPerpetualTaskInfoDTO, infrastructureMappingDTO.get(),
190-
instanceSyncPerpetualTaskResponse.getServerInstanceDetails(), false);
192+
instanceSyncPerpetualTaskResponse.getServerInstanceDetails(), instanceSyncHandler, false);
191193
log.info("Instance Sync completed");
192194
} catch (Exception exception) {
193195
log.error("Exception occured during instance sync", exception);
@@ -203,10 +205,11 @@ public void processInstanceSyncByPerpetualTask(String accountIdentifier, String
203205
*/
204206
private void performInstanceSync(InstanceSyncPerpetualTaskInfoDTO instanceSyncPerpetualTaskInfoDTO,
205207
InfrastructureMappingDTO infrastructureMappingDTO, List<ServerInstanceInfo> serverInstanceInfoList,
206-
boolean isNewDeploymentSync) {
208+
AbstractInstanceSyncHandler instanceSyncHandler, boolean isNewDeploymentSync) {
207209
// Prepare final list of instances to be added / deleted / updated
208-
Map<OperationsOnInstances, List<InstanceDTO>> instancesToBeModified = handleInstanceSync(
209-
instanceSyncPerpetualTaskInfoDTO, infrastructureMappingDTO, serverInstanceInfoList, isNewDeploymentSync);
210+
Map<OperationsOnInstances, List<InstanceDTO>> instancesToBeModified =
211+
handleInstanceSync(instanceSyncPerpetualTaskInfoDTO, infrastructureMappingDTO, serverInstanceInfoList,
212+
instanceSyncHandler, isNewDeploymentSync);
210213
processInstances(instancesToBeModified);
211214
}
212215

@@ -225,9 +228,7 @@ private void processInstances(Map<OperationsOnInstances, List<InstanceDTO>> inst
225228
Map<OperationsOnInstances, List<InstanceDTO>> handleInstanceSync(
226229
InstanceSyncPerpetualTaskInfoDTO instanceSyncPerpetualTaskInfoDTO,
227230
InfrastructureMappingDTO infrastructureMappingDTO, List<ServerInstanceInfo> serverInstanceInfoList,
228-
boolean isNewDeploymentSync) {
229-
AbstractInstanceSyncHandler instanceSyncHandler = instanceSyncHandlerFactoryService.getInstanceSyncHandler(
230-
getServerInstanceInfoType(serverInstanceInfoList.get(0)));
231+
AbstractInstanceSyncHandler instanceSyncHandler, boolean isNewDeploymentSync) {
231232
List<InstanceDTO> instancesInDB = instanceService.getActiveInstancesByInfrastructureMappingId(
232233
infrastructureMappingDTO.getAccountIdentifier(), infrastructureMappingDTO.getOrgIdentifier(),
233234
infrastructureMappingDTO.getProjectIdentifier(), infrastructureMappingDTO.getId(), System.currentTimeMillis());
@@ -591,12 +592,4 @@ private void logServerInstances(List<ServerInstanceInfo> serverInstanceInfoList)
591592
serverInstanceInfo -> stringBuilder.append(serverInstanceInfo.toString()).append(" :: "));
592593
log.info("Server Instances in the perpetual task response : {}", stringBuilder.toString());
593594
}
594-
595-
private String getServerInstanceInfoType(ServerInstanceInfo serverInstanceInfo) {
596-
if (serverInstanceInfo instanceof K8sServerInstanceInfo) {
597-
return ServiceSpecType.KUBERNETES;
598-
}
599-
600-
return ServiceSpecType.NATIVE_HELM; // as of now only 2 types K8s and Native Helm
601-
}
602595
}

0 commit comments

Comments
 (0)