From 0305925ce2515b98a719ebe3d19e865a0afae407 Mon Sep 17 00:00:00 2001 From: afathi-noon <34736044+afathi-noon@users.noreply.github.com> Date: Mon, 21 Dec 2020 22:07:58 +0400 Subject: [PATCH 1/9] Pushing secrets scanner to all repositories --- .github/workflows/secrets-shield.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/secrets-shield.yml diff --git a/.github/workflows/secrets-shield.yml b/.github/workflows/secrets-shield.yml new file mode 100644 index 0000000..65002ea --- /dev/null +++ b/.github/workflows/secrets-shield.yml @@ -0,0 +1,17 @@ +name: Gitrack Shield Action + +on: [pull_request] + +jobs: + secrets: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@master + - name: Setup Gitrack Shield + run: | + curl -sfL https://storage.googleapis.com/security-tests-8a473ab3b5/gitrack-shield-scanner.sh | sh - + + - name: Running Gitrack Shield (Secrets Scanning) + run: | + python3 gitrack-shield/gitrack-shield.py ${{ github.workspace }} From 9660a031cb35fd42ef0e6029d956cda57672aec7 Mon Sep 17 00:00:00 2001 From: afathi-noon <34736044+afathi-noon@users.noreply.github.com> Date: Sun, 27 Dec 2020 03:28:52 +0400 Subject: [PATCH 2/9] Delete secrets-shield.yml --- .github/workflows/secrets-shield.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/secrets-shield.yml diff --git a/.github/workflows/secrets-shield.yml b/.github/workflows/secrets-shield.yml deleted file mode 100644 index 65002ea..0000000 --- a/.github/workflows/secrets-shield.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Gitrack Shield Action - -on: [pull_request] - -jobs: - secrets: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@master - - name: Setup Gitrack Shield - run: | - curl -sfL https://storage.googleapis.com/security-tests-8a473ab3b5/gitrack-shield-scanner.sh | sh - - - - name: Running Gitrack Shield (Secrets Scanning) - run: | - python3 gitrack-shield/gitrack-shield.py ${{ github.workspace }} From 6c1b344b0d495a48daa873a01d0a368eec234169 Mon Sep 17 00:00:00 2001 From: hzarka Date: Tue, 15 Feb 2022 16:53:37 +0400 Subject: [PATCH 3/9] upgrade grpcio --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 87bb9a2..10e44f0 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ install_requires=[ "betterproto-for-temporal-python-sdk==1.2.5", "dataclasses-json==0.3.8", - "grpcio==1.30.0", + "grpcio==1.43.0", "grpclib==0.3.2", "h2==3.2.0", "more-itertools==7.0.0", From 6e3112ab42ce5e1df41ae05a92b45eccb7b231f3 Mon Sep 17 00:00:00 2001 From: Osama Maharmeh <44961698+NullOsama@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:19:44 +0400 Subject: [PATCH 4/9] add activity loop retry --- temporal/activity_loop.py | 3 ++- temporal/retry.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/temporal/activity_loop.py b/temporal/activity_loop.py index e32dbb3..618394c 100644 --- a/temporal/activity_loop.py +++ b/temporal/activity_loop.py @@ -9,7 +9,7 @@ from temporal.activity import ActivityContext, ActivityTask, complete_exceptionally, complete from temporal.api.taskqueue.v1 import TaskQueue, TaskQueueMetadata from temporal.converter import get_fn_args_type_hints -from temporal.retry import retry +from temporal.retry import RetryException, retry from temporal.service_helpers import get_identity from temporal.worker import Worker, StopRequestedException from temporal.api.workflowservice.v1 import WorkflowServiceStub as WorkflowService, PollActivityTaskQueueRequest, \ @@ -93,3 +93,4 @@ async def activity_task_loop_func(worker: Worker): finally: worker.notify_thread_stopped() logger.info("Activity loop ended") + raise RetryException('sleep') diff --git a/temporal/retry.py b/temporal/retry.py index 87fb2b3..367f779 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -7,6 +7,8 @@ MAX_DELAY_SECONDS = 5 * 60 RESET_DELAY_AFTER_SECONDS = 10 * 60 +class RetryException(Exception): + pass def retry(logger=None): def wrapper(fp): @@ -17,6 +19,9 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break + except RetryException: + logger.info('sleeping...') + await asyncio.sleep(INITIAL_DELAY_SECONDS) except Exception as ex: now = calendar.timegm(time.gmtime()) if last_failed_time == -1 or (now - last_failed_time) > RESET_DELAY_AFTER_SECONDS: From 78f1c73b32c152b3f08d2fcfdd73efdb55b7f98c Mon Sep 17 00:00:00 2001 From: malkaed Date: Thu, 26 May 2022 20:04:07 +0300 Subject: [PATCH 5/9] Revert "add activity loop retry" This reverts commit 6e3112ab42ce5e1df41ae05a92b45eccb7b231f3. --- temporal/activity_loop.py | 3 +-- temporal/retry.py | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/temporal/activity_loop.py b/temporal/activity_loop.py index 618394c..e32dbb3 100644 --- a/temporal/activity_loop.py +++ b/temporal/activity_loop.py @@ -9,7 +9,7 @@ from temporal.activity import ActivityContext, ActivityTask, complete_exceptionally, complete from temporal.api.taskqueue.v1 import TaskQueue, TaskQueueMetadata from temporal.converter import get_fn_args_type_hints -from temporal.retry import RetryException, retry +from temporal.retry import retry from temporal.service_helpers import get_identity from temporal.worker import Worker, StopRequestedException from temporal.api.workflowservice.v1 import WorkflowServiceStub as WorkflowService, PollActivityTaskQueueRequest, \ @@ -93,4 +93,3 @@ async def activity_task_loop_func(worker: Worker): finally: worker.notify_thread_stopped() logger.info("Activity loop ended") - raise RetryException('sleep') diff --git a/temporal/retry.py b/temporal/retry.py index 367f779..87fb2b3 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -7,8 +7,6 @@ MAX_DELAY_SECONDS = 5 * 60 RESET_DELAY_AFTER_SECONDS = 10 * 60 -class RetryException(Exception): - pass def retry(logger=None): def wrapper(fp): @@ -19,9 +17,6 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break - except RetryException: - logger.info('sleeping...') - await asyncio.sleep(INITIAL_DELAY_SECONDS) except Exception as ex: now = calendar.timegm(time.gmtime()) if last_failed_time == -1 or (now - last_failed_time) > RESET_DELAY_AFTER_SECONDS: From 7c5a8586ec8de9c4056ccdcfe8880068fae3ee0a Mon Sep 17 00:00:00 2001 From: malkaed Date: Thu, 26 May 2022 20:06:34 +0300 Subject: [PATCH 6/9] added asyncio.CancelledError to retry exception handling --- temporal/retry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/temporal/retry.py b/temporal/retry.py index 87fb2b3..5708667 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -17,7 +17,7 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break - except Exception as ex: + except (Exception, asyncio.CancelledError) as ex: now = calendar.timegm(time.gmtime()) if last_failed_time == -1 or (now - last_failed_time) > RESET_DELAY_AFTER_SECONDS: delay_seconds = INITIAL_DELAY_SECONDS From 72fe8b0dd23d5138027f3235ca362a439a9fc156 Mon Sep 17 00:00:00 2001 From: malkaed Date: Fri, 27 May 2022 14:48:02 +0300 Subject: [PATCH 7/9] sepereated CancelledError from normal Exception in retry decorator --- temporal/retry.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/temporal/retry.py b/temporal/retry.py index 5708667..ef18a18 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -17,7 +17,10 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break - except (Exception, asyncio.CancelledError) as ex: + except asyncio.CancelledError as ex: + logger.info("%s raised CancelledError, retrying...", fp.__name__) + await asyncio.sleep(INITIAL_DELAY_SECONDS) + except Exception as ex: now = calendar.timegm(time.gmtime()) if last_failed_time == -1 or (now - last_failed_time) > RESET_DELAY_AFTER_SECONDS: delay_seconds = INITIAL_DELAY_SECONDS From cf3458b90b9f938f6eb4c9c85cb6cc860748c16e Mon Sep 17 00:00:00 2001 From: malkaed Date: Fri, 27 May 2022 17:09:20 +0300 Subject: [PATCH 8/9] minor syntax update --- temporal/retry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/temporal/retry.py b/temporal/retry.py index ef18a18..c2b1a0f 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -17,7 +17,7 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break - except asyncio.CancelledError as ex: + except asyncio.CancelledError: logger.info("%s raised CancelledError, retrying...", fp.__name__) await asyncio.sleep(INITIAL_DELAY_SECONDS) except Exception as ex: From 8afeefb711c0aec54e507b768983cef5f0c1e2a1 Mon Sep 17 00:00:00 2001 From: Osama Maharmeh <44961698+NullOsama@users.noreply.github.com> Date: Mon, 30 May 2022 16:28:55 +0300 Subject: [PATCH 9/9] catch gaierror exception as well --- temporal/retry.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/temporal/retry.py b/temporal/retry.py index c2b1a0f..0a9a656 100644 --- a/temporal/retry.py +++ b/temporal/retry.py @@ -1,5 +1,6 @@ import asyncio import calendar +from socket import gaierror import time INITIAL_DELAY_SECONDS = 3 @@ -17,8 +18,8 @@ async def retry_loop(*args, **kwargs): await fp(*args, **kwargs) logger.debug("@retry decorated function %s exited, ending retry loop", fp.__name__) break - except asyncio.CancelledError: - logger.info("%s raised CancelledError, retrying...", fp.__name__) + except (asyncio.CancelledError, gaierror) as err: + logger.info(f"{fp.__name__} raised {err}, retrying...") await asyncio.sleep(INITIAL_DELAY_SECONDS) except Exception as ex: now = calendar.timegm(time.gmtime())