datadog-checks-base 37.16.0__py2.py3-none-any.whl → 37.17.1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  # (C) Datadog, Inc. 2018-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
- __version__ = "37.16.0"
4
+ __version__ = "37.17.1"
@@ -32,15 +32,6 @@ from datadog_checks.base.agent import AGENT_RUNNING, aggregator, datadog_agent
32
32
  from datadog_checks.base.config import is_affirmative
33
33
  from datadog_checks.base.constants import ServiceCheck
34
34
  from datadog_checks.base.errors import ConfigurationError
35
- from datadog_checks.base.types import (
36
- AgentConfigType,
37
- Event,
38
- ExternalTagType,
39
- InitConfigType,
40
- InstanceType,
41
- ProxySettings,
42
- ServiceCheckStatus,
43
- )
44
35
  from datadog_checks.base.utils.agent.utils import should_profile_memory
45
36
  from datadog_checks.base.utils.common import ensure_bytes, to_native_string
46
37
  from datadog_checks.base.utils.fips import enable_fips
@@ -1306,7 +1297,7 @@ class AgentCheck(object):
1306
1297
 
1307
1298
  enter_pdb(self.check, line=self.init_config['set_breakpoint'], args=(instance,))
1308
1299
  elif self.should_profile_memory():
1309
- # self.init_config.get('profile_memory') could be `/tmp/datadog-agent-memory-profiler*`
1300
+ # The 'profile_memory' key in self.init_config could be `/tmp/datadog-agent-memory-profiler*`
1310
1301
  # that is generated by Datadog Agent.
1311
1302
  # If we use `--m-dir` for `agent check` command, a hidden flag, it should be same as a given value.
1312
1303
  namespaces = [self.init_config.get('profile_memory')]
@@ -107,21 +107,33 @@ class ConstantRateLimiter:
107
107
  Basic rate limiter that sleeps long enough to ensure the rate limit is not exceeded. Not thread safe.
108
108
  """
109
109
 
110
- def __init__(self, rate_limit_s):
110
+ def __init__(self, rate_limit_s, max_sleep_chunk_s=5):
111
111
  """
112
112
  :param rate_limit_s: rate limit in seconds
113
+ :param max_sleep_chunk_s: maximum size of each sleep chunk while waiting for the next period
113
114
  """
114
115
  self.rate_limit_s = max(rate_limit_s, 0)
115
116
  self.period_s = 1.0 / self.rate_limit_s if self.rate_limit_s > 0 else 0
116
117
  self.last_event = 0
118
+ self.max_sleep_chunk_s = max(0, max_sleep_chunk_s)
117
119
 
118
- def update_last_time_and_sleep(self):
120
+ def update_last_time_and_sleep(self, cancel_event: Optional[threading.Event] = None):
119
121
  """
120
122
  Sleeps long enough to enforce the rate limit
121
123
  """
122
- elapsed_s = time.time() - self.last_event
123
- sleep_amount = max(self.period_s - elapsed_s, 0)
124
- time.sleep(sleep_amount)
124
+ if self.period_s <= 0:
125
+ self.update_last_time()
126
+ return
127
+
128
+ deadline = self.last_event + self.period_s
129
+ while True:
130
+ now = time.time()
131
+ remaining = deadline - now
132
+ if remaining <= 0:
133
+ break
134
+ if cancel_event is not None and cancel_event.is_set():
135
+ break
136
+ time.sleep(min(remaining, self.max_sleep_chunk_s if self.max_sleep_chunk_s > 0 else remaining))
125
137
  self.update_last_time()
126
138
 
127
139
  def shall_execute(self):
@@ -275,6 +287,7 @@ class DBMAsyncJob(object):
275
287
  min_collection_interval=15,
276
288
  dbms="TODO",
277
289
  rate_limit=1,
290
+ max_sleep_chunk_s=1,
278
291
  run_sync=False,
279
292
  enabled=True,
280
293
  expected_db_exceptions=(),
@@ -295,7 +308,8 @@ class DBMAsyncJob(object):
295
308
  self._last_check_run = 0
296
309
  self._shutdown_callback = shutdown_callback
297
310
  self._dbms = dbms
298
- self._rate_limiter = ConstantRateLimiter(rate_limit)
311
+ self._rate_limiter = ConstantRateLimiter(rate_limit, max_sleep_chunk_s=max_sleep_chunk_s)
312
+ self._max_sleep_chunk_s = max_sleep_chunk_s
299
313
  self._run_sync = run_sync
300
314
  self._enabled = enabled
301
315
  self._expected_db_exceptions = expected_db_exceptions
@@ -334,7 +348,7 @@ class DBMAsyncJob(object):
334
348
  try:
335
349
  self._log.info("[%s] Starting job loop", self._job_tags_str)
336
350
  while True:
337
- if self._cancel_event.isSet():
351
+ if self._cancel_event.is_set():
338
352
  self._log.info("[%s] Job loop cancelled", self._job_tags_str)
339
353
  self._check.count("dd.{}.async_job.cancel".format(self._dbms), 1, tags=self._job_tags, raw=True)
340
354
  break
@@ -353,7 +367,7 @@ class DBMAsyncJob(object):
353
367
  else:
354
368
  self._run_job_rate_limited()
355
369
  except Exception as e:
356
- if self._cancel_event.isSet():
370
+ if self._cancel_event.is_set():
357
371
  # canceling can cause exceptions if the connection is closed the middle of the check run
358
372
  # in this case we still want to report it as a cancellation instead of a crash
359
373
  self._log.debug("[%s] Job loop error after cancel: %s", self._job_tags_str, e)
@@ -387,7 +401,7 @@ class DBMAsyncJob(object):
387
401
 
388
402
  def _set_rate_limit(self, rate_limit):
389
403
  if self._rate_limiter.rate_limit_s != rate_limit:
390
- self._rate_limiter = ConstantRateLimiter(rate_limit)
404
+ self._rate_limiter = ConstantRateLimiter(rate_limit, max_sleep_chunk_s=self._max_sleep_chunk_s)
391
405
 
392
406
  def _run_sync_job_rate_limited(self):
393
407
  if self._rate_limiter.shall_execute():
@@ -400,8 +414,8 @@ class DBMAsyncJob(object):
400
414
  except:
401
415
  raise
402
416
  finally:
403
- if not self._cancel_event.isSet():
404
- self._rate_limiter.update_last_time_and_sleep()
417
+ if not self._cancel_event.is_set():
418
+ self._rate_limiter.update_last_time_and_sleep(cancel_event=self._cancel_event)
405
419
  else:
406
420
  self._rate_limiter.update_last_time()
407
421
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.16.0
3
+ Version: 37.17.1
4
4
  Summary: The Datadog Check Toolkit
5
5
  Project-URL: Source, https://github.com/DataDog/integrations-core
6
6
  Author-email: Datadog <packages@datadoghq.com>
@@ -44,7 +44,7 @@ Requires-Dist: requests-kerberos==0.15.0; extra == 'http'
44
44
  Requires-Dist: requests-ntlm==1.3.0; extra == 'http'
45
45
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
46
46
  Provides-Extra: json
47
- Requires-Dist: orjson==3.10.18; extra == 'json'
47
+ Requires-Dist: orjson==3.11.1; extra == 'json'
48
48
  Provides-Extra: kube
49
49
  Requires-Dist: kubernetes==33.1.0; extra == 'kube'
50
50
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
@@ -3,7 +3,7 @@ datadog_checks/config.py,sha256=PrAXGdlLnoV2VMQff_noSaSJJ0wg4BAiGnw7jCQLSik,196
3
3
  datadog_checks/errors.py,sha256=eFwmnrX-batIgbu-iJyseqAPNO_4rk1UuaKK89evLhg,155
4
4
  datadog_checks/log.py,sha256=orvOgMKGNEsqSTLalCAQpWP-ouorpG1A7Gn-j2mRD80,301
5
5
  datadog_checks/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
6
- datadog_checks/base/__about__.py,sha256=Obo5Tb1tuahMAF-iZILME3FbOd4SLn3HoyvW-6KfTlM,139
6
+ datadog_checks/base/__about__.py,sha256=ndrpWsGPmh3Ena0lvyhHt05KvneXC4n0Mc4AF8AClU0,139
7
7
  datadog_checks/base/__init__.py,sha256=yWegSLE-TZWIGSvAiJj9PSrUxzlOo_UVJLt2zORZ8Ek,363
8
8
  datadog_checks/base/__init__.pyi,sha256=eH8XhrtvnD6uE6FWfEyCmKwOaaLJxNolS08D6IRHZuU,995
9
9
  datadog_checks/base/agent.py,sha256=nX9x_BYYizRKGNYfXq5z7S0FZ9xcX_wd2tuxpGe3_8k,350
@@ -15,7 +15,7 @@ datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,
15
15
  datadog_checks/base/checks/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
16
16
  datadog_checks/base/checks/__init__.pyi,sha256=LASfm-daLNQIYe6-w0NPqBw4cl83nYIX5_B-VhV6ARo,262
17
17
  datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
18
- datadog_checks/base/checks/base.py,sha256=UjjhAJaVUBhbJcdWkRCkWRSX5ocoeWRBvuFdbB3blKg,60027
18
+ datadog_checks/base/checks/base.py,sha256=kcnZ8ySfleMGw5y6iLEvhLaF42WGCMes0LfylLo_v50,59857
19
19
  datadog_checks/base/checks/network.py,sha256=UkgqkVHaoX7Hqi0WKEx-TvaFiF6-37VyF9A3m2aSaJM,1966
20
20
  datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
21
21
  datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
@@ -145,7 +145,7 @@ datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBa
145
145
  datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
146
146
  datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
147
147
  datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
148
- datadog_checks/base/utils/db/utils.py,sha256=_ocLUqRwY3AWDbAcvDP8DsJdX5SRfB5OURzKUqnT-Pw,21680
148
+ datadog_checks/base/utils/db/utils.py,sha256=6rYXjV9I7Hr_PhgkvhbTiZ0QCmyHWoZYETeUD4Qe3Js,22441
149
149
  datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
150
150
  datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
151
151
  datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
@@ -219,6 +219,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
219
219
  datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
220
220
  datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
221
221
  datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
222
- datadog_checks_base-37.16.0.dist-info/METADATA,sha256=DJlhTWQ8ALONgXmzOFGd8sIrtmZsInckNItfjHSj-Z4,4245
223
- datadog_checks_base-37.16.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
224
- datadog_checks_base-37.16.0.dist-info/RECORD,,
222
+ datadog_checks_base-37.17.1.dist-info/METADATA,sha256=WRi4JwneDzJKyzrSHfyAjQF-2o4kg81OCmWns4RYlmI,4244
223
+ datadog_checks_base-37.17.1.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
224
+ datadog_checks_base-37.17.1.dist-info/RECORD,,