29
0
0

一次活生生的教训

2026-08-29
2026-08-29

首先,我一定要警告大家,软件更新之类的东西不要新版一出来就立马更新,一定要在非生产环境使劲造,疯狂搞,没问题了再更新!尤其是像halo这样的博客!

次要,一定不要在一些软件里瞎搞,尤其是乱下载插件,乱搞主题,会直接把你的博客搞崩!!!

首先告诉大家我部署博客docker compose的yaml吧

version: "3"

services:
  halo:
    image: halohub/halo:2.26.0
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx1024m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

以上。

当天晚上,也就是文章发布时的前天晚上,我想要给博客换一个新主题,叫theme-sky-weather-v1.0.27,但我推测问题和主题关系不大。当时我安装完主题之后还打开网页测试了一遍,没有任何问题。之后,我发现这个主题需要很多插件支持,比如友链提交啊,文档啊什么的,于是我就一个一个去下载嘛。就在我安装到halo官方的文档插件的免授权版本时,问题直接就开始了,当时最直观的感受就是很卡,之后就是页面刷不出来,因为文档插件需要开启halo的应用商店,当时是开启失败了,报了点错,我没多想,先把应用商店插件删了,准备去下载最新版,准备直接上传,可我没想到,上传的时候,旧的插件还在"正在删除"状态,然后播客直接就卡死了,我还是没多想,直接重启了容器,当时直接进入了后台,没发现什么问题,结果一访问首页,直接爆了,日志里疯狂报错:

*__checkpoint ⇢ ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]

halo-1    |     *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy@6befbb12
halo-1    | 
        *__checkpoint ⇢ run.halo.moments.rss.OldRssRouteRedirectionFilter@3e86a7b6
halo-1    |     *__checkpoint ⇢ site.zzrbk.plugin.captcha.CaptchaWebFilter@de0aa18

halo-1    |     *__checkpoint ⇢ io.github.shirainbown.sharelink.protect.UploadProtectFilter@20133623
halo-1    |     *__checkpoint ⇢ run.halo.comment.widget.captcha.CommentCaptchaFilter@32be8829
halo-1    | 
        *__checkpoint ⇢ run.halo.app.infra.webfilter.AdditionalWebFilterChainProxy@79d63a4f
halo-1    |     *__checkpoint ⇢ org.springframework.web.filter.reactive.ServerWebExchangeContextFilter@2e2b9f53
halo-1    | 
        *__checkpoint ⇢ run.halo.app.infra.webfilter.LocaleChangeWebFilter@527937d0
halo-1    |     *__checkpoint ⇢ org.springframework.web.filter.reactive.UrlHandlerFilter@21527b8
halo-1    |     *__checkpoint ⇢ run.halo.app.theme.UserLocaleRequestAttributeWriteFilter@23121d14
halo-1    |     *__checkpoint ⇢ HTTP GET "/" [ExceptionHandlingWebHandler]
halo-1    | Original Stack Trace:
halo-1    | 
at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at run.halo.app.theme.ReactiveSpelVariableExpressionEvaluator.evaluate(ReactiveSpelVariableExpressionEvaluator.java:40) ~[application.jar:2.26.0]
halo-1    | 
at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
                at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.processor.StandardEachTagProcessor.doProcess(StandardEachTagProcessor.java:73) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
                at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.queueProcessable(ProcessorTemplateHandler.java:2106) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
                at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1559) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.handlePending(ProcessorTemplateHandler.java:2054) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:234) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[reactor-core-3.8.6.jar:3.8.6]

halo-1    |             at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    | 
                at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.lambda$requestUpstream$0(FluxSubscribeOn.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
halo-1    | Caused by: java.lang.IllegalStateException: Timeout on blocking read for 10000000000 NANOSECONDS
halo-1    |     at reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:154) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.Mono.blockOptional(Mono.java:1854) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at run.halo.app.infra.utils.ReactiveUtils.blockReactiveValue(ReactiveUtils.java:61) ~[application.jar:2.26.0]
halo-1    |     at run.halo.app.infra.utils.ReactiveUtils.bl
ockReactiveValue(ReactiveUtils.java:39) ~[application.jar:2.26.0]
halo-1    |     at run.halo.app.theme.dialect.EvaluationContextEnhancer$ReactiveMethodExecutor.lambda$execute$1(EvaluationContextEnhancer.java:204) ~[application.jar:2.26.0]
halo-1    |     at java.base/java.util.Optional.map(Unknown Source) ~[na:na]
halo-1    |     at run.halo.app.theme.dialect.EvaluationContextEnhancer$ReactiveMethodExecutor.execute(EvaluationContextEnhancer.java:199) ~[application.jar:2.26.0]
halo-1    |     at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:223) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:125) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:66) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    | 
        at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:96) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:330) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
