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

控制台文章查询列表报错 #2830

Closed
wushanghui opened this issue Dec 3, 2022 · 8 comments · Fixed by #2854
Closed

控制台文章查询列表报错 #2830

wushanghui opened this issue Dec 3, 2022 · 8 comments · Fixed by #2854
Labels
area/core Issues or PRs related to the Halo Core kind/bug Categorizes issue or PR as related to a bug. triage/needs-information Indicates an issue needs more information in order to work on it.
Milestone

Comments

@wushanghui
Copy link

是什么版本出现了此问题?

2.0.0

使用的什么数据库?

H2

使用的哪种方式部署?

Docker

在线站点地址

https://blog.wushanghui.top/console/#/posts

发生了什么?

控制台-文章-查询, 报 服务器内部错误:Internal Server Error
访问地址: https://blog.wushanghui.top/console/#/posts

前置操作: 在文章修改的过程中, 使用Unsplash 保存了一张图片, 然后 点击文章列表查询就报错了.

相关日志输出

2022-12-03T17:14:33.170+08:00 ERROR 7 --- [     parallel-1] h.a.i.e.h.GlobalErrorWebExceptionHandler : null

java.lang.ClassCastException: null

2022-12-03T17:14:33.170+08:00 ERROR 7 --- [     parallel-1] a.w.r.e.AbstractErrorWebExceptionHandler : [26f6541e-2015]  500 Server Error for HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse"

java.lang.ClassCastException: null

附加信息

截屏2022-12-03 下午5 19 31

@ruibaby
Copy link
Member

ruibaby commented Dec 3, 2022

/kind bug
/area core

/cc @guqing

@f2c-ci-robot f2c-ci-robot bot added kind/bug Categorizes issue or PR as related to a bug. area/core Issues or PRs related to the Halo Core labels Dec 3, 2022
@guqing
Copy link
Member

guqing commented Dec 5, 2022

Hi @wushanghui,有更详细的异常堆栈吗,我基于你描述的复现步骤无法复现

@JohnNiang
Copy link
Member

/triage needs-information

@f2c-ci-robot f2c-ci-robot bot added the triage/needs-information Indicates an issue needs more information in order to work on it. label Dec 5, 2022
@wushanghui
Copy link
Author

Hi, @guqing , 控制台没有看到打印堆栈信息, 只有下面这些报错,

2022-12-05T22:47:36.797+08:00 ERROR 7 --- [     parallel-2] a.w.r.e.AbstractErrorWebExceptionHandler : [1bee6b27-4327]  500 Server Error for HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse"

java.lang.ClassCastException: null

2022-12-05T22:47:55.451+08:00 ERROR 7 --- [     parallel-2] h.a.i.e.h.GlobalErrorWebExceptionHandler : null

java.lang.ClassCastException: null

2022-12-05T22:47:55.452+08:00 ERROR 7 --- [     parallel-2] a.w.r.e.AbstractErrorWebExceptionHandler : [9265c947-4335]  500 Server Error for HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse"

java.lang.ClassCastException: null

2022-12-05T22:48:13.928+08:00 ERROR 7 --- [     parallel-2] h.a.i.e.h.GlobalErrorWebExceptionHandler : null

java.lang.ClassCastException: null

2022-12-05T22:48:13.929+08:00 ERROR 7 --- [     parallel-2] a.w.r.e.AbstractErrorWebExceptionHandler : [392ee107-4349]  500 Server Error for HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse"

java.lang.ClassCastException: null

@wushanghui
Copy link
Author

@guqing 感觉是操作导致了脏数据导致的, 我换mysql方式试试, h2不容易用工具访问.

@guqing
Copy link
Member

guqing commented Dec 5, 2022

@guqing 感觉是操作导致了脏数据导致的, 我换mysql方式试试, h2不容易用工具访问.

好的,如果无法重复复现,可以把有问题的那份 h2 db文件清理一下敏感数据发出来如果数据不多的话

@ruibaby
Copy link
Member

ruibaby commented Dec 6, 2022

在 demo.halo.run 环境也遇到了,使用的 PostgreSQL,开启 debug 模式之后日志如下:

image

