Skip to content

Commit

Permalink
hide cache messages on deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
jefer94 committed Dec 8, 2023
1 parent 3d37755 commit 33c7983
Show file tree
Hide file tree
Showing 10 changed files with 97 additions and 53 deletions.
15 changes: 12 additions & 3 deletions breathecode/commons/actions.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import functools
import logging
import os
from django_redis import get_redis_connection
Expand All @@ -20,14 +21,21 @@ def is_test():
return env == 'test'


@functools.lru_cache(maxsize=1)
def is_output_enable():
# Set to True to enable output within the cache and it's used for testing purposes.
return os.getenv('HIDE_CACHE_LOG', '0') in ['0', 'false', 'False', 'f']


def clean_cache(model_cls):
from .tasks import clean_task

have_descriptor = model_cls in CACHE_DESCRIPTORS.keys()
is_a_dependency = model_cls in CACHE_DEPENDENCIES

if not have_descriptor and not is_a_dependency:
logger.warn(f'Cache not implemented for {model_cls.__name__}, skipping')
if is_output_enable():
logger.warning(f'Cache not implemented for {model_cls.__name__}, skipping')
return

key = model_cls.__module__ + '.' + model_cls.__name__
Expand All @@ -36,7 +44,7 @@ def clean_cache(model_cls):
if not have_descriptor and is_a_dependency:
if is_test() is False:
conn = get_redis_connection('default')
my_lock = Lock(conn, f'cache:descriptor:{key}', timeout=0.2, blocking_timeout=0.2)
my_lock = Lock(conn, f'cache:descriptor:{key}', timeout=3, blocking_timeout=3)

if my_lock.acquire(blocking=True):

Expand All @@ -50,7 +58,8 @@ class DepCache(Cache):
my_lock.release()

else:
logger.error(f'Could not acquire lock for {key} on get_or_create, operation timed out.')
if is_output_enable():
logger.error(f'Could not acquire lock for {key} on get_or_create, operation timed out.')
return

else:
Expand Down
22 changes: 12 additions & 10 deletions breathecode/commons/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from typing import Any
from celery import shared_task
from datetime import timedelta
from breathecode.commons.actions import is_output_enable
from breathecode.commons.models import TaskManager
from django.utils import timezone
from breathecode.utils import CACHE_DESCRIPTORS
Expand All @@ -24,7 +25,7 @@ def mark_task_as_cancelled(task_manager_id):
return

if x.status not in ['PENDING', 'PAUSED']:
logger.warn(f'TaskManager {task_manager_id} was already DONE')
logger.warning(f'TaskManager {task_manager_id} was already DONE')
return

x.status = 'CANCELLED'
Expand All @@ -44,12 +45,12 @@ def mark_task_as_reversed(task_manager_id, *, attempts=0, force=False):
return

if x.reverse_module is None or x.reverse_name is None:
logger.warn(f'TaskManager {task_manager_id} does not have a reverse function')
logger.warning(f'TaskManager {task_manager_id} does not have a reverse function')
return

if not force and (x.status != 'DONE' and not x.last_run < timezone.now() - timedelta(minutes=TOLERANCE)
and not x.killed and attempts < 10):
logger.warn(f'TaskManager {task_manager_id} was not killed, scheduling to run it again')
logger.warning(f'TaskManager {task_manager_id} was not killed, scheduling to run it again')

x.status = 'CANCELLED'
x.save()
Expand Down Expand Up @@ -80,7 +81,7 @@ def mark_task_as_paused(task_manager_id):
return

if x.status != 'PENDING':
logger.warn(f'TaskManager {task_manager_id} is not running')
logger.warning(f'TaskManager {task_manager_id} is not running')
return

