Common Problems and Pitfalls
A Large Number of Errors Appears During Ember Startup
During start up, Ember restores the system state by replaying historical orders and events.
Large numbers of WARN
or ERROR
level log messages during this phase may be caused by one of the following reasons:
Missing Instrument
You may encounter large numbers of error messages when the system has orders for instruments that are no longer in your Security Metadata stream. Ember needs instrument metadata to correctly process each historical order and calculate its effect on positions.
Troubleshooting
To troubleshoot this issue, try the following options:
- Restore missing instruments.
- Scrub the journal using the
journal-transform
tool by deleting all messages for expired instruments.
Missing Destination
You may encounter large numbers of error messages when the system has orders for a destination that was removed from Ember configuration. For example, you previously traded on CME directly, but now use the Vela Trading gateway. Unless you keep trading, Ember will complain any time it sees an order with an invalid connector. The same applies to other execution algorithms.
Troubleshooting
To fix this problem, in the engine settings, list the destinations you no longer need that have accumulated orders as nullDestination
. Note that unless you maintain per destination positions, Ember will eventually expunge old orders from the journal and this problem can take care of itself.
Missing Risk Rule Projection
You may encounter large numbers of error messages when your journal records limits for risk projections that are no longer configured.
Troubleshooting
To clean up your journal, use the journal-transform
tool.
FIX Messages Are Displayed Without Field Separators
When troubleshooting order entry problems, one often has to look up a FIX message, sometimes via SSH.
To look up a FIX message via SSH, use this handy kung fu move in the command line:
tail -n 10 BOSONICMM-2021-04-14.99.messages | sed 's/\x01/\|/g'
How to Manually Backup or Remove a Journal
In most situations, you should not need to remove the journal. In case you do, Ember warehouses can be used as backup. However, sometimes the direct removal or manual backup of a journal directory is required.
If Ember is running:
- Use Ember's
/opt/deltix/ember/bin/journal-compress
tool to create a backup of a live system that will take care of unflushed in-memory buffers containing recent data.
If Ember is not running:
- Backup the
/var/deltix/emberwork/journal
directory ($EMBER_WORK/journal).
If Ember is not running and the system is deployed under Kubernetes (and you have no easy access to Ember volume), temporarily redefine the entrypoint for Ember pod to /bin/sh
using the following procedure:
Go to the Kubernetes Dashboard GUI.
Switch to Stateful Sets.
On the ember row, click Edit.
Locate the ember container and change
command
to the following code.
Be careful with spaces:command:
- /bin/sh
- '-c'
- tail -f /dev/null -n 10Click Save.
Restart Ember by scaling Ember to 0, then back to 1.
Now you can backup$EMBER_WORK/journal
, which is mapped to/var/deltix/emberwork/journal
under Docker.Go back, remove the command line entries, and repeat the steps.
If you use TimeBase data warehouse you may also want to clear/move existing data warehouse streams, to prepare for message sequence number reset. Other warehouses handle journal term.