Skip to content

Conversation

@NicoPiel
Copy link

@NicoPiel NicoPiel commented Nov 19, 2025

Changelog:

  1. Server:

    • Modified ServerLogItem to include channelName, updated constructor, getters/setters.
    • Modified ServerLogProvider to pass channelName to ServerLogItem.
    • Modified ArrayAppender to extract channelName and channelId from Log4j ThreadContext.
    • Modified JavaScriptTask to populate ThreadContext with channel info.
  2. Donkey Engine:

    • Modified Channel to populate ThreadContext in dispatch and source queue threads.
    • Modified DestinationChain to populate ThreadContext using channel info.
    • Modified DestinationConnector to populate ThreadContext in queue threads.
  3. Client:

    • Modified ServerLogPanel to add "Channel" column to the UI table.

NicoPiel and others added 20 commits November 20, 2025 15:11
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
This script is the main launcher for the Open Integration Engine (OIE)
server. It prepares the Java environment and executes the server launcher
JAR file.

The script automatically finds a compatible Java runtime (version 17+ by
default) by searching for a valid executable in the following priority order:
  1. The OIE_JAVA_PATH environment variable.
  2. The -java-cmd directive in the oieserver.vmoptions file or included
     .vmoptions files. Must specify the path to the 'java' executable.
     This is the preferred way to declare the desired version for running
     the server and can be overridden by OIE_JAVA_PATH. Can be a relative
     path from the location of this script.
  3. The JAVA_HOME environment variable.
  4. The 'java' command available in the system's PATH.

It also parses the 'oieserver.vmoptions' file to configure JVM options,
system properties (-D...), and classpath modifications.

Signed-off-by: Tony Germano <[email protected]>
Co-authored-by: Mitch Gaffigan <[email protected]>
Issue: OpenIntegrationEngine#2
Signed-off-by: Nico Piel <[email protected]>
This addresses an upsert race condition that occurred when saving plugin
properties (e.g., Data Pruner settings, third-party plugins) in
environments with a read/write split database configuration where the
read-only connection points to a replica.

The Problem:
The prior code attempted to determine whether to INSERT or
UPDATE by first checking for the property's existence using the
read-only database connection. Since updating all properties for a
plugin involves deleting them all first, if this DELETE operation had
not yet propagated to the replica, the read-only check would incorrectly
indicate the property still existed.

The Result:
An UPDATE statement would be attempted, which would fail to
match any rows (since the data had already been deleted from the
primary) and silently return zero rows updated. This failure was not
being checked, leading to data loss for the affected property.

The Solution:
This change eliminates the preliminary read check. It now
attempts an UPDATE first. If the update affects zero rows, a guaranteed
INSERT is performed. This pattern ensures atomicity and correctness
regardless of replication latency.

See https://sqlperformance.com/2020/09/locking/upsert-anti-pattern

Issue: Innovar-Healthcare/BridgeLink#66
Signed-off-by: Tony Germano <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Mitch Gaffigan <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Mitch Gaffigan <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Many of the extensions do not include external dependencies, but for
consistency in the build file all extensions attempt to copy libs if
they exist. The copy tasks were already to configured to not fail if
there was an error copying the files (because the source dir does not
exist in this case.) This change also sets the quiet option so that a
warning is not produced in the build output on a copy error.

Signed-off-by: Tony Germano <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Tony Germano <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Signed-off-by: Nico Piel <[email protected]>
Changes the ArrayAppender to construct a ServerLogItem directly
instead of passing individual log properties.

The ServerLogProvider now accepts a ServerLogItem, extracts the log
properties, adds the server ID and log ID, and then passes the log
item to the log controller.

This change simplifies the code and makes it more efficient by
reducing the number of parameters passed and centralizing the
creation of the ServerLogItem.

Signed-off-by: Nico Piel <[email protected]>
Ensures that the ServerLogItem properties are initialized with default values when retrieving them from the context.
This prevents null pointer exceptions or unexpected behavior when these properties are not explicitly set in the context.

Signed-off-by: Nico Piel <[email protected]>
@NicoPiel NicoPiel force-pushed the feature/logging-improvements branch from 9fce32c to 3c94136 Compare November 20, 2025 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants