Skip to content

Commit

Permalink
Bypass pipeline mutability check for default pipeline (#21639)
Browse files Browse the repository at this point in the history
* option to bypass mutability check for pipeline

* remove unused method

* add missing mutability check exemption
  • Loading branch information
patrickmann authored Feb 14, 2025
1 parent ecea38e commit b34dfd3
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@
import java.util.stream.Stream;

public interface PipelineService {
PipelineDao save(PipelineDao pipeline);
default PipelineDao save(PipelineDao pipeline) {
return save(pipeline, true);
}

PipelineDao save(PipelineDao pipeline, boolean checkMutability);

PipelineDao load(String id) throws NotFoundException;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ public PipelineDao save(PipelineDao pipeline) {
return toSave;
}

@Override
public PipelineDao save(PipelineDao pipeline, boolean checkMutability) {
return save(pipeline);
}

@Override
public PipelineDao load(String id) throws NotFoundException {
final PipelineDao pipeline = store.get(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,15 @@ public MongoDbPipelineService(MongoCollections mongoCollections,
}

@Override
public PipelineDao save(PipelineDao pipeline) {
public PipelineDao save(PipelineDao pipeline, boolean checkMutability) {
scopedEntityMongoUtils.ensureValidScope(pipeline);

final var pipelineId = pipeline.id();
final PipelineDao savedPipeline;
if (pipelineId != null) {
scopedEntityMongoUtils.ensureMutability(pipeline);
if (checkMutability) {
scopedEntityMongoUtils.ensureMutability(pipeline);
}
collection.replaceOne(idEq(pipelineId), pipeline, new ReplaceOptions().upsert(true));
savedPipeline = pipeline;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ public PipelineSource update(@ApiParam(name = "id") @PathParam("id") String id,
@ApiParam(name = "pipeline", required = true) @NotNull PipelineSource update) throws NotFoundException {
checkPermission(PipelineRestPermissions.PIPELINE_EDIT, id);
checkReservedName(update);
return PipelineUtils.update(pipelineService, pipelineRuleParser, id, update);
return PipelineUtils.update(pipelineService, pipelineRuleParser, id, update, true);
}

public record RoutingRequest(
Expand Down Expand Up @@ -284,7 +284,7 @@ public RoutingResponse routing(@ApiParam(name = "body", required = true) @NotNul
pipelineSource = pipelineSource.toBuilder()
.source(PipelineUtils.createPipelineString(pipelineSource))
.build();
update(pipelineDao.id(), pipelineSource);
PipelineUtils.update(pipelineService, pipelineRuleParser, pipelineDao.id(), pipelineSource, false);
} else {
log.info(f("Routing for input <%s> already exists - skipping", request.inputId()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ private PipelineUtils() {
public static PipelineSource update(PipelineService pipelineService,
PipelineRuleParser pipelineRuleParser,
String id,
PipelineSource update) throws NotFoundException {
PipelineSource update,
boolean checkMutability) throws NotFoundException {
final PipelineDao dao = pipelineService.load(id);
final Pipeline pipeline;
try {
Expand All @@ -59,7 +60,7 @@ public static PipelineSource update(PipelineService pipelineService,

final PipelineDao savedPipeline;
try {
savedPipeline = pipelineService.save(toSave);
savedPipeline = pipelineService.save(toSave, checkMutability);
} catch (IllegalArgumentException e) {
log.error(e.getMessage(), e);
throw new BadRequestException(e.getMessage());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ private void handleRuleRenamed(String oldTitle, String newTitle) {
try {
PipelineDao pipelineDao = pipelineService.loadByName(GL_INPUT_ROUTING_PIPELINE);
String pipelineSource = pipelineDao.source().replace(oldTitle, newTitle);
pipelineService.save(pipelineDao.toBuilder().source(pipelineSource).build());
pipelineService.save(pipelineDao.toBuilder().source(pipelineSource).build(), false);
} catch (NotFoundException e) {
log.warn("Unable to load pipeline {}", GL_INPUT_ROUTING_PIPELINE, e);
}
Expand Down Expand Up @@ -211,7 +211,7 @@ private void handleRuleDeleted(String ruleTitle) {
pipelineSource = pipelineSource.toBuilder()
.source(PipelineUtils.createPipelineString(pipelineSource))
.build();
PipelineUtils.update(pipelineService, pipelineRuleParser, pipelineDao.id(), pipelineSource);
PipelineUtils.update(pipelineService, pipelineRuleParser, pipelineDao.id(), pipelineSource, false);
} catch (NotFoundException e) {
log.warn("Unable to load pipeline {}", GL_INPUT_ROUTING_PIPELINE, e);
}
Expand Down

0 comments on commit b34dfd3

Please sign in to comment.