Skip to content

[pull] master from DataDog:master - #661

Merged
pull[bot] merged 9 commits into
ConnectionMaster:masterfrom
DataDog:master
Jul 15, 2026
Merged

[pull] master from DataDog:master#661
pull[bot] merged 9 commits into
ConnectionMaster:masterfrom
DataDog:master

Conversation

@pull

@pull pull Bot commented Jul 15, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

pawel-big-lebowski and others added 9 commits July 15, 2026 15:06
* sap_hana: handle RC payload without per-query monitor_id

The new DO_QUERY_ACTIONS format embeds monitor_ids in the SQL comment
rather than as a top-level query field. Adapts the implementation:

- Make monitor_id optional in the Query spec/model (was required)
- Switch scheduling and scheduler dictionaries from monitor_id keys to
  a SHA-256 hash of the query text (stable, unique per query, survives
  check restarts since _last_execution is in-memory anyway)
- Drop monitor_id from metrics tags (not reliable when absent)
- Omit monitor_id from the event payload when not present rather than
  emitting null; include it when the RC payload does provide it

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: add operational logs to data_observability job

- Warn at startup that DO is enabled but no queries have been delivered
  yet (RC not reached the agent)
- Warn when queries are skipped during validation with a summary count
- Debug-log new DO connection open and statementTimeout used
- Debug-log when connection is reopened due to per-query timeout change
- Error-log with server/port when the DO connection fails to open
- Warn explicitly when a query failure resets the DO connection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: downgrade no-queries-configured log to debug

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: wire DataObservability into InstanceConfig and add changelog

Regenerate instance.py from spec.yaml via `ddev validate models -s sap_hana`.
The hand-edited file had the DataObservability/Query/Entity/CustomSqlSelectFields
classes but was missing `data_observability: Optional[DataObservability] = None`
in InstanceConfig, so any data_observability block in conf.yaml was silently
ignored. Also add the changelog entry for PR #23965.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: add unit tests for data_observability job

42 tests across 6 classes covering _query_key (hash stability and format),
_filter_valid_queries (interval, cron, invalid cron, missing/zero/negative
interval, mixed inputs, scheduler keying, warning emission), _get_due_queries
(first run, elapsed, not-yet-elapsed, scheduled_time math, cron mode),
_build_base_tags (config_id tag, dd.internal filtering, None tags),
_build_event_payload (monitor_id present/absent, entity/custom_sql_select_fields
serialization, dbname, config_id, result merge), and _execute_single_query
(success path, HanaError status and connection reset, default and per-query
timeout routing). Tests bypass DBMAsyncJob.__init__ via __new__ and use real
Pydantic models from config_models.instance.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: document RC allow_list requirement for DO query actions

Without sap_hana in remote_configuration.agent_integrations.allow_list,
the Agent silently drops any DO query dispatched by the backend with no
user-visible error. Add a Data Observability query actions section to the
README explaining the requirement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: sync conf.yaml.example with data_observability spec

Regenerate conf.yaml.example via ddev validate config -s sap_hana to add
the data_observability block (enabled, collection_interval) that was missing
after the spec.yaml update, fixing CI config and models validation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: replace em dash with ASCII in README

The readme validator rejects non-ASCII characters. Replace the em dash
in the Data Observability query actions section with plain text.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: document collect_schemas requirement for DO query actions

Data Observability query actions require schema collection to be enabled.
Add a note in the Data Observability section pointing users to the
collect_schemas configuration block.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: mark data_observability spec block as hidden

The data_observability config is injected by the Agent's RC handler and
must not be user-edited. Marking it hidden keeps it out of the generated
conf.yaml.example and any UI config panels.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: wire DO job into check and honor TLS for DO connection

- Import and instantiate SapHanaDataObservability in SapHanaCheck.__init__;
  call run_job_loop(tags) in check() when data_observability.enabled, matching
  the postgres integration pattern.
- Extract _get_connection_properties() from get_connection() so the DO async
  job can open its own connection (needed for per-query statementTimeout) with
  the same TLS settings as the main check connection.  Previously the DO
  connection silently ignored use_tls/tls_* instance options.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: sync instance.py formatting with CI ddev version

CI uses an internal ddev 17.x that formats multi-argument call returns as
single lines; local ddev 14.4.0 wraps them. Manually collapse the three
validator return statements to match the format CI expects.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: bump minimum datadog-checks-base to 37.39.0 for CronScheduler

CronScheduler (used in data_observability.py) was introduced in
datadog-checks-base 37.39.0; the prior minimum of 37.33.0 caused
an ImportError in the minimum-base-package CI job.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* sap_hana: address DO review feedback (cancel, query key, query_timeout)