x.status = 'PAUSED'
Expand All @@ -100,16 +101,16 @@ def mark_task_as_pending(task_manager_id, *, attempts=0, force=False, last_run=N
return

if x.status in ['DONE', 'CANCELLED', 'REVERSED']:
logger.warn(f'TaskManager {task_manager_id} was already DONE')
logger.warning(f'TaskManager {task_manager_id} was already DONE')
return

if last_run and last_run != x.last_run:
logger.warn(f'TaskManager {task_manager_id} is already running')
logger.warning(f'TaskManager {task_manager_id} is already running')
return

if force is False and not x.last_run < timezone.now() - timedelta(
minutes=TOLERANCE) and not x.killed and attempts < 10:
logger.warn(f'TaskManager {task_manager_id} was not killed, scheduling to run it again')
logger.warning(f'TaskManager {task_manager_id} was not killed, scheduling to run it again')

mark_task_as_pending.apply_async(args=(task_manager_id, ),
kwargs={
Expand Down Expand Up @@ -162,13 +163,14 @@ def clean_task(key: str, **_: Any):
model_cls = getattr(module, model)

if model_cls not in CACHE_DESCRIPTORS:
raise AbortTask(f'Cache not implemented for {model_cls.__name__}, skipping')
raise AbortTask(f'Cache not implemented for {model_cls.__name__}, skipping', log=is_output_enable())

cache = CACHE_DESCRIPTORS[model_cls]

try:
cache.clear()
logger.debug(f'Cache cleaned for {key}')
if is_output_enable():
logger.debug(f'Cache cleaned for {key}')

except Exception:
raise RetryTask(f'Could not clean the cache {key}')
raise RetryTask(f'Could not clean the cache {key}', log=is_output_enable())
10 changes: 5 additions & 5 deletions breathecode/commons/tests/tasks/tests_mark_task_as_cancelled.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
@pytest.fixture(autouse=True)
def setup(db, monkeypatch):
monkeypatch.setattr('logging.Logger.info', MagicMock())
monkeypatch.setattr('logging.Logger.warn', MagicMock())
monkeypatch.setattr('logging.Logger.warning', MagicMock())
monkeypatch.setattr('logging.Logger.error', MagicMock())

yield
Expand Down Expand Up @@ -68,7 +68,7 @@ def _arrange(data={}):
model = bc.database.create(task_manager=task_manager)

Logger.info.call_args_list = []
Logger.warn.call_args_list = []
Logger.warning.call_args_list = []
Logger.error.call_args_list = []

return model
Expand All @@ -84,7 +84,7 @@ def test_not_found(bc: Breathecode):
assert res == None

assert Logger.info.call_args_list == [call('Running mark_task_as_cancelled for 1')]
assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == [call('TaskManager 1 not found')]

assert bc.database.list_of('commons.TaskManager') == []
Expand All @@ -105,7 +105,7 @@ def test_found(bc: Breathecode, arrange):
call('TaskManager 1 is being marked as CANCELLED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand All @@ -131,7 +131,7 @@ def test_its_not_running(bc: Breathecode, arrange, status):
call('Running mark_task_as_cancelled for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 was already DONE')]
assert Logger.warning.call_args_list == [call('TaskManager 1 was already DONE')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
10 changes: 5 additions & 5 deletions breathecode/commons/tests/tasks/tests_mark_task_as_paused.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
@pytest.fixture(autouse=True)
def setup(db, monkeypatch):
monkeypatch.setattr('logging.Logger.info', MagicMock())
monkeypatch.setattr('logging.Logger.warn', MagicMock())
monkeypatch.setattr('logging.Logger.warning', MagicMock())
monkeypatch.setattr('logging.Logger.error', MagicMock())

yield
Expand Down Expand Up @@ -68,7 +68,7 @@ def _arrange(data={}):
model = bc.database.create(task_manager=task_manager)

Logger.info.call_args_list = []
Logger.warn.call_args_list = []
Logger.warning.call_args_list = []
Logger.error.call_args_list = []

return model
Expand All @@ -84,7 +84,7 @@ def test_not_found(bc: Breathecode):
assert res == None

assert Logger.info.call_args_list == [call('Running mark_task_as_paused for 1')]
assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == [call('TaskManager 1 not found')]

assert bc.database.list_of('commons.TaskManager') == []
Expand All @@ -105,7 +105,7 @@ def test_found(bc: Breathecode, arrange):
call('TaskManager 1 is being marked as PAUSED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand All @@ -131,7 +131,7 @@ def test_its_not_running(bc: Breathecode, arrange, status):
call('Running mark_task_as_paused for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 is not running')]
assert Logger.warning.call_args_list == [call('TaskManager 1 is not running')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
20 changes: 10 additions & 10 deletions breathecode/commons/tests/tasks/tests_mark_task_as_pending.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def setup(db, monkeypatch):
monkeypatch.setattr('breathecode.commons.tasks.mark_task_as_pending.apply_async', MagicMock())
monkeypatch.setattr('breathecode.commons.tasks.TOLERANCE', TOLERANCE)
monkeypatch.setattr('logging.Logger.info', MagicMock())
monkeypatch.setattr('logging.Logger.warn', MagicMock())
monkeypatch.setattr('logging.Logger.warning', MagicMock())
monkeypatch.setattr('logging.Logger.error', MagicMock())

yield
Expand Down Expand Up @@ -106,7 +106,7 @@ def _arrange(data={}):
model = bc.database.create(task_manager=task_manager)

Logger.info.call_args_list = []
Logger.warn.call_args_list = []
Logger.warning.call_args_list = []
Logger.error.call_args_list = []

return model
Expand All @@ -122,7 +122,7 @@ def test_not_found(bc: Breathecode):
assert res == None

assert Logger.info.call_args_list == [call('Running mark_task_as_pending for 1')]
assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == [call('TaskManager 1 not found')]

assert bc.database.list_of('commons.TaskManager') == []
Expand All @@ -148,7 +148,7 @@ def test_found(bc: Breathecode, arrange, task_module, task_name, get_call_args_l
call('TaskManager 1 is being marked as PENDING'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -183,7 +183,7 @@ def test_task_is_done(bc: Breathecode, arrange, task_module, task_name, get_call
call('Running mark_task_as_pending for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 was already DONE')]
assert Logger.warning.call_args_list == [call('TaskManager 1 was already DONE')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -213,7 +213,7 @@ def test_task_is_running(bc: Breathecode, arrange, task_module, task_name, get_c
call('Running mark_task_as_pending for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 is already running')]
assert Logger.warning.call_args_list == [call('TaskManager 1 is already running')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -242,7 +242,7 @@ def test_task_last_run_less_than_the_tolerance(bc: Breathecode, arrange, task_mo
call('Running mark_task_as_pending for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 was not killed, scheduling to run it again')]
assert Logger.warning.call_args_list == [call('TaskManager 1 was not killed, scheduling to run it again')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -279,7 +279,7 @@ def test_task_last_run_less_than_the_tolerance__force_true(bc: Breathecode, arra
call('TaskManager 1 is being marked as PENDING'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -317,7 +317,7 @@ def test_task_last_run_less_than_the_tolerance__attempts_gt_10(bc: Breathecode,
call('TaskManager 1 is being marked as PENDING'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -353,7 +353,7 @@ def test_task_last_run_greater_than_the_tolerance(bc: Breathecode, arrange, task
call('TaskManager 1 is being marked as PENDING'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down
18 changes: 9 additions & 9 deletions breathecode/commons/tests/tasks/tests_mark_task_as_reversed.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
def setup(db, monkeypatch):
monkeypatch.setattr('breathecode.commons.tasks.mark_task_as_reversed.apply_async', MagicMock())
monkeypatch.setattr('logging.Logger.info', MagicMock())
monkeypatch.setattr('logging.Logger.warn', MagicMock())
monkeypatch.setattr('logging.Logger.warning', MagicMock())
monkeypatch.setattr('logging.Logger.error', MagicMock())
monkeypatch.setattr('importlib.import_module', MagicMock())
monkeypatch.setattr('breathecode.commons.tasks.TOLERANCE', TOLERANCE)
Expand Down Expand Up @@ -93,7 +93,7 @@ def _arrange(data={}):
model = bc.database.create(task_manager=task_manager)

Logger.info.call_args_list = []
Logger.warn.call_args_list = []
Logger.warning.call_args_list = []
Logger.error.call_args_list = []
importlib.import_module.call_args_list = []

Expand All @@ -110,7 +110,7 @@ def test_not_found(bc: Breathecode):
assert res == None

assert Logger.info.call_args_list == [call('Running mark_task_as_reversed for 1')]
assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == [call('TaskManager 1 not found')]

assert bc.database.list_of('commons.TaskManager') == []
Expand Down Expand Up @@ -138,7 +138,7 @@ def test_no_reverse_function(bc: Breathecode, arrange, task_module, task_name):
call('Running mark_task_as_reversed for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 does not have a reverse function')]
assert Logger.warning.call_args_list == [call('TaskManager 1 does not have a reverse function')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [bc.format.to_dict(model.task_manager)]
Expand Down Expand Up @@ -169,7 +169,7 @@ def test_reversed(bc: Breathecode, arrange, task_module, task_name):
call('TaskManager 1 is being marked as REVERSED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand Down Expand Up @@ -210,7 +210,7 @@ def test_task_last_run_less_than_the_tolerance(bc: Breathecode, arrange, task_mo
call('Running mark_task_as_reversed for 1'),
]

assert Logger.warn.call_args_list == [call('TaskManager 1 was not killed, scheduling to run it again')]
assert Logger.warning.call_args_list == [call('TaskManager 1 was not killed, scheduling to run it again')]
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand Down Expand Up @@ -251,7 +251,7 @@ def test_task_last_run_less_than_the_tolerance__force_true(bc: Breathecode, arra
call('TaskManager 1 is being marked as REVERSED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand Down Expand Up @@ -289,7 +289,7 @@ def test_task_last_run_less_than_the_tolerance__attempts_gt_10(bc: Breathecode,
call('TaskManager 1 is being marked as REVERSED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand Down Expand Up @@ -326,7 +326,7 @@ def test_task_last_run_greater_than_the_tolerance(bc: Breathecode, arrange, task
call('TaskManager 1 is being marked as REVERSED'),
]

assert Logger.warn.call_args_list == []
assert Logger.warning.call_args_list == []
assert Logger.error.call_args_list == []

assert bc.database.list_of('commons.TaskManager') == [
Expand Down
Loading

0 comments on commit 33c7983

Please sign in to comment.