Skip to content

Commit 97daefb

Browse files
authored
Make automatic reconnect opt-in (#1451)
Add --reconnect flag to make driver reconnection behavior configurable. Without this flag, the server will exit on driver failures instead of automatically retrying with exponential backoff.
1 parent d23f0d3 commit 97daefb

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ If you don't have a USB stick, you can add `--mock-driver` to use a fake stick.
2424

2525
DNS-SD is enabled in the server by default. If you would like to disable it, add `--disable-dns-sd`.
2626

27+
If you want to enable automatic reconnection, add `--reconnect`.
28+
2729
### Start client
2830

2931
Requires server to be running.

src/bin/server.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ interface Args {
3030
port?: number;
3131
host?: string;
3232
"disable-dns-sd": boolean;
33+
reconnect: boolean;
3334
}
3435

3536
const getDriverParams = ():
@@ -47,6 +48,7 @@ const getDriverParams = ():
4748
"port",
4849
"host",
4950
"disable-dns-sd",
51+
"reconnect",
5052
]);
5153

5254
if (args.port) {
@@ -252,7 +254,12 @@ const logger: Logger = {
252254
logger.error("error in driver", e);
253255
// Driver_Failed cannot be recovered by zwave-js so we restart
254256
if (e instanceof ZWaveError && e.code === ZWaveErrorCodes.Driver_Failed) {
255-
startDriverWithRetry();
257+
if (params!.args["reconnect"]) {
258+
startDriverWithRetry();
259+
} else {
260+
logger.error("driver failure is unrecoverable, exiting...");
261+
process.exit(1);
262+
}
256263
}
257264
});
258265

@@ -273,6 +280,12 @@ const logger: Logger = {
273280
} catch (e) {
274281
await driver.destroy();
275282
driver = undefined;
283+
284+
if (!params!.args["reconnect"]) {
285+
logger.error("failed starting driver.");
286+
throw e;
287+
}
288+
276289
retryCount++;
277290
const retryDelay = getRetryDelay();
278291
logger.error(

0 commit comments

Comments
 (0)