Skip to content

Refreshing Live Data over HTTP is not working on VS Code #872

@Eskibear

Description

@Eskibear

Following https://github.com/spring-projects/sts4/wiki/Live-Application-Information , configure boot-java.remote-apps to get live data over http, it failed to refresh data.

Originally I wanted to connect my app running on Azure, which only expose actuator endpoints over HTTP (JMX port is internal, no public access). It failed to refresh the data. Then I tried locally, it also failed with same error message and same sts-log.

settings:

    "boot-java.remote-apps": [
        // {
        //     "host": "my-app-name.azuremicroservices.io",
        //     "jmxurl": "https://my-app-name.azuremicroservices.io/actuator"
        // },
        {
            "host": "localhost",
            "jmxurl": "http://localhost:8080/actuator"
        }
    ],

exception location:
https://github.com/spring-projects/sts4/blob/e9c813279f15f5f48144d5d8eb13c232e62c4134/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorOverHttp.java#L135

sts log:

15:56:50.895 [pool-10-thread-1] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorRemote - Creating RemoteStringBootApp: RemoteBootAppData [jmxurl=http://localhost:8080/actuator, host=localhost, urlScheme=https, port=443, manualConnect=false, keepChecking=true, processId=null, processName=null]
15:56:50.895 [pool-10-thread-1] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - connect to process: remote process - http://localhost:8080/actuator
15:56:50.895 [pool-10-thread-1] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Connecting to process: remote process - http://localhost:8080/actuator - retry no: 0
15:56:50.895 [pool-10-thread-1] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorRemote - updating settings for remote processses to track - done
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - refresh process: remote process - http://localhost:8080/actuator
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Refreshing data from Spring process: remote process - http://localhost:8080/actuator - retry no: 0
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - refresh process: remote process - http://localhost:8080/actuator
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Refreshing data from Spring process: remote process - http://localhost:8080/actuator - retry no: 0
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - refresh process: remote process - http://localhost:8080/actuator
15:56:50.900 [pool-6-thread-4] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Refreshing data from Spring process: remote process - http://localhost:8080/actuator - retry no: 0
...
15:57:18.055 [pool-6-thread-5] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Refreshing data from Spring process: remote process - http://localhost:8080/actuator - retry no: 10
15:57:21.069 [pool-6-thread-5] ERROR o.s.i.v.b.j.l.v.SpringProcessLiveDataExtractorOverJMX - Error parsing beans
org.springframework.web.client.HttpClientErrorException$NotFound: 404 : [no body]
	at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:113)
	at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168)
	at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
	at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
	at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819)
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777)
	at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
	at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:334)
	at org.springframework.ide.vscode.boot.java.livehover.v2.HttpActuatorConnection.getLiveMetrics(HttpActuatorConnection.java:87)
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDataExtractorOverHttp.getLiveMetrics(SpringProcessLiveDataExtractorOverHttp.java:388)
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDataExtractorOverHttp.retrieveLiveGcPausesMetricsData(SpringProcessLiveDataExtractorOverHttp.java:201)
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorOverHttp.refreshGcPausesMetrics(SpringProcessConnectorOverHttp.java:120)
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorService.lambda$scheduleRefresh$4(SpringProcessConnectorService.java:247)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
15:57:21.071 [pool-6-thread-5] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - problem occured during process live data refresh
java.lang.Exception: no live gc pauses metric data received, lets try again
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorOverHttp.refreshGcPausesMetrics(SpringProcessConnectorOverHttp.java:135)
	at org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorService.lambda$scheduleRefresh$4(SpringProcessConnectorService.java:247)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
15:57:21.071 [pool-6-thread-5] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - disconnect from process: remote process - http://localhost:8080/actuator
15:57:21.071 [pool-6-thread-5] INFO  o.s.i.v.b.j.l.v.SpringProcessConnectorService - Disconnect from process: remote process - http://localhost:8080/actuator - retry no: 0

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions