From 77a72935c9534443b80b5ac14436ceafa84420fc Mon Sep 17 00:00:00 2001 From: cgewecke Date: Fri, 4 May 2018 08:02:08 -0700 Subject: [PATCH 1/4] Force exit at end of migrations --- packages/truffle-core/lib/commands/migrate.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/truffle-core/lib/commands/migrate.js b/packages/truffle-core/lib/commands/migrate.js index 3bb2e75c107..273e7da8ebc 100644 --- a/packages/truffle-core/lib/commands/migrate.js +++ b/packages/truffle-core/lib/commands/migrate.js @@ -77,6 +77,8 @@ var command = { if (needsMigrating) { Migrate.run(config, done); + console.log('Forcing exit after `migrate.run`'); + process.exit(0); } else { config.logger.log("Network up to date.") callback(); From 850b9552905a7ceb02fb97b29cc95b4a1d97ea17 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Fri, 4 May 2018 08:34:53 -0700 Subject: [PATCH 2/4] Force exit after command executes --- packages/truffle-core/cli.js | 2 ++ packages/truffle-core/lib/commands/migrate.js | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/truffle-core/cli.js b/packages/truffle-core/cli.js index 83df39bc8e7..c7b2aacddb9 100755 --- a/packages/truffle-core/cli.js +++ b/packages/truffle-core/cli.js @@ -36,6 +36,8 @@ command.run(process.argv.slice(2), options, function(err) { } process.exit(1); } + console.log('Forcing exit...') + process.exit(0); // Don't exit if no error; if something is keeping the process open, // like `truffle console`, then let it. diff --git a/packages/truffle-core/lib/commands/migrate.js b/packages/truffle-core/lib/commands/migrate.js index 273e7da8ebc..3bb2e75c107 100644 --- a/packages/truffle-core/lib/commands/migrate.js +++ b/packages/truffle-core/lib/commands/migrate.js @@ -77,8 +77,6 @@ var command = { if (needsMigrating) { Migrate.run(config, done); - console.log('Forcing exit after `migrate.run`'); - process.exit(0); } else { config.logger.log("Network up to date.") callback(); From eab7a6f86975901701ded38f012ca7252db3d8b9 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Fri, 4 May 2018 20:09:38 -0700 Subject: [PATCH 3/4] Clear interval timers on command exit --- packages/truffle-core/cli.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/truffle-core/cli.js b/packages/truffle-core/cli.js index c7b2aacddb9..a165e622a9d 100755 --- a/packages/truffle-core/cli.js +++ b/packages/truffle-core/cli.js @@ -36,9 +36,17 @@ command.run(process.argv.slice(2), options, function(err) { } process.exit(1); } - console.log('Forcing exit...') - process.exit(0); // Don't exit if no error; if something is keeping the process open, // like `truffle console`, then let it. + + // Clear any polling though - `provider-engine` in HDWallet + // and `web3 1.0 confirmations` both interval timers wide open. + const Timer = process.binding('timer_wrap').Timer; + const handles = process._getActiveHandles(); + handles.forEach(handle => { + if (handle instanceof Timer){ + handle.close(); + } + }) }); From b090eb9649d5d2fcac0690064d85c9a3f9985816 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Sat, 5 May 2018 14:59:24 -0700 Subject: [PATCH 4/4] Close the open --- packages/truffle-core/cli.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/truffle-core/cli.js b/packages/truffle-core/cli.js index a165e622a9d..1edf1f668ed 100755 --- a/packages/truffle-core/cli.js +++ b/packages/truffle-core/cli.js @@ -40,12 +40,11 @@ command.run(process.argv.slice(2), options, function(err) { // Don't exit if no error; if something is keeping the process open, // like `truffle console`, then let it. - // Clear any polling though - `provider-engine` in HDWallet - // and `web3 1.0 confirmations` both interval timers wide open. - const Timer = process.binding('timer_wrap').Timer; + // Clear any polling or open sockets - `provider-engine` in HDWallet + // and `web3 1.0 confirmations` both leave interval timers etc wide open. const handles = process._getActiveHandles(); handles.forEach(handle => { - if (handle instanceof Timer){ + if (typeof handle.close === 'function'){ handle.close(); } })