Troubleshooting Bridging Transactions
A transaction that does not behave as expected fails in one of three ways: it never runs, it runs and fails, or it runs and succeeds while producing the wrong result. Each has its own evidence, and Bridging provides a tool for each. This topic explains what to look at, in what order, and what the common causes turn out to be. Learn more
Work Outward from the Diagram
Before looking at the runtime, use the checks that are built into the configuration.
-
Validation Log—The Template Designer validates the diagram as you edit it and reports problems in the Validation Log: an activity that is not reachable, a required field left empty, a duplicated activity name, or a link that leads nowhere. A diagram with validation errors will not behave predictably at runtime.
-
Test Transaction—Right-clicking a transaction in Workbench and selecting Test Transaction runs it immediately and shows the Transaction Log for that run. This is the fastest loop while building a workflow, because it separates a configuration problem from a triggering problem.
-
Expression syntax check—The expression editor validates an expression before you accept it. A syntactically valid expression can still reference a column that does not exist, so also check the Data Schema of the activity you are reading from.
When the Transaction Never Runs
If no log record appears at all, the request never reached the engine, was suppressed before execution, or is not being recorded.
|
Cause |
What to check |
|---|---|
|
The services are not running |
GENESIS Bridging Point Manager and GENESIS Bridging Scheduler must both be running, plus GENESIS Triggers Point Manager if the transaction is triggered. |
|
The transaction or configuration is disabled |
The transaction is enabled must be selected on the transaction, and Active Configuration on the Transaction Configuration that contains it. A transaction in an inactive configuration is not scheduled. |
|
The trigger is not firing |
Subscribe to the trigger tag in Data Explorer and confirm it changes. Confirm the tag is listed and Enabled on the Transaction Execution tab. Learn more |
|
The request was suppressed as a duplicate |
Transaction Options can reject a request while a similar instance is running or queued. Instances are compared by transaction and global alias themes, not by parameter values. Learn more |
|
The queue is full |
With local scheduling, Max. Queue Length limits the queue, and When queue is full determines what happens to further requests. |
|
An alarm subscription matches nothing |
The Filter Expression may exclude every alarm, or the severity range on the subscription may not include the alarms you expect. |
When the Transaction Fails
A failed execution names both the failing activity and its error. Read the transaction log for the run, find the last activity that executed, and read its error text. If the log shows only workflow messages, raise Execution Log to trace activity information, and run it again. Learn more
|
Symptom |
Common cause |
|---|---|
|
The activity reports a timeout |
The activity's own Timeout under Timeout Settings, or the transaction's Timeout, is shorter than the work takes. An external program or a slow query needs both raised. |
|
A reader fails on data quality |
Succeed only if All tag values have Good Quality fails the activity when any tag is bad. Clear it, or fix the source. |
|
A writer succeeds but nothing changes |
With Fast Write Option selected, a tag writer does not wait for write confirmation and assumes success. Clear it while diagnosing. |
|
An expression produces the wrong type |
The log records a conversion failure naming the parameter or column. Wrap a numeric conversion around a value read from a file—file readers return strings. |
|
A command line or file transfer does not run |
Command Line Activity and File Transfer Activity are security critical and disabled by default. The trace log reports |
|
An external program appears to do nothing |
Standard error is not returned in the output dataset. Look in the trace log for a |
|
A loop never ends |
The transaction runs until its Timeout expires. Confirm the activity that changes the loop variable is on the repeating path. Learn more |
|
Transactions are lost after a restart |
Recovery Mode is disabled, so interrupted transactions are not resubmitted. |
When the Result Is Wrong
The hardest case is a transaction that reports success and writes the wrong values. In this case, the data step traces are the tool: they record each expression the activity evaluated and the value it produced, so you can see exactly where the data diverged from what you intended.
Set Execution Log to Trace workflow information, activity information and every data step within the activity, run the transaction, and read the data steps of the suspect activity. The most frequent causes are the following.
|
Cause |
What to check |
|---|---|
|
Wrong column index |
Every reader returns a dataset, even for a single tag. In a Real Time Input activity, column 0 is PointName, and column 1 is Value, so an expression that reads Col[0] returns the tag name rather than its value. Check the activity's Data Schema. |
|
Wrong row |
Rows are zero-based, so a counter that starts at 1—or one that starts at the row count—addresses the wrong row. Learn more |
|
Stale schema |
Changing an activity's options can change the columns it produces. Click (Reset) in Data Schema so that the declared columns match reality, and (Click to refresh the variables) in the Template Designer after changing a variable. |
|
Shared global variable |
Two parallel instances writing the same global variable overwrite each other. Use a local variable for anything belonging to a single instance. Learn more |
|
Unexpected alias resolution |
A transaction resolves its aliases from Default Themes, or from the themes overridden on the trigger. A workflow that acts on the wrong asset is usually resolving the wrong theme. |
Adding Debug Information to Transactions
When the log alone is not enough, make the transaction report on itself.
|
Technique |
How to do it |
|---|---|
|
Post an event |
Add an Audit Event Output Activity to a branch to write a free-format message that appears in any alarm viewer, so that you can confirm which path a transaction took. The message field accepts shortcuts, so |
|
Publish a debug value |
Write an intermediate value to a global variable with a Real Time Output or Variable Writer activity, and show |
|
Record that a block ran |
Select Post Event when block processed, which the notification activities offer, to record that the block completed without adding another activity to the diagram. |
TraceWorX Log
TraceWorX carries the messages that the transaction log does not: the point manager subscribing and unsubscribing points, the workflow engine scheduling and submitting work, the logging service writing records, the archiver running its cycles, the recovery service resubmitting abandoned transactions, and the standard error of any external process. Use it when the transaction log is silent or when the problem looks like it is in the engine rather than in the workflow. Learn more
Raising the trace level has a measurable cost on a busy server. Raise it to reproduce a problem, then return it to its previous level. Learn more