fix: extension resources weren't deleted as expected on initialization (#5859)

#### What type of PR is this?
/kind improvement
/area core
/milestone 2.16.x

#### What this PR does / why we need it:
修复初始化时未按预期删除自定义资源

#### Does this PR introduce a user-facing change?
```release-note
修复初始化时未按预期删除自定义资源
```
pull/5803/head
guqing 2024-05-06 16:21:34 +08:00 committed by GitHub
parent fa286f74ee
commit 9b3f00dab0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 1 deletions

View File

@ -15,6 +15,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import run.halo.app.extension.ExtensionUtil;
import run.halo.app.extension.ReactiveExtensionClient; import run.halo.app.extension.ReactiveExtensionClient;
import run.halo.app.extension.Unstructured; import run.halo.app.extension.Unstructured;
import run.halo.app.infra.properties.HaloProperties; import run.halo.app.infra.properties.HaloProperties;
@ -96,7 +97,13 @@ public class ExtensionResourceInitializer implements ApplicationListener<Applica
extension.getMetadata().setVersion(existingExt.getMetadata().getVersion()); extension.getMetadata().setVersion(existingExt.getMetadata().getVersion());
return extensionClient.update(extension); return extensionClient.update(extension);
}) })
.switchIfEmpty(Mono.defer(() -> extensionClient.create(extension))); .switchIfEmpty(Mono.defer(() -> {
if (ExtensionUtil.isDeleted(extension)) {
// skip deleted extension
return Mono.empty();
}
return extensionClient.create(extension);
}));
} }
private List<Resource> listResources(String location) { private List<Resource> listResources(String location) {