at run.halo.app.theme.ReactiveSpelVariableExpressionEvaluator.evaluate(ReactiveSpelVariableExpressionEvaluator.java:40) ~[application.jar:2.26.0]
halo-1    |     at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.processor.StandardEachTagProcessor.doProcess(StandardEachTagProcessor.java:73) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    | 
        at org.thymeleaf.engine.ProcessorTemplateHandler.queueProcessable(ProcessorTemplateHandler.java:2106) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1559) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handlePending(ProcessorTemplateHandler.java:2054) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplatePro
cessor.java:234) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(Flux
ContextWrite.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.lambda$requestUpstream$0(FluxSubscribeOn.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
halo-1    | Caused by: java.util.concurrent.TimeoutException: Timeout on blocking read for 10000000000 NANOSECONDS
halo-1    |     ... 45 common frames omitted
halo-1    | 
halo-1    | 2026-08-26T22:05:07.220+08:00 ERROR 1 --- [ctor-http-nio-4] o.s.w.s.adapter.HttpWebHandlerAdapter    : [13963857-63] Error [org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "menuFinder.getPrimary().menuItems" (template: "modules/header" - line 13, col 19)] for HTTP GET "/", but ServerHttpResponse already committed (200 OK)

halo-1    | 2026-08-26T22:05:07.221+08:00 ERROR 1 --- [ctor-http-nio-4] r.n.http.server.HttpServerOperations     : [13963857-1, L:/172.18.0.3:8090 - R:/172.18.0.1:34560] Error finishing response. Closing connection
halo-1    | 
halo-1    | org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "menuFinder.getPrimary().menuItems" (template: "modules/header" - line 13, col 19)
halo-1    |     at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: 
halo-1    | Error has been observed at the following site(s):
halo-1    |     *__checkpoint ⇢ Handler run.halo.app.theme.router.factories.IndexRouteFactory$$Lambda/0x000000010739b400@937bb41 [DispatcherHandler]
halo-1    | 
        *__checkpoint ⇢ run.halo.app.security.InitializeRedirectionWebFilter@1eb85a47
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    | 
        *__checkpoint ⇢ SwitchUserWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ AuthorizationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ ExceptionTranslationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ LogoutWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ ServerRequestCacheWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ ProfileCompletionFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ AnonymousAuthenticationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__check
point ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ DeviceSessionFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ MapOAuth2AuthenticationFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢  [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ ReactorContextWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ CsrfWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ CorsWebFilter [DefaultWebFilterChain]
halo-1    | 
        *__checkpoint ⇢ HttpHeaderWriterWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
halo-1    |     *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy@6befbb12
halo-1    |     *__checkpoint ⇢ run.halo.moments.rss.OldRssRouteRedirectionFilter@3e86a7b6
halo-1    |     *__checkpoint ⇢ site.zzrbk.plugin.captcha.CaptchaWebFilter@de0aa18
halo-1    |     *__checkpoint ⇢ io.github.shirainbown.sharelink.protect.UploadProtectFilter@20133623
halo-1    |     *__checkpoint ⇢ run.halo.comment.widget.captcha.CommentCaptchaFilter@32be8829
halo-1    |     *__checkpoint ⇢ run.halo.app.infra.webfilter.AdditionalWebFilterChainProxy@79d63a4f
halo-1    |     *__checkpoint ⇢ org.springframework.web.filter.reactive.ServerWebExchangeContextFilter@2e2b9f53
hal
o-1    |        *__checkpoint ⇢ run.halo.app.infra.webfilter.LocaleChangeWebFilter@527937d0
halo-1    |     *__checkpoint ⇢ org.springframework.web.filter.reactive.UrlHandlerFilter@21527b8
halo-1    |     *__checkpoint ⇢ run.halo.app.theme.UserLocaleRequestAttributeWriteFilter@23121d14
halo-1    |     *__checkpoint ⇢ HTTP GET "/" [ExceptionHandlingWebHandler]
halo-1    | Original Stack Trace:
halo-1    |             at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at run.halo.app.theme.ReactiveSpelVariableExpressionEvaluator.evaluate(ReactiveSpelVariableExpressionEvaluator.java:40) ~[application.jar:2.26.0]
halo-1    |             at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.stan
dard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.standard.processor.StandardEachTagProcessor.doProcess(StandardEachTagProcessor.java:73) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementT
agProcessor.java:95) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.queueProcessable(ProcessorTemplateHandler.java:2106) ~[thymeleaf-3.1.3.RELEASE.jar
:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1559) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ProcessorTemplateHandler.handlePending(ProcessorTemplateHandler.java:2054) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:234) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.engine.ThrottledTemplat
eProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |             at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxPeekFuseabl
e$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.lambda$requestUpstream$0(FluxSubscribeOn.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |             at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
halo-1    | Caused by: java.lang.IllegalStateException: Timeout on blocking read for 10000000000 NANOSECONDS
halo-1    |     at reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:154) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.Mono.blockOptional(Mono.java:1854) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at run.halo.app.infra.utils.ReactiveUtils.blockReactiveValue(Re
activeUtils.java:61) ~[application.jar:2.26.0]
halo-1    |     at run.halo.app.infra.utils.ReactiveUtils.blockReactiveValue(ReactiveUtils.java:39) ~[application.jar:2.26.0]
halo-1    |     at run.halo.app.theme.dialect.EvaluationContextEnhancer$ReactiveMethodExecutor.lambda$execute$1(EvaluationContextEnhancer.java:204) ~[application.jar:2.26.0]
halo-1    |     at java.base/java.util.Optional.map(Unknown Source) ~[na:na]
halo-1    |     at run.halo.app.theme.dialect.EvaluationContextEnhancer$ReactiveMethodExecutor.execute(EvaluationContextEnhancer.java:199) ~[application.jar:2.26.0]
halo-1    |     at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:223) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:125) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.CompoundExpressio
n.getValueRef(CompoundExpression.java:66) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:96) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:330) ~[spring-expression-7.0.8.jar:7.0.8]
halo-1    |     at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at run.halo.app.theme.ReactiveSpelVariableExpressionEvaluator.evaluate(ReactiveSpelVariableExpressionEvaluator.java:40) ~[application.jar:2.26.0]
halo-1    |     at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(Vari
ableExpression.java:166) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.standard.processor.StandardEachTagProcessor.doProcess(StandardEachTagProcessor.java:73) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]