Key the Data Observability scheduler off the monitor_id when the RC payload carries
a real (non-zero) one — the forward-looking contract shared with Postgres — and fall
back to a hash of the query text otherwise. This matters because the payload delivered
to agents today carries no per-query monitor_id (it decodes to 0/None); keying purely
off monitor_id would collapse every query onto 0. The query-text fallback is safe
because the SQL embeds the monitor id(s) it serves (in a trailing Datadog comment, or
the column alias for custom SQL), so distinct monitors always produce distinct query
text. The key upgrades to monitor_id automatically once the backend starts emitting it.

Rename the per-query timeout_seconds option to query_timeout in milliseconds to align
with the Postgres DO config and the agent RC handler, which delivers query_timeout as
timeout_seconds * 1000. Add SapHanaCheck.cancel() so the DBMAsyncJob thread pool is
released when the check is unscheduled (cluster-agent flavor / one-off runs). Apply
reviewer doc suggestions in the README and spec.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* sap_hana: address DO review feedback (conn teardown, run_job resilience, test style)

- Close the DO connection before clearing its reference on query failure to
  avoid leaking the server-side HANA session; extract a _close_connection
  helper reused by shutdown, reconnect, and the failure path.
- Acquire the connection inside _execute_single_query's try so a failure to
  (re)open it is reported as a per-query error instead of aborting the whole
  run_job cycle and silently skipping remaining due queries.
- Add run_job unit tests, including the connection-open-failure case.
- Flatten the data_observability test classes into module-level functions and
  drop the private-method section dividers.
- README wording tweak and changelog note for the datadog-checks-base bump.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* (DOCS-14726) Update search_sstring true description

* (DOCS-14726) Changelog fragment

* (DOCS-14726) Small clarification fix
* Add MongoDB 8.0.16 WiredTiger eviction metrics

* Fix MongoDB WiredTiger metrics CI failures

* Fix MongoDB WiredTiger metric metadata unit

* Fix MongoDB test lint

* Change unit for application thread eviction time

Updated the unit for application thread time spent evicting pages per second from 'microsecond' to 'microsecond, second'.

* Fix MongoDB metric metadata unit

* Revert "Fix MongoDB metric metadata unit"

This reverts commit 8475557.

* Change metric type for application thread eviction time

Updated the metric type for application thread time spent evicting pages per second from 'microsecond' to 'fraction'.
* Bump openssl to version 3.6.3

* Update dependency resolution

---------

Co-authored-by: dd-agent-integrations-bot[bot] <dd-agent-integrations-bot[bot]@users.noreply.github.com>
Co-authored-by: steveny91 <19823071+steveny91@users.noreply.github.com>
…24509)

* Document single_endpoint_mode per-node metrics for ClickHouse Cloud

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Update Agent version to 7.83.0 for per-node collection

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Rephrase single_endpoint_mode note for clarity

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* migrate test-target to dd-sts

* add permissions

* fix

* add to callers
…minutes (#24554)

* kafka_consumer: keep broker_timestamps in memory and persist every 5 min

Loading and marshalling the whole broker_timestamps cache on every run created a
large, growing transient allocation each cycle (the cache grows toward its
per-cluster cap), which fragments the heap. Keep the cache in memory across runs
(loading from disk only once) and persist it to disk at most every 5 minutes,
so per-run allocation churn no longer scales with the cache size.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add changelog entry for periodic broker_timestamps persistence

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Address review: drop leading underscores on new cache attributes, remove comments

Rename broker_timestamps / broker_timestamps_last_save without a leading
underscore per the repo naming convention (leading underscores are reserved for
Pydantic private attributes), and drop the explanatory comments.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…each run (#24553)

* kafka_consumer: return freed memory to the OS with malloc_trim after each run

librdkafka's many threads spread allocations across glibc arenas whose freed
memory is retained per-arena and never returned to the OS, so agent RSS ratchets
up over time. Call malloc_trim(0) after each check run (glibc/Linux only; a no-op
on macOS and musl) so that per-arena free memory is handed back each cycle.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add changelog entry for malloc_trim

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Address review: drop leading underscores on malloc helpers, remove comment

Rename load_malloc_trim / malloc_trim without a leading underscore per the repo
naming convention for module-level helpers, and drop the explanatory comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Jul 15, 2026
@pull pull Bot added the ⤵️ pull label Jul 15, 2026
@pull
pull Bot merged commit 433b81a into ConnectionMaster:master Jul 15, 2026
1 check passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants