Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: auth provider sorting logic for better maintainability and clarity #6846

Merged
merged 5 commits into from
Oct 14, 2024

Conversation

guqing
Copy link
Member

@guqing guqing commented Oct 12, 2024

What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

What this PR does / why we need it:

重构认证方式列表的排序

Does this PR introduce a user-facing change?

重构认证方式列表的排序(此为破坏性更新,需要重新启用以前的 OAuth 认证)

@f2c-ci-robot f2c-ci-robot bot added kind/improvement Categorizes issue or PR as related to a improvement. release-note Denotes a PR that will be considered when it comes time to generate release notes. labels Oct 12, 2024
@f2c-ci-robot f2c-ci-robot bot added this to the 2.20.x milestone Oct 12, 2024
@f2c-ci-robot f2c-ci-robot bot added the area/core Issues or PRs related to the Halo Core label Oct 12, 2024
@f2c-ci-robot f2c-ci-robot bot requested review from ruibaby and wan92hen October 12, 2024 10:48
Copy link

f2c-ci-robot bot commented Oct 12, 2024

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from guqing. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@guqing guqing marked this pull request as draft October 12, 2024 12:35
@f2c-ci-robot f2c-ci-robot bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 12, 2024
@guqing guqing force-pushed the refactor/auth-provider-order branch from f18c389 to 4b49794 Compare October 12, 2024 12:44
Copy link

codecov bot commented Oct 12, 2024

Codecov Report

Attention: Patch coverage is 51.96078% with 49 lines in your changes missing coverage. Please review.

Project coverage is 56.99%. Comparing base (eff73dc) to head (4b07b31).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...run/halo/app/security/AuthProviderServiceImpl.java 67.10% 22 Missing and 3 partials ⚠️
...alo/app/security/preauth/PreAuthLoginEndpoint.java 0.00% 14 Missing ⚠️
...rc/main/java/run/halo/app/infra/SystemSetting.java 0.00% 5 Missing ⚠️
...java/run/halo/app/core/extension/AuthProvider.java 0.00% 4 Missing ⚠️
...main/java/run/halo/app/extension/Unstructured.java 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##               main    #6846   +/-   ##
=========================================
  Coverage     56.99%   56.99%           
+ Complexity     3999     3996    -3     
=========================================
  Files           714      714           
  Lines         24110    24152   +42     
  Branches       1585     1590    +5     
=========================================
+ Hits          13742    13766   +24     
- Misses         9756     9770   +14     
- Partials        612      616    +4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@guqing guqing force-pushed the refactor/auth-provider-order branch from a0fb310 to ba21ebf Compare October 13, 2024 10:18
Copy link

pkg-pr-new bot commented Oct 13, 2024

Open in Stackblitz

@halo-dev/api-client

pnpm add https://pkg.pr.new/@halo-dev/api-client@6846

@halo-dev/components

pnpm add https://pkg.pr.new/@halo-dev/components@6846

@halo-dev/richtext-editor

pnpm add https://pkg.pr.new/@halo-dev/richtext-editor@6846

@halo-dev/ui-plugin-bundler-kit

pnpm add https://pkg.pr.new/@halo-dev/ui-plugin-bundler-kit@6846

@halo-dev/console-shared

pnpm add https://pkg.pr.new/@halo-dev/console-shared@6846

commit: 4b07b31

@ruibaby ruibaby marked this pull request as ready for review October 13, 2024 15:13
@f2c-ci-robot f2c-ci-robot bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 13, 2024
@f2c-ci-robot f2c-ci-robot bot requested review from Aanko and JohnNiang October 13, 2024 15:13
@ruibaby
Copy link
Member

ruibaby commented Oct 13, 2024

@guqing 有测试失败了。、

@guqing guqing force-pushed the refactor/auth-provider-order branch from c6279b1 to a50bd56 Compare October 13, 2024 15:30
@guqing guqing added the tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges. label Oct 13, 2024
@guqing
Copy link
Member Author

guqing commented Oct 13, 2024

@guqing 有测试失败了。、

改了

@ruibaby
Copy link
Member

ruibaby commented Oct 14, 2024

/hold

@f2c-ci-robot f2c-ci-robot bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 14, 2024
@ruibaby
Copy link
Member

ruibaby commented Oct 14, 2024

一个潜在问题,使用此 PR 运行之后降级将无法启动。

