From db95cbcfa4c656dbcac94cd82656b46ae2d68286 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Tue, 28 May 2024 13:06:19 -0700 Subject: [PATCH] Fixed control-C bug --- docs/GamUpdates.md | 5 +++++ docs/How-to-Upgrade-from-Standard-GAM.md | 4 ++-- docs/Version-and-Help.md | 12 ++++++------ src/GamUpdate.txt | 5 +++++ src/gam/__init__.py | 15 ++++++++++----- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index 4fabe3ea..6f58c6f9 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -10,6 +10,11 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation +### 6.76.07 + +Fixed bug where control-C was not recognized when GAM had processed all rows in a CSV file +and was `Waiting for N running processes to finish before terminating`. + ### 6.76.06 Fixed bug in `gam print messages ... positivecountsonly` where message counts with value 0 were deiplayed. diff --git a/docs/How-to-Upgrade-from-Standard-GAM.md b/docs/How-to-Upgrade-from-Standard-GAM.md index e174244d..37d4998b 100644 --- a/docs/How-to-Upgrade-from-Standard-GAM.md +++ b/docs/How-to-Upgrade-from-Standard-GAM.md @@ -335,7 +335,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAMADV-XTD3 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -1009,7 +1009,7 @@ writes the credentials into the file oauth2.txt. C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAMADV-XTD3 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index 00c734fe..34324378 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -3,7 +3,7 @@ Print the current version of Gam with details ``` gam version -GAMADV-XTD3 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAMADV-XTD3 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAMADV-XTD3 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 @@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gamadv-xtd3 Version Check: Current: 5.35.08 - Latest: 6.76.06 + Latest: 6.76.07 echo $? 1 ``` @@ -72,7 +72,7 @@ echo $? Print the current version number without details ``` gam version simple -6.76.06 +6.76.07 ``` In Linux/MacOS you can do: ``` @@ -82,7 +82,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 6.76.06 - https://github.com/taers232c/GAMADV-XTD3 +GAM 6.76.07 - https://github.com/taers232c/GAMADV-XTD3 Ross Scroggs Python 3.12.3 64-bit final MacOS Sonoma 14.4.1 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index e23f53f1..6b49bec5 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,11 @@ Merged GAM-Team version +6.76.07 + +Fixed bug where control-C was not recognized when GAM had processed all rows in a CSV file +and was `Waiting for N running processes to finish before terminating`. + 6.76.06 Fixed bug in `gam print messages ... positivecountsonly` where message counts with value 0 were deiplayed. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 19355ecf..7ac5c07c 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -9695,16 +9695,18 @@ def MultiprocessGAMCommands(items, showCmds): GM.Globals[GM.MULTIPROCESS_EXIT_PROCESSING] = True def signal_handler(sig, frame): - controlC['trapped'] = True + nonlocal controlC + controlC = True def handleControlC(source): + nonlocal controlC batchWriteStderr(f'Control-C (Multiprocess-{source})\n') setSysExitRC(KEYBOARD_INTERRUPT_RC) batchWriteStderr(Msg.BATCH_CSV_TERMINATE_N_PROCESSES.format(currentISOformatTimeStamp(), numItems, poolProcessResults[0], PROCESS_PLURAL_SINGULAR[poolProcessResults[0] == 1])) pool.terminate() - controlC['trapped'] = False + controlC = False if not items: return @@ -9758,7 +9760,7 @@ def MultiprocessGAMCommands(items, showCmds): else: mpQueueCSVFile = None # signal.signal(signal.SIGINT, origSigintHandler) - controlC = {'trapped': False} + controlC = False signal.signal(signal.SIGINT, signal_handler) batchWriteStderr(Msg.USING_N_PROCESSES.format(currentISOformatTimeStamp(), numItems, numPoolProcesses, @@ -9769,7 +9771,7 @@ def MultiprocessGAMCommands(items, showCmds): for item in items: if GM.Globals[GM.MULTIPROCESS_EXIT_PROCESSING]: break - if controlC['trapped']: + if controlC: break if item[0] == Cmd.COMMIT_BATCH_CMD: batchWriteStderr(Msg.COMMIT_BATCH_WAIT_N_PROCESSES.format(currentISOformatTimeStamp(), @@ -9839,7 +9841,7 @@ def MultiprocessGAMCommands(items, showCmds): break time.sleep(1) processWaitStart = time.time() - if not controlC['trapped']: + if not controlC: if GC.Values[GC.PROCESS_WAIT_LIMIT] > 0: waitRemaining = GC.Values[GC.PROCESS_WAIT_LIMIT] else: @@ -9857,6 +9859,9 @@ def MultiprocessGAMCommands(items, showCmds): for p in completedProcesses: del poolProcessResults[p] if poolProcessResults[0] > 0: + if controlC: + handleControlC('SIG') + break time.sleep(5) if GC.Values[GC.PROCESS_WAIT_LIMIT] > 0: delta = int(time.time()-processWaitStart)