Bug:
VarAC Cluster breaks after receiving <LHR> (Last Heard Peaking request) with multiband peeking ON.
Note: I did NOT test LHR with multiband peeking off, and it may also be broken.
Scope:
Spotted in VarAC V11.2.0
Symptoms:
EMAIL GATE turns orange (it is supposed to remain blue) in the non-sender nodes.
Datastream messages window - discontinuity, some messages disappear or are not displayed after <LHR>.
A Vmail was LOST - after being received and confirmed with <SMR>, and parked! The Vmail disappeared from parked vmails and was lost.
The VarAC Cluster does NOT recover until closing ALL instances of VarAC and restarting them!
Analysis:
The log indicates SQLite database errors:
02/06/2025 22:12:04 - LHR tag identified (Last Heard Request)
02/06/2025 22:12:04 - Error: processing Request last heard callsign peeking request
02/06/2025 22:12:04 - Value was either too large or too small for an Int32.
at System.Convert.ToInt32(Int64 value)
at System.Int64.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ToInt32(Object value)
at VarAC.VarAC.<connect_varahf_modem>b__126_2()
02/06/2025 22:12:11 - Error: updating instance keepalive in SQLite:database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.update_instance_keepalive(Int32 instance_id)
02/06/2025 22:12:11 - Error: updating instance keepalive in SQLite:database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.update_instance_keepalive(Int32 instance_id)
02/06/2025 22:12:15 - Error: Writing to SQLite datastream table :database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.write_datastream_log_to_db(String qso_guid, Int32 datastream_entry_type_id, String callsign, String entry, DateTime creation_time, Int32 chat_id, Int32 reply_on_chat_id, String file_path)
02/06/2025 22:12:27 - Error: Writing to cqframe table:database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.write_last_heard_to_db(DateTime cqframe_time, Int32 cqframe_type_id, Int64 frequency, String bandwidth, String from_callsign, Int32 snr, String slot, String data, String locator, Boolean is_emcomm, Boolean is_email_gateway)
02/06/2025 22:12:28 - PSKReporter: Logged successfully (4Z1AC)
02/06/2025 22:12:28 - PSKReporter: Sending accumulated records
02/06/2025 22:12:28 - Error: Writing to SQLite qso_snr_report table :database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.write_snr_to_db(String qso_guid, Int32 snr_direction, Int32 snr, DateTime creation_time)
02/06/2025 22:12:29 - Error: Writing to SQLite datastream table :database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.write_datastream_log_to_db(String qso_guid, Int32 datastream_entry_type_id, String callsign, String entry, DateTime creation_time, Int32 chat_id, Int32 reply_on_chat_id, String file_path)
02/06/2025 22:12:32 - Disable PTT status set to false
02/06/2025 22:12:32 - Setting disable ptt status to false
02/06/2025 22:13:00 - Closing Rig comport
02/06/2025 22:13:00 - Closing GPS comport
02/06/2025 22:13:00 - Closing Rig TCP port
02/06/2025 22:13:22 - Debug mode disabled
02/06/2025 22:13:22 - Instance number: 20
02/06/2025 22:13:23 - Error: updating instance email gateway status in SQLite:database is locked
database is locked
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at VarAC.VarAC.update_instance_email_gateway_status(Int32 instance_id, Boolean email_gateway_active, Boolean email_gateway_sender_node)
02/06/2025 22:13:23 - Setting unattended links ON (load) ...
Recommendation:
Fix the bugs indicated in the VarAC log, and fully test that Last Heard Peeking works in all cases.
Add additional sanity checks and error handling. I suggest: A. Display errors in the GUI and offer to send feedback/bug report to the developers. B. Then recover the cluster and all instances and the SQLite database to a sane and safe state, or instruct the end user how to do this.
Screen Capture of the Bug, Showing the Broken VarAC Cluster:

ok - the processing of a QO-100 frequency error seems to start the whole sequence as the code only handled INT32 while 10GHZ is int64 (long)
Value was either too large or too small for an Int32.
I applied a fix on my end - but just to see if it can be reproduced to be sure - can you try and simulate an LHR without QO data and with (I know its kinda hard to simulate but maybe you can)
Irad