halo-1    |     at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.Proce
ssorTemplateHandler.queueProcessable(ProcessorTemplateHandler.java:2106) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1559) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.Model.process(Model.java:300) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.OpenElementTagModelProcessable.process(OpenElementTagModelProcessable.java:110) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ProcessorTemplateHandler.handlePending(ProcessorTemplateHandler.java:2054) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:234) ~[thymeleaf-3
.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
halo-1    |     at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[react
or-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.lambda$requestUpstream$0(FluxSubscribeOn.java:138) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.6.jar:3.8.6]
halo-1    |     at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
halo-1    | Caused by: java.util.concurrent.TimeoutException: Timeout on blocking read for 10000000000 NANOSECONDS
halo-1    |     ... 45 common frames omitted
halo-1    | 

当时给我吓死了,然后就是整个博客卡死,页面无法刷新了。ai说这个和渲染有关,于是我又重启容器,在没有进入主页的情况下把主题换回来了,之后还是报错,插件列表里的一些原本能正常运行的也开始报错,当时就快疯了,因为我安装了一个插件,每次开容器都会自己备份一遍,而且最多只能保存五分备份,结果在我的多次重启情况下,旧的备份直接被顶掉了········

当时真的好绝望,已经重新建一个compose了,结果把新备份倒进去,还是一样的表现,我就好奇,这玩意还能传染的吗

又是不断的尝试,在我接近崩溃的时候,智商占领高地,我尝试把compose里的halo版本从2.26.0改成我以前一直用的2.25.4,完美复活。具体问题我不知道,但这次问题给了我巨大的教训,我相信我已经大概了解如何维护一个博客了。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

一次活生生的教训
/archives/KVzSUA2h
作者
Minedsa
发布于
2026-08-29
许可协议
CC BY-NC-SA 4.0

评论

欢迎来到我的博客!