Debugging & Logs
For version 3, we have improved the debug abilities of our software. For those who are interested, this topic will describe how to activate the special debug mode and how to understand what's happening in detail.
To activate the debug view, double-click the HTS icon in the top left. This is the general overview. You can see the general statistics and health on this view.
The chart is showing 2 very important lines. We have set up a separate thread which is counting the seconds that have passed; this is called the heartbeat. We are expecting to count 20 seconds each time we update the chart. If the chart shows fewer heartbeats, then something is wrong. This is a telltale sign of a CPU that cannot handle the load placed on it by the software.
The second line is showing Waiting Threads. This is a technical name, but it is showing how many threads are waiting to be executed. In theory, if your computer has fewer cores, this stack of waiting threads becomes larger. Again, this is a sign the computer cannot handle the load. Keep in mind that having threads waiting is normal as the software is heavily multi-threaded.
Inside the totals, there are a few fields of interest. First, we can see if any exception has occurred inside the software while it was running. Secondly, the database field can indicate if the database is functioning properly. For the software to perform best, it's essential to have a good, quick, and functioning database.
The History Engine shows the status of the price history and the price history synchronization process.
The chart is showing 2 lines representing a stack, which can be compared to a to-do list. Again, both lines are important, and in this case they are designed to "take-over." The WorkingStack is the initial to-do list of all the price markets, which are required to be synced. Once the WorkingStack is done with a price market, it's passed to the AlignmentStack. In here, the prices are kept up-to-date.
The WorkingStack is designed to reach 0. Over time, this stack has to become empty, and then everything is in sync. It might take a while before it reaches 0 because the full price history is perfectly aligned inside the database, then it's removed from the WorkingStack.
In the event where it never reaches 0, it's a telltale sign of a problem. It means no price updates are received from both the Price Driver and the White Server. So, it's impossible for those prices to be aligned nicely. To see which price markets are affected, you can expand the details listed below it. The details will show how many times a sync is called, if a price market has been given up on to be synced, etc.
It's just the technical name, but at the White Server we can see how the price backbone is performing. This is the backup system to get price updates in case you have connection problems. It's also used as the main source when the low-power mode is activated.
On the chart, you can see 2 lines, one showing the amount of subscriptions (price requests) to the White Server, and the other line shows the ServerMessages received back. These (of course) represent price updates.
To detect issues, you need to watch the subscriptions. In general, it's only needed to subscribe once to our server. But, if more subscriptions happen, then it's a telltale sign of missing price data. If you see this, it's best to contact us so we can resolve it. There are additional details available for which price markets are involved. To see it, you need to expand the details shown below.
The software is designed to switch over automatically in the event a price server gets compromised somehow. We list this number as server reselections, and if this number goes up very high then it's a telltale sign of a firewall blocking it or a very big problem on our end.
The Price Driver is the overall driver to handle the price updates. It shows a chart telling how many updates have been processed in the last 20 seconds.
Except for seeing the load of the updates, you cannot really see much directly in this view. However, if you expand the details then a nice table will show up. It will tell per price source how many errors and/or reconnections have occurred in total. These are the most important numbers because they show how stable the Price Driver is itself. Next, the amount of updates are listed (collected per minute) to see if some data is missing. On the rightmost corner, there is the average required time listed for the connection. This is the second most important number; if it lists a very high time needed then it means your connection to the exchange is not good.
The Account Driver is the overall driver to handle all the accounts. Also, here the charts are showing the amount of updates from all the activated accounts (including the simulated ones).
Be sure to be descriptive of the issue you are experiencing so that the HTS developers can look into the issue and provide fixes as soon as they can. Submit your ticket at https://www.haasonline.com/support/.