Product: Flowset Control Enterprise
Version: 2.0.999-SNAPSHOT
Description
Displaying "Engine Time" (introduced in #261 triggers a REST call to the engine (getVersion) independently from at least three different places in the UI, with no caching between them. For engines that are unreachable, each of these calls logs a full stack trace at ERROR level, so the same connection failure is logged repeatedly for a single user action, and in one case the call is made even though its result is never shown to the user.
Steps to reproduce
- Configure a BPM engine with an unreachable Base URL (e.g. Camunda not running on that host/port).
- Log in to the application.
- Open the "BPM engines" list.
- Open that engine's detail view.
Actual behavior
- On login:
EngineItemFragment.setItem (engine-selector popover in the header) calls getVersion() for every configured engine, logging feign.RetryableException: Connection refused ... at ERROR level for each unreachable one.
- On opening the BPM engines list:
BpmEngineListView repeats the same call per row for the "Engine Time" column, logging the same error again.
- On opening a single engine's detail view:
BpmEngineDetailView.updateTimeField makes the same call again — even when the Engine Time field is not shown on this screen, so the result is discarded.
2026-09-25T16:17:29.894+04:00 ERROR 15348 --- [nio-8082-exec-2] i.f.c.s.engine.impl.EngineUiServiceImpl : Error on loading the version from engine 'http://localhost:8052/engine-rest'
feign.RetryableException: Connection refused: getsockopt executing GET http://localhost:8052/engine-rest/version
at feign.FeignException.errorExecuting(FeignException.java:300) ~[feign-core-13.6.1.jar:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:105) ~[feign-core-13.6.1.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:53) ~[feign-core-13.6.1.jar:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:104) ~[feign-core-13.6.1.jar:na]
at jdk.proxy2/jdk.proxy2.$Proxy309.getRestAPIVersion(Unknown Source) ~[na:na]
at io.flowset.control.service.engine.impl.EngineTimeResolver.registerEngineTime(EngineTimeResolver.java:91) ~[main/:na]
Expected behavior
- The engine version/time lookup should not be repeated independently in multiple places for the same engine within a short time window — some caching or shared state should be used.
- The detail view should not call
getVersion() for engine time when that value isn't displayed on the screen.
- Connection failures to configured-but-unreachable engines during these background lookups should not be logged as full ERROR-level stack traces on every occurrence (e.g. log a concise WARN, or throttle repeated failures for the same engine).
Impact
Logs fill up with repeated stack traces for the same known issue (unreachable engine), making it harder to spot real errors. The detail-view case also causes an unnecessary REST call and connection attempt for data that is never displayed.
Product: Flowset Control Enterprise
Version: 2.0.999-SNAPSHOT
Description
Displaying "Engine Time" (introduced in #261 triggers a REST call to the engine (
getVersion) independently from at least three different places in the UI, with no caching between them. For engines that are unreachable, each of these calls logs a full stack trace at ERROR level, so the same connection failure is logged repeatedly for a single user action, and in one case the call is made even though its result is never shown to the user.Steps to reproduce
Actual behavior
EngineItemFragment.setItem(engine-selector popover in the header) callsgetVersion()for every configured engine, loggingfeign.RetryableException: Connection refused ...at ERROR level for each unreachable one.BpmEngineListViewrepeats the same call per row for the "Engine Time" column, logging the same error again.BpmEngineDetailView.updateTimeFieldmakes the same call again — even when the Engine Time field is not shown on this screen, so the result is discarded.Expected behavior
getVersion()for engine time when that value isn't displayed on the screen.Impact
Logs fill up with repeated stack traces for the same known issue (unreachable engine), making it harder to spot real errors. The detail-view case also causes an unnecessary REST call and connection attempt for data that is never displayed.