diff --git a/application/src/main/java/run/halo/app/core/extension/reconciler/attachment/AttachmentReconciler.java b/application/src/main/java/run/halo/app/core/extension/reconciler/attachment/AttachmentReconciler.java index f1ef94fcb..d525e2ffa 100644 --- a/application/src/main/java/run/halo/app/core/extension/reconciler/attachment/AttachmentReconciler.java +++ b/application/src/main/java/run/halo/app/core/extension/reconciler/attachment/AttachmentReconciler.java @@ -40,11 +40,7 @@ public class AttachmentReconciler implements Reconciler { client.fetch(Attachment.class, request.name()).ifPresent(attachment -> { // TODO Handle the finalizer if (attachment.getMetadata().getDeletionTimestamp() != null) { - attachmentService.delete(attachment) - .doOnNext(deletedAttachment -> { - removeFinalizer(attachment.getMetadata().getName()); - }) - .blockOptional(); + removeFinalizer(attachment); return; } // add finalizer @@ -89,14 +85,25 @@ public class AttachmentReconciler implements Reconciler { }); } - void removeFinalizer(String attachmentName) { - client.fetch(Attachment.class, attachmentName).ifPresent(attachment -> { - var finalizers = attachment.getMetadata().getFinalizers(); - if (finalizers != null && finalizers.remove(Constant.FINALIZER_NAME)) { - // update it - client.update(attachment); - } - }); + void removeFinalizer(Attachment oldAttachment) { + if (!hasFinalizer(oldAttachment, Constant.FINALIZER_NAME)) { + return; + } + attachmentService.delete(oldAttachment).block(); + client.fetch(Attachment.class, oldAttachment.getMetadata().getName()) + .ifPresent(attachment -> { + var finalizers = attachment.getMetadata().getFinalizers(); + if (hasFinalizer(attachment, Constant.FINALIZER_NAME) + && finalizers.remove(Constant.FINALIZER_NAME)) { + // update it + client.update(attachment); + } + }); + } + + boolean hasFinalizer(Attachment attachment, String finalizer) { + var finalizers = attachment.getMetadata().getFinalizers(); + return finalizers != null && finalizers.contains(finalizer); } void addFinalizerIfNotSet(String attachmentName, Set existingFinalizers) {