2024-10-14T10:01:01.031+08:00  INFO 46614 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-10-14T10:01:01.031+08:00  WARN 46614 --- [           main] o.s.b.c.e.EventPublishingRunListener     : Error calling ApplicationEventListener

java.lang.IllegalStateException: org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@604c5de8 has not been refreshed yet
        at org.springframework.context.support.AbstractApplicationContext.assertBeanFactoryActive(AbstractApplicationContext.java:1259) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1271) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.getTargetBean(ApplicationListenerMethodAdapter.java:409) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:371) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:254) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:173) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
        at org.springframework.boot.context.event.EventPublishingRunListener.failed(EventPublishingRunListener.java:130) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.SpringApplicationRunListeners.callFailedListener(SpringApplicationRunListeners.java:94) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.SpringApplicationRunListeners.lambda$failed$7(SpringApplicationRunListeners.java:85) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.SpringApplicationRunListeners.failed(SpringApplicationRunListeners.java:84) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:811) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:328) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
        at run.halo.app.Application.main(Application.java:28) ~[main/:na]

2024-10-14T10:01:01.038+08:00 ERROR 46614 --- [           main] o.s.boot.SpringApplication               : Application run failed

run.halo.app.extension.exception.ExtensionConvertException: 500 INTERNAL_SERVER_ERROR "Failed to read Extension class run.halo.app.core.extension.AuthProvider from bytes"
        at run.halo.app.extension.JSONExtensionConverter.convertFrom(JSONExtensionConverter.java:91) ~[main/:na]
        at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.lambda$createExtensionIterator$0(ReactiveExtensionClientImpl.java:458) ~[main/:na]
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
        at java.base/java.util.ArrayList$Itr.forEachRemaining(ArrayList.java:1003) ~[na:na]
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
        at org.springframework.data.domain.Chunk.getConvertedContent(Chunk.java:121) ~[spring-data-commons-3.4.0-M1.jar:3.4.0-M1]
        at org.springframework.data.domain.PageImpl.map(PageImpl.java:86) ~[spring-data-commons-3.4.0-M1.jar:3.4.0-M1]
        at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.lambda$createExtensionIterator$1(ReactiveExtensionClientImpl.java:458) ~[main/:na]
        at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:106) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:297) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:478) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2097) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.deferredComplete(FluxUsingWhen.java:397) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:532) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:389) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onComplete(FluxConcatMapNoPrefetch.java:241) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.deferredComplete(FluxUsingWhen.java:397) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:532) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:210) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:210) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.pool.SimpleDequePool.maybeRecycleAndDrain(SimpleDequePool.java:540) ~[reactor-pool-1.1.0-M5.jar:1.1.0-M5]
        at reactor.pool.SimpleDequePool$QueuePoolRecyclerInner.onComplete(SimpleDequePool.java:781) ~[reactor-pool-1.1.0-M5.jar:1.1.0-M5]
        at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.pool.SimpleDequePool$QueuePoolRecyclerMono.subscribe(SimpleDequePool.java:893) ~[reactor-pool-1.1.0-M5.jar:1.1.0-M5]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:239) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:148) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:260) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:164) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxMap$MapSubscriber.onError(FluxMap.java:134) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFilter$FilterSubscriber.onError(FluxFilter.java:157) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFilter$FilterConditionalSubscriber.onError(FluxFilter.java:291) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4576) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:389) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:850) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerComplete(FluxFlatMap.java:898) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFlatMap$FlatMapInner.onComplete(FluxFlatMap.java:1001) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:223) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onComplete(MonoFlatMapMany.java:261) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:239) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onComplete(FluxFilterFuseable.java:391) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at io.r2dbc.postgresql.util.FluxDiscardOnCancel$FluxDiscardOnCancelSubscriber.onComplete(FluxDiscardOnCancel.java:104) ~[r2dbc-postgresql-1.0.5.RELEASE.jar:1.0.5.RELEASE]
        at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:223) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$BaseSink.complete(FluxCreate.java:465) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$BufferAsyncSink.drain(FluxCreate.java:871) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$BufferAsyncSink.complete(FluxCreate.java:819) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$SerializedFluxSink.drainLoop(FluxCreate.java:249) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$SerializedFluxSink.drain(FluxCreate.java:215) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxCreate$SerializedFluxSink.complete(FluxCreate.java:206) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at io.r2dbc.postgresql.client.ReactorNettyClient$Conversation.complete(ReactorNettyClient.java:668) ~[r2dbc-postgresql-1.0.5.RELEASE.jar:1.0.5.RELEASE]
        at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.emit(ReactorNettyClient.java:934) ~[r2dbc-postgresql-1.0.5.RELEASE.jar:1.0.5.RELEASE]
        at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:810) ~[r2dbc-postgresql-1.0.5.RELEASE.jar:1.0.5.RELEASE]
        at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:716) ~[r2dbc-postgresql-1.0.5.RELEASE.jar:1.0.5.RELEASE]
        at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onNext(FluxPeekFuseable.java:854) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
        at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:294) ~[reactor-netty-core-1.2.0-M5.jar:1.2.0-M5]
        at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:403) ~[reactor-netty-core-1.2.0-M5.jar:1.2.0-M5]
        at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:425) ~[reactor-netty-core-1.2.0-M5.jar:1.2.0-M5]
        at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115) ~[reactor-netty-core-1.2.0-M5.jar:1.2.0-M5]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[netty-codec-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[netty-codec-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.113.Final.jar:4.1.113.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.113.Final.jar:4.1.113.Final]
        at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
        Suppressed: java.lang.Exception: #block terminated with an error
                at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
                at reactor.core.publisher.Mono.block(Mono.java:1779) ~[reactor-core-3.7.0-M6.jar:3.7.0-M6]
                at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.lambda$createExtensionIterator$2(ReactiveExtensionClientImpl.java:460) ~[main/:na]
                at run.halo.app.extension.index.DefaultExtensionIterator.loadData(DefaultExtensionIterator.java:42) ~[main/:na]
                at run.halo.app.extension.index.DefaultExtensionIterator.<init>(DefaultExtensionIterator.java:38) ~[main/:na]
                at run.halo.app.extension.index.DefaultExtensionIterator.<init>(DefaultExtensionIterator.java:27) ~[main/:na]
                at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.createExtensionIterator(ReactiveExtensionClientImpl.java:455) ~[main/:na]
                at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.createIndexerFor(ReactiveExtensionClientImpl.java:491) ~[main/:na]
                at java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[na:na]
                at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[na:na]
                at run.halo.app.extension.ReactiveExtensionClientImpl$IndexBuildsManager.startBuildingIndex(ReactiveExtensionClientImpl.java:471) ~[main/:na]
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
                at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
                at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:382) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:254) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:173) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1009) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630) ~[spring-context-6.2.0-RC1.jar:6.2.0-RC1]
                at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
                at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:755) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
                at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:442) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
                at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
                at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) ~[spring-boot-3.4.0-M3.jar:3.4.0-M3]
                at run.halo.app.Application.main(Application.java:28) ~[main/:na]
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `run.halo.app.core.extension.AuthProvider$AuthType` from String "OTHER": not one of the values accepted for Enum class: [OAUTH2, FORM]
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 375] (through reference chain: run.halo.app.core.extension.AuthProvider["spec"]->run.halo.app.core.extension.AuthProvider$AuthProviderSpec["authType"])
        at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1958) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4905) ~[jackson-databind-2.17.2.jar:2.17.2]
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3909) ~[jackson-databind-2.17.2.jar:2.17.2]
        at run.halo.app.extension.JSONExtensionConverter.convertFrom(JSONExtensionConverter.java:87) ~[main/:na]
        ... 130 common frames omitted

@ruibaby ruibaby removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 14, 2024
Copy link

@ruibaby ruibaby merged commit 82498dc into halo-dev:main Oct 14, 2024
5 of 6 checks passed
@guqing guqing deleted the refactor/auth-provider-order branch October 14, 2024 03:55
f2c-ci-robot bot pushed a commit that referenced this pull request Oct 14, 2024
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
恢复 #6846 中删除的 SystemSetting.AuthProvider#enabled 字段避免插件应用到了它可能会发生错误,将其标记为过时

#### Does this PR introduce a user-facing change?
```release-note
None
```
@ruibaby ruibaby modified the milestones: 2.20.x, 2.20.0 LTS Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/core Issues or PRs related to the Halo Core kind/improvement Categorizes issue or PR as related to a improvement. release-note Denotes a PR that will be considered when it comes time to generate release notes. tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants