发现新bug,我在修改产品属性时(仅修改某SKU价格),报错:请求中存在重复的规格ID 24
日志如下:
`root@iZbp1911ve106viij5bby0Z:~# docker logs -f halo -n 100
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:155) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:239) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.requestUpstream(FluxSubscribeOn.java:134) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onSubscribe(FluxSubscribeOn.java:127) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:178) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:103) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxGenerate.subscribe(FluxGenerate.java:85) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:67) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:197) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.5.jar:3.8.5]
at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'agreedToTerms' of bean class [run.halo.app.core.user.service.SignUpData]: Bean property 'agreedToTerms' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
at org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:620) ~[spring-beans-7.0.7.jar:7.0.7]
at org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:611) ~[spring-beans-7.0.7.jar:7.0.7]
at org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:102) ~[spring-context-7.0.7.jar:7.0.7]
at org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:222) ~[spring-context-7.0.7.jar:7.0.7]
at org.springframework.web.reactive.result.view.BindStatus.<init>(BindStatus.java:120) ~[spring-webflux-7.0.7.jar:7.0.7]
at org.springframework.web.reactive.result.view.RequestContext.getBindStatus(RequestContext.java:433) ~[spring-webflux-7.0.7.jar:7.0.7]
at org.thymeleaf.spring6.context.webflux.SpringWebFluxThymeleafRequestContext.getBindStatus(SpringWebFluxThymeleafRequestContext.java:232) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.util.FieldUtils.getBindStatus(FieldUtils.java:253) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.util.FieldUtils.getBindStatus(FieldUtils.java:227) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.util.FieldUtils.checkErrors(FieldUtils.java:212) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.util.FieldUtils.hasErrors(FieldUtils.java:71) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.expression.Fields.hasErrors(Fields.java:58) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114) ~[spring-expression-7.0.7.jar:7.0.7]
at run.halo.app.theme.dialect.EvaluationContextEnhancer$ReactiveMethodExecutor.execute(EvaluationContextEnhancer.java:210) ~[application.jar:2.24.2]
at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221) ~[spring-expression-7.0.7.jar:7.0.7]
at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453) ~[spring-expression-7.0.7.jar:7.0.7]
at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97) ~[spring-expression-7.0.7.jar:7.0.7]
at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114) ~[spring-expression-7.0.7.jar:7.0.7]
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:330) ~[spring-expression-7.0.7.jar:7.0.7]
at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at run.halo.app.theme.ReactiveSpelVariableExpressionEvaluator.evaluate(ReactiveSpelVariableExpressionEvaluator.java:39) ~[application.jar:2.24.2]
at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.processor.StandardIfTagProcessor.isVisible(StandardIfTagProcessor.java:59) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.standard.processor.AbstractStandardConditionalVisibilityTagProcessor.doProcess(AbstractStandardConditionalVisibilityTagProcessor.java:61) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:155) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:239) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.ThrottledTemplateProcessor.process(ThrottledTemplateProcessor.java:204) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.SpringWebFluxTemplateEngine$StreamThrottledTemplateProcessor.process(SpringWebFluxTemplateEngine.java:739) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createChunkedStream$2(SpringWebFluxTemplateEngine.java:269) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at reactor.core.publisher.FluxGenerate$GenerateSubscription.slowPath(FluxGenerate.java:270) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxGenerate$GenerateSubscription.request(FluxGenerate.java:212) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.requestUpstream(FluxSubscribeOn.java:134) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onSubscribe(FluxSubscribeOn.java:127) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:178) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:103) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxGenerate.subscribe(FluxGenerate.java:85) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:67) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:197) ~[reactor-core-3.8.5.jar:3.8.5]
at reactor.core.scheduler.BoundedElasticThreadPerTaskScheduler$SchedulerTask.run(BoundedElasticThreadPerTaskScheduler.java:1016) ~[reactor-core-3.8.5.jar:3.8.5]
at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
2026-06-03T07:54:38.992+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : Begin update Certificates. total updates: 36
2026-06-03T07:54:39.219+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : update wechatpay certificate 1746374692-RSA done
2026-06-03T08:54:38.992+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : Begin update Certificates. total updates: 37
2026-06-03T08:54:39.244+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : update wechatpay certificate 1746374692-RSA done
2026-06-03T09:54:38.992+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : Begin update Certificates. total updates: 38
2026-06-03T09:54:39.210+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : update wechatpay certificate 1746374692-RSA done
2026-06-03T10:54:38.992+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : Begin update Certificates. total updates: 39
2026-06-03T10:54:39.240+08:00 INFO 1 --- [ervice-daemon-1] c.w.p.j.c.c.AutoCertificateService : update wechatpay certificate 1746374692-RSA done
2026-06-03T11:00:11.760+08:00 INFO 1 --- [ail-generator-3] r.h.a.c.a.t.DefaultLocalThumbnailService : Generated thumbnail for path: /root/.halo2/attachments/upload/4-grMY.jpg, target: /root/.halo2/attachments/thumbnails/w1200/upload/4-grMY.jpg, size: L
2026-06-03T11:00:11.810+08:00 INFO 1 --- [ail-generator-1] r.h.a.c.a.t.DefaultLocalThumbnailService : Generated thumbnail for path: /root/.halo2/attachments/upload/2-pqvb.jpg, target: /root/.halo2/attachments/thumbnails/w1200/upload/2-pqvb.jpg, size: L
2026-06-03T11:00:11.841+08:00 INFO 1 --- [ail-generator-4] r.h.a.c.a.t.DefaultLocalThumbnailService : Generated thumbnail for path: /root/.halo2/attachments/upload/5-JsSt.jpg, target: /root/.halo2/attachments/thumbnails/w1200/upload/5-JsSt.jpg, size: L`