halodemo      | 2022-12-06T11:09:28.564+08:00 ERROR 7 --- [tor-tcp-epoll-1] h.a.i.e.h.GlobalErrorWebExceptionHandler : class run.halo.app.content.Contributor cannot be cast to class java.lang.Comparable (run.halo.app.content.Contributor is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @61bbe9ba; java.lang.Comparable is in module java.base of loader 'bootstrap')
halodemo      |
halodemo      | java.lang.ClassCastException: class run.halo.app.content.Contributor cannot be cast to class java.lang.Comparable (run.halo.app.content.Contributor is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @61bbe9ba; java.lang.Comparable is in module java.base of loader 'bootstrap')
halodemo      | 	at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) ~[na:na]
halodemo      | 	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
halodemo      | Error has been observed at the following site(s):
halodemo      | 	*__checkpoint ⇢ org.springframework.web.filter.reactive.ServerHttpObservationFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthorizationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ExceptionTranslationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LogoutWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ServerRequestCacheWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LogoutPageGeneratingWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LoginPageGeneratingWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AnonymousAuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ReactorContextWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ CsrfWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ CorsWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ HttpHeaderWriterWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse" [ExceptionHandlingWebHandler]
halodemo      | Original Stack Trace:
halodemo      | 		at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.ComparableTimSort.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.Arrays.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.Arrays.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.ArrayList.sort(Unknown Source) ~[na:na]
halodemo      | 		at reactor.core.publisher.Flux.lambda$collectSortedList$16(Flux.java:3840) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:196) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2034) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerComplete(FluxFlatMap.java:894) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapInner.onComplete(FluxFlatMap.java:997) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoUsingWhen$MonoUsingWhenSubscriber.deferredComplete(MonoUsingWhen.java:270) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:527) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:384) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:159) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:488) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:421) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxBuffer$BufferExactSubscriber.onComplete(FluxBuffer.java:185) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.deferredComplete(FluxUsingWhen.java:392) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:527) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.pool.SimpleDequePool.maybeRecycleAndDrain(SimpleDequePool.java:531) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.pool.SimpleDequePool$QueuePoolRecyclerInner.onComplete(SimpleDequePool.java:761) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.pool.SimpleDequePool$QueuePoolRecyclerMono.subscribe(SimpleDequePool.java:873) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:238) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:148) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:259) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:163) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onError(FluxMap.java:134) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilter$FilterSubscriber.onError(FluxFilter.java:157) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilter$FilterConditionalSubscriber.onError(FluxFilter.java:291) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:384) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerComplete(FluxFlatMap.java:894) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapInner.onComplete(FluxFlatMap.java:997) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:222) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onComplete(MonoFlatMapMany.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:238) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onComplete(FluxFilterFuseable.java:391) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at io.r2dbc.postgresql.util.FluxDiscardOnCancel$FluxDiscardOnCancelSubscriber.onComplete(FluxDiscardOnCancel.java:104) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:222) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BaseSink.complete(FluxCreate.java:460) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BufferAsyncSink.drain(FluxCreate.java:805) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BufferAsyncSink.complete(FluxCreate.java:753) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.drainLoop(FluxCreate.java:247) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.drain(FluxCreate.java:213) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.complete(FluxCreate.java:204) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$Conversation.complete(ReactorNettyClient.java:671) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.emit(ReactorNettyClient.java:937) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:813) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:719) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:128) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onNext(FluxPeekFuseable.java:854) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:292) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:401) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:411) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[netty-codec-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[netty-codec-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
halodemo      |
halodemo      | 2022-12-06T11:09:28.566+08:00 ERROR 7 --- [tor-tcp-epoll-1] a.w.r.e.AbstractErrorWebExceptionHandler : [36243b69-52]  500 Server Error for HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse"
halodemo      |
halodemo      | java.lang.ClassCastException: class run.halo.app.content.Contributor cannot be cast to class java.lang.Comparable (run.halo.app.content.Contributor is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @61bbe9ba; java.lang.Comparable is in module java.base of loader 'bootstrap')
halodemo      | 	at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) ~[na:na]
halodemo      | 	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
halodemo      | Error has been observed at the following site(s):
halodemo      | 	*__checkpoint ⇢ org.springframework.web.filter.reactive.ServerHttpObservationFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthorizationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ExceptionTranslationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LogoutWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ServerRequestCacheWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LogoutPageGeneratingWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ LoginPageGeneratingWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AnonymousAuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ReactorContextWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ CsrfWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ CorsWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ HttpHeaderWriterWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
halodemo      | 	*__checkpoint ⇢ HTTP GET "/apis/api.console.halo.run/v1alpha1/posts?keyword=&size=20&page=1&labelSelector=content.halo.run%2Fdeleted%3Dfalse" [ExceptionHandlingWebHandler]
halodemo      | Original Stack Trace:
halodemo      | 		at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.ComparableTimSort.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.Arrays.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.Arrays.sort(Unknown Source) ~[na:na]
halodemo      | 		at java.base/java.util.ArrayList.sort(Unknown Source) ~[na:na]
halodemo      | 		at reactor.core.publisher.Flux.lambda$collectSortedList$16(Flux.java:3840) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:196) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2034) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerComplete(FluxFlatMap.java:894) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapInner.onComplete(FluxFlatMap.java:997) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoUsingWhen$MonoUsingWhenSubscriber.deferredComplete(MonoUsingWhen.java:270) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:527) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:384) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:159) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:488) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:421) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxBuffer$BufferExactSubscriber.onComplete(FluxBuffer.java:185) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.deferredComplete(FluxUsingWhen.java:392) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$CommitInner.onComplete(FluxUsingWhen.java:527) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2168) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.pool.SimpleDequePool.maybeRecycleAndDrain(SimpleDequePool.java:531) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.pool.SimpleDequePool$QueuePoolRecyclerInner.onComplete(SimpleDequePool.java:761) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.pool.SimpleDequePool$QueuePoolRecyclerMono.subscribe(SimpleDequePool.java:873) ~[reactor-pool-1.0.0.jar:1.0.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:238) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:148) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:259) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:163) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapSubscriber.onError(FluxMap.java:134) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilter$FilterSubscriber.onError(FluxFilter.java:157) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilter$FilterConditionalSubscriber.onError(FluxFilter.java:291) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.onComplete(FluxUsingWhen.java:384) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerComplete(FluxFlatMap.java:894) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFlatMap$FlatMapInner.onComplete(FluxFlatMap.java:997) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:222) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onComplete(MonoFlatMapMany.java:260) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onComplete(FluxHandleFuseable.java:238) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onComplete(FluxFilterFuseable.java:391) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at io.r2dbc.postgresql.util.FluxDiscardOnCancel$FluxDiscardOnCancelSubscriber.onComplete(FluxDiscardOnCancel.java:104) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:222) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BaseSink.complete(FluxCreate.java:460) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BufferAsyncSink.drain(FluxCreate.java:805) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$BufferAsyncSink.complete(FluxCreate.java:753) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.drainLoop(FluxCreate.java:247) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.drain(FluxCreate.java:213) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxCreate$SerializedFluxSink.complete(FluxCreate.java:204) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$Conversation.complete(ReactorNettyClient.java:671) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.emit(ReactorNettyClient.java:937) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:813) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at io.r2dbc.postgresql.client.ReactorNettyClient$BackendMessageSubscriber.onNext(ReactorNettyClient.java:719) ~[r2dbc-postgresql-1.0.0.RELEASE.jar:1.0.0.RELEASE]
halodemo      | 		at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:128) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onNext(FluxPeekFuseable.java:854) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) ~[reactor-core-3.5.0.jar:3.5.0]
halodemo      | 		at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:292) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:401) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:411) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113) ~[reactor-netty-core-1.1.0.jar:1.1.0]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[netty-codec-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[netty-codec-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.85.Final.jar:4.1.85.Final]
halodemo      | 		at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

/cc @guqing

@guqing
Copy link
Member

guqing commented Dec 6, 2022

/milestone 2.0.1

@f2c-ci-robot f2c-ci-robot bot added this to the 2.0.1 milestone Dec 6, 2022
f2c-ci-robot bot pushed a commit that referenced this issue Dec 6, 2022
#### What type of PR is this?
/kind bugfix
/area core

#### What this PR does / why we need it:
修复文章列表查询时的类型转换错误

文章列表查询将 collectList 错写为 collectSortedList 导致此 `Contributor cannot be cast to class java.lang.Comparable`,
collectSortedList 会使用  `Arrays.sort(a, (Comparator) c)`,这需要目标类实现 Comparable 才行,而此处并不需要自然排序。

#### Which issue(s) this PR fixes:

Fixes #2830

#### Special notes for your reviewer:
此 bug 的复现方式为:
编辑一篇文章保存后,在使用另一个用户账户编辑此文章并发布就会出现,而使用此 PR 后问题消失,此问题只对 Contributor 这个类型有效它不是自定义模型类,而 Tag 和 Category 都是自定义模型 继承了 AbstractExtension 而它 实现了 Comparable 接口。

/cc @halo-dev/sig-halo 
#### Does this PR introduce a user-facing change?

```release-note
修复文章列表查询时的类型转换错误
```
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/bug Categorizes issue or PR as related to a bug. triage/needs-information Indicates an issue needs more information in order to work on it.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants