Skip to content

Unreachable BPM engine triggers duplicate "Connection refused" errors from EngineUiServiceImpl #305

Description

@rusiaikinat

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

  1. Configure a BPM engine with an unreachable Base URL (e.g. Camunda not running on that host/port).
Image
  1. Log in to the application.
  2. Open the "BPM engines" list.
  3. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageIssue is waiting for triage

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions