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

Not able to monitor Spring Boot 1.x components after upgrading to 2.4.0 #1638

Closed
zeljko-mirovic opened this issue Feb 19, 2021 · 7 comments
Closed

Comments

@zeljko-mirovic
Copy link

zeljko-mirovic commented Feb 19, 2021

After upgrading to Spring Boot Admin 2.4.0 and Spring Boot 2.4.2, I am getting the following error when Spring Boot Admin is updating the status of a monitored component:

2021-02-19 12:11:11.426 DEBUG [     parallel-1] [IntervalCheck.java:93] check status for all instances
2021-02-19 12:11:11.426 DEBUG [     parallel-1] [StatusUpdater.java:74] Update status for Instance(id=46e6e344c534, version=1, registration=Registration(name=test, managementUrl=http://localhost:10100/manage, healthUrl=http://localhost:10100/manage/health, serviceUrl=http://localhost:10100/, source=discovery), registered=true, statusInfo=StatusInfo(status=OFFLINE, details={exception=java.lang.IllegalStateException, message=Only one connection receive subscriber allowed.}), statusTimestamp=2021-02-19T11:10:14.476Z, info=Info(values={}), endpoints=Endpoints(endpoints={health=Endpoint(id=health, url=http://localhost:10100/manage/health)}), buildVersion=null, tags=Tags(values={}))
2021-02-19 12:11:11.429 TRACE [     parallel-1] [Loggers.java:229] | onSubscribe([Fuseable] MonoFlatMap.FlatMapMain)
2021-02-19 12:11:11.429 TRACE [     parallel-1] [Loggers.java:229] | request(unbounded)
2021-02-19 12:11:11.433 DEBUG [ctor-http-nio-2] [Loggers.java:249] [id: 0x48784ef2, L:/127.0.0.1:10000 - R:localhost/127.0.0.1:10100] FluxReceive{pending=0, cancelled=false, inboundDone=false, inboundError=null}: subscribing inbound receiver
2021-02-19 12:11:11.434 TRACE [ctor-http-nio-2] [Loggers.java:229] | onError(java.lang.IllegalStateException: Only one connection receive subscriber allowed.)
2021-02-19 12:11:11.434 TRACE [ctor-http-nio-2] [Loggers.java:234] 

java.lang.IllegalStateException: Only one connection receive subscriber allowed.
	at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:180)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint - Body from GET http://localhost:10100/manage/health [DefaultClientResponse]
	|_ checkpoint - Body from GET http://localhost:10100/manage/health [DefaultClientResponse]
Stack trace:
		at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:180)
		at reactor.netty.channel.FluxReceive.subscribe(FluxReceive.java:144)
		at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
		at reactor.netty.ByteBufFlux.subscribe(ByteBufFlux.java:340)
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)
		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:73)
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1815)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:130)
		at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onNext(FluxDoOnEach.java:173)
		at org.springframework.cloud.sleuth.instrument.web.client.TraceExchangeFilterFunction$TraceWebClientSubscriber.onNext(TraceWebClientBeanPostProcessor.java:220)
		at org.springframework.cloud.sleuth.instrument.web.client.TraceExchangeFilterFunction$TraceWebClientSubscriber.onNext(TraceWebClientBeanPostProcessor.java:183)
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
		at reactor.core.publisher.FluxRetry$RetrySubscriber.onNext(FluxRetry.java:86)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.onNext(FluxTimeout.java:179)
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:250)
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2397)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribeInner(MonoFlatMapMany.java:150)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onSubscribe(MonoFlatMapMany.java:245)
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
		at reactor.core.publisher.Flux.subscribe(Flux.java:8156)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:195)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:173)
		at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:160)
		at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:385)
		at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:638)
		at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onStateChange(DefaultPooledConnectionProvider.java:195)
		at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnection.onStateChange(DefaultPooledConnectionProvider.java:466)
		at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:628)
		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
		at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
		at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at java.lang.Thread.run(Thread.java:748)

2021-02-19 12:11:11.435 DEBUG [ctor-http-nio-2] [StatusUpdater.java:124] Couldn't retrieve status for Instance(id=46e6e344c534, version=1, registration=Registration(name=test, managementUrl=http://localhost:10100/manage, healthUrl=http://localhost:10100/manage/health, serviceUrl=http://localhost:10100/, source=discovery), registered=true, statusInfo=StatusInfo(status=OFFLINE, details={exception=java.lang.IllegalStateException, message=Only one connection receive subscriber allowed.}), statusTimestamp=2021-02-19T11:10:14.476Z, info=Info(values={}), endpoints=Endpoints(endpoints={health=Endpoint(id=health, url=http://localhost:10100/manage/health)}), buildVersion=null, tags=Tags(values={}))

java.lang.IllegalStateException: Only one connection receive subscriber allowed.
	at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:180)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint - Body from GET http://localhost:10100/manage/health [DefaultClientResponse]
	|_ checkpoint - Body from GET http://localhost:10100/manage/health [DefaultClientResponse]
Stack trace:
		at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:180)
		at reactor.netty.channel.FluxReceive.subscribe(FluxReceive.java:144)
		at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
		at reactor.netty.ByteBufFlux.subscribe(ByteBufFlux.java:340)
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)
		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:73)
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1815)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:130)
		at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onNext(FluxDoOnEach.java:173)
		at org.springframework.cloud.sleuth.instrument.web.client.TraceExchangeFilterFunction$TraceWebClientSubscriber.onNext(TraceWebClientBeanPostProcessor.java:220)
		at org.springframework.cloud.sleuth.instrument.web.client.TraceExchangeFilterFunction$TraceWebClientSubscriber.onNext(TraceWebClientBeanPostProcessor.java:183)
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
		at reactor.core.publisher.FluxRetry$RetrySubscriber.onNext(FluxRetry.java:86)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.onNext(FluxTimeout.java:179)
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:250)
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2397)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribeInner(MonoFlatMapMany.java:150)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onSubscribe(MonoFlatMapMany.java:245)
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
		at reactor.core.publisher.Flux.subscribe(Flux.java:8156)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:195)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:173)
		at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:160)
		at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:385)
		at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:638)
		at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onStateChange(DefaultPooledConnectionProvider.java:195)
		at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnection.onStateChange(DefaultPooledConnectionProvider.java:466)
		at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:628)
		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
		at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
		at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at java.lang.Thread.run(Thread.java:748)

The monitored component is responding correctly on health and info actuator endpoints.

Everything was working with Spring Boot Admin 2.3.1 and Spring Boot 2.3.6.RELEASE.

@erikpetzold
Copy link
Member

we had the same message in #1631

@zeljko-mirovic
Copy link
Author

zeljko-mirovic commented Feb 19, 2021

we had the same message in #1631

Thank you for the hint.

Spring Boot Admin is using Accept: application/vnd.spring-boot.actuator.v2+json, application/vnd.spring-boot.actuator.v1+json, application/json in the request, but if the returned response has Content-Type: application/vnd.spring-boot.actuator.v1+json or Content-Type: application/json, the error mentioned above will arise.

In case the response is using Content-Type: application/vnd.spring-boot.actuator.v3+json, StatusUpdater will fallback to Spring Boot 1.x type of response to convert it, and InfoUpdater will not be able to convert response.

Everything works perfectly only with Content-Type: application/vnd.spring-boot.actuator.v2+json.

@zeljko-mirovic zeljko-mirovic changed the title Error on retrieving component status after upgrading to 2.4.0 Not able to monitor Spring Boot 1.x component after upgrading to 2.4.0 Feb 19, 2021
@zeljko-mirovic zeljko-mirovic changed the title Not able to monitor Spring Boot 1.x component after upgrading to 2.4.0 Not able to monitor Spring Boot 1.x components after upgrading to 2.4.0 Feb 19, 2021
@ccoltx
Copy link
Contributor

ccoltx commented Feb 20, 2021

Thanks for providing the additional info. Can you provide a sample app which reproduces the issue.

FYI - @codecentric/spring-boot-admins
spring-boot 2.2 deprecated v1 and introduced v3. spring-boot 2.4 removed support for v1. SBA does not yet support v3

spring-projects/spring-boot@deb9d67#diff-c6064413bdac002275dc063ba502bccbf6a848eb3b075b86764f397883793c9f

spring-projects/spring-boot@8f102ae#diff-c6064413bdac002275dc063ba502bccbf6a848eb3b075b86764f397883793c9f

@zeljko-mirovic
Copy link
Author

zeljko-mirovic commented Feb 22, 2021

applications.zip contatins six applications.

Four applications are simple Spring Boot applications without security, exposing health and info actuator endpoints. The health endpoint shows details always, and the info endpoint shows build info.
Spring versions used:

  • Spring Boot v1.4.7 - using application/json for a response.
  • Spring Boot v1.5.22 - using application/vnd.spring-boot.actuator.v1+json for a response.
  • Spring Boot v2.1.18 - using application/vnd.spring-boot.actuator.v2+json for a response.
  • Spring Boot v2.4.3 - using application/vnd.spring-boot.actuator.v2+json or application/vnd.spring-boot.actuator.v3+json for a response.

Besides them, there are two versions of Spring Boot Admin:

  • Spring Boot Admin v2.3.1 using Spring Boot 2.3.9.RELEASE.
  • Spring Boot Admin v2.4.0 using Spring Boot 2.4.3.

Both of them are configured to monitor all four Spring Boot applications, using a static configuration with SimpleDiscoveryClient.

Additionally, I wrote the test to check is Spring Boot Admin registers mocked versions of applications (health and info responses are mocked). The test has five scenarios:

  • Spring Boot v1.4.x responses using application/json.
  • Spring Boot v1.5.x responses using application/vnd.spring-boot.actuator.v1+json.
  • Spring Boot v2.1.x responses using application/vnd.spring-boot.actuator.v2+json.
  • Spring Boot v2.4.x responses using application/vnd.spring-boot.actuator.v2+json.
  • Spring Boot v2.4.x responses using application/vnd.spring-boot.actuator.v3+json.

The last scenario is not a real-life scenario because Spring Boot admin uses the Accept header without the v3 media type. It is added to cover all possible responses.

Test scenarios that are failing are disabled.

@joshiste
Copy link
Collaborator

may be the IllegalStateException is due to reactor/reactor-netty#1513 ?

@zeljko-mirovic
Copy link
Author

may be the IllegalStateException is due to reactor/reactor-netty#1513 ?

That one is pointing to spring-cloud/spring-cloud-sleuth/issues#1854, but there is no Spring Cloud Sleuth in the provided example.

@zeljko-mirovic
Copy link
Author

The issue is also reproducible with Spring Boot v2.4.4.

zeljko-mirovic added a commit to zeljko-mirovic/spring-boot-admin that referenced this issue Mar 22, 2021
After upgrading to Spring Boot 2.4.x `LegacyEndpointConverter` was never called.
Switching to the `ClientResponse` builder method, which transforms the existing body directly, instead of changing the body and setting it in two steps, solves the problem.
@SteKoe SteKoe closed this as completed in 88156ed Apr 9, 2021
SteKoe added a commit to ParkerM/spring-boot-admin that referenced this issue Apr 16, 2021
…-relpaths

* origin/master:
  Add retry on failing subscription (codecentric#1697)
  chore(deps): update dependency pl.project13.maven:git-commit-id-plugin to v4.0.4 (codecentric#1663)
  chore(deps): update dependency com.puppycrawl.tools:checkstyle to v8.41.1 (codecentric#1648)
  Fix for codecentric#1638 (codecentric#1673)
  Improve npm ci build times (see codecentric#1688) (codecentric#1689)
  Improved execution of grouped assertions (codecentric#1674)
  Use maven repo cache during publish snapshots (codecentric#1687)
  chore(deps): update metcalfc/changelog-generator action to v1 (codecentric#1669)
  chore(deps): update dependency org.codehaus.mojo:flatten-maven-plugin to v1.2.7 (codecentric#1686)
  Fix file formating by applying spring-javaformat:apply (codecentric#1685)
  Cache mvn repo in main build (see codecentric#1677 ) (codecentric#1678)
  Added support DingTalk notifier. (codecentric#1653)
  Simplify some code (codecentric#1670)
  Bugfix/1646 (codecentric#1661)
  Upgrade spring cloud dependencies (codecentric#1645)
  chore(deps): update dependency com.github.eirslett:frontend-maven-plugin to v1.11.2 (codecentric#1635)
  chore(deps): update spring boot to v2.4.3 (codecentric#1637)
  Bump version to 2.4.1-SNAPSHOT
  chore(deps): update testcontainers.version to v1.15.2 (codecentric#1629)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants