From 21fbe7754c38d4422a9f17d8ebfd89b43eec80d5 Mon Sep 17 00:00:00 2001 From: mukund-padale <75060177+mukund-padale@users.noreply.github.com> Date: Thu, 20 Feb 2025 13:37:12 +0530 Subject: [PATCH] Release 2025-02-20 (#855) * Bump ruff from 0.7.4 to 0.8.0 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.4 to 0.8.0. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.7.4...0.8.0) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump cryptography from 43.0.3 to 44.0.0 Bumps [cryptography](https://github.com/pyca/cryptography) from 43.0.3 to 44.0.0. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/43.0.3...44.0.0) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump pytest from 8.3.3 to 8.3.4 Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.3 to 8.3.4. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...8.3.4) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump certifi from 2024.8.30 to 2024.12.14 Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.8.30 to 2024.12.14. - [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump ruff from 0.8.0 to 0.8.3 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.0 to 0.8.3. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.8.0...0.8.3) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump pylint from 3.3.1 to 3.3.2 Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.1 to 3.3.2. - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.1...v3.3.2) --- updated-dependencies: - dependency-name: pylint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump jinja2 from 3.1.4 to 3.1.5 Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5) --- updated-dependencies: - dependency-name: jinja2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump urllib3 from 2.2.3 to 2.3.0 Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.3 to 2.3.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.3.0) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump click from 8.1.7 to 8.1.8 Bumps [click](https://github.com/pallets/click) from 8.1.7 to 8.1.8. - [Release notes](https://github.com/pallets/click/releases) - [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/click/compare/8.1.7...8.1.8) --- updated-dependencies: - dependency-name: click dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump ruff from 0.8.3 to 0.8.4 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.3 to 0.8.4. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.8.3...0.8.4) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump pylint from 3.3.2 to 3.3.3 Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.2...v3.3.3) --- updated-dependencies: - dependency-name: pylint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Upgrade appdynamics java and machine agents to version 14.12.0 * feat: rollback to master * Upgrade datadog agents to the latest versions (#849) Upgrade dd-trace-agent & datadog-cf-buildpack versions * Rename custom jmx metrics (#854) feat: update custom jmx metrics' names. use 'mx' prefix instead of jmx so that the metrics are not considered as Datadog custom metrics --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Joey den Broeder Co-authored-by: ekremsekerci Co-authored-by: Sanny Ramirez --- buildpack/core/runtime.py | 39 ++++++++++++++++++++++++-- buildpack/telemetry/datadog.py | 40 ++++++++++++--------------- dependencies.yml | 4 +-- etc/m2ee/m2ee.yaml | 6 ++-- etc/scripts/on_error.sh | 2 ++ etc/scripts/on_out_of_memory_error.sh | 2 ++ 6 files changed, 64 insertions(+), 29 deletions(-) create mode 100755 etc/scripts/on_error.sh create mode 100755 etc/scripts/on_out_of_memory_error.sh diff --git a/buildpack/core/runtime.py b/buildpack/core/runtime.py index a9e79c6a1..99396f049 100644 --- a/buildpack/core/runtime.py +++ b/buildpack/core/runtime.py @@ -68,6 +68,21 @@ def stage(buildpack_dir, build_path, cache_path): os.path.join(buildpack_dir, "etc", "m2ee", "m2ee.yaml"), os.path.join(build_path, ".local", "m2ee.yaml"), ) + + scripts_path_source = os.path.join(buildpack_dir, "etc", "scripts") + scripts_path_dest = os.path.join(build_path, ".local", "scripts") + shutil.copytree( + scripts_path_source, + scripts_path_dest, + dirs_exist_ok=True + ) + + # Add +x permission for all sh scripts + for root, _, files in os.walk(scripts_path_dest): + for file in files: + file_path = os.path.join(root, file) + util.set_executable(file_path) + resolve_runtime_dependency(buildpack_dir, build_path, cache_path) @@ -613,15 +628,35 @@ def _pre_process_m2ee_yaml(): "-i", f"s|BUILD_PATH|{os.getcwd()}|g; " f"s|RUNTIME_PORT|{util.get_runtime_port()}|; " - f"s|ADMIN_PORT|{util.get_admin_port()}|; " - f"s|PYTHONPID|{os.getpid()}|", + f"s|ADMIN_PORT|{util.get_admin_port()}|", ".local/m2ee.yaml", ] ) +def _pre_process_on_error_scripts(): + logging.debug("Preprocessing on error scripts...") + subprocess.check_call( + [ + "sed", + "-i", + f"s|PYTHONPID|{os.getpid()}|", + ".local/scripts/on_error.sh", + ] + ) + subprocess.check_call( + [ + "sed", + "-i", + f"s|PYTHONPID|{os.getpid()}|", + ".local/scripts/on_out_of_memory_error.sh", + ] + ) + + def setup(vcap_data): _pre_process_m2ee_yaml() + _pre_process_on_error_scripts() _activate_license() client = m2ee_class( diff --git a/buildpack/telemetry/datadog.py b/buildpack/telemetry/datadog.py index 026e3cdf6..bf68d359c 100644 --- a/buildpack/telemetry/datadog.py +++ b/buildpack/telemetry/datadog.py @@ -272,6 +272,9 @@ def _get_runtime_jmx_config(extra_jmx_instance_config=None): # and run app/.local/bin/java -jar ~/jmxterm.jar # # The extra attributes are only available from Mendix 7.15.0+ + # Note: aliases are added later to make the metrics available for free on + # Datadog as `mx` is a supported prefix. Before that, all these metrics were + # being indexed as custom metrics by Datadog which are not free. config = { "init_config": {}, "instances": [ @@ -287,9 +290,9 @@ def _get_runtime_jmx_config(extra_jmx_instance_config=None): # NamedUserSessions = 0; # AnonymousSessions = 0; "attribute": { - "NamedUsers": {"metrics_type": "gauge"}, - "NamedUserSessions": {"metrics_type": "gauge"}, - "AnonymousSessions": {"metrics_type": "gauge"}, + "NamedUsers": {"metrics_type": "gauge", "alias": "mx.com.mendix.named_users"}, + "NamedUserSessions": {"metrics_type": "gauge", "alias": "mx.com.mendix.named_user_sessions"}, + "AnonymousSessions": {"metrics_type": "gauge", "alias": "mx.com.mendix.anonymous_sessions"}, }, } }, @@ -302,11 +305,11 @@ def _get_runtime_jmx_config(extra_jmx_instance_config=None): # Deletes = 0; # Transactions = 25; "attribute": { - "Selects": {"metrics_type": "counter"}, - "Updates": {"metrics_type": "counter"}, - "Inserts": {"metrics_type": "counter"}, - "Deletes": {"metrics_type": "counter"}, - "Transactions": {"metrics_type": "counter"}, + "Selects": {"metrics_type": "counter", "alias": "mx.com.mendix.selects"}, + "Updates": {"metrics_type": "counter", "alias": "mx.com.mendix.updates"}, + "Inserts": {"metrics_type": "counter", "alias": "mx.com.mendix.inserts"}, + "Deletes": {"metrics_type": "counter", "alias": "mx.com.mendix.deletes"}, + "Transactions": {"metrics_type": "counter", "alias": "mx.com.mendix.transactions"}, }, } }, @@ -315,7 +318,9 @@ def _get_runtime_jmx_config(extra_jmx_instance_config=None): "bean": "com.mendix:type=General", # Languages = en_US; # Entities = 24; - "attribute": {"Entities": {"metrics_type": "gauge"}}, + "attribute": { + "Entities": {"metrics_type": "gauge", "alias": "mx.com.mendix.entities"}, + }, } }, { @@ -330,23 +335,14 @@ def _get_runtime_jmx_config(extra_jmx_instance_config=None): # ThreadsPriority = 5; # QueueSize = 0; "attribute": { - "Threads": {"metrics_type": "gauge"}, - "MaxThreads": {"metrics_type": "gauge"}, - "IdleThreads": {"metrics_type": "gauge"}, - "QueueSize": {"metrics_type": "gauge"}, + "Threads": {"metrics_type": "gauge", "alias": "mx.com.mendix.threads"}, + "MaxThreads": {"metrics_type": "gauge", "alias": "mx.com.mendix.max_threads"}, + "IdleThreads": {"metrics_type": "gauge", "alias": "mx.com.mendix.idle_threads"}, + "QueueSize": {"metrics_type": "gauge", "alias": "mx.com.mendix.queue_size"}, }, } }, ], - # }, { - # 'include': { - # 'bean': 'com.mendix:type=Jetty', - # # ConnectedEndPoints = 0; - # # IdleTimeout = 30000; - # # RequestsActiveMax = 0; - # 'attribute': { - # } - # }, } ], } diff --git a/dependencies.yml b/dependencies.yml index eba749437..c586a7839 100644 --- a/dependencies.yml +++ b/dependencies.yml @@ -21,10 +21,10 @@ dependencies: buildpack: alias: cf-datadog-sidecar artifact: datadog/datadog-cloudfoundry-buildpack-{{ version }}.zip - version: 4.37.0 + version: 4.42.0 trace-agent: artifact: datadog/dd-java-agent-{{ version }}.jar - version: 1.27.0 + version: 1.45.2 dynatrace: agent: artifact: "{{ url }}/e/{{ environment }}/api/v1/deployment/installer/agent/unix/paas/latest?include=java&bitness=64&Api-Token={{ token }}" diff --git a/etc/m2ee/m2ee.yaml b/etc/m2ee/m2ee.yaml index 26687b2ed..f0ca90770 100644 --- a/etc/m2ee/m2ee.yaml +++ b/etc/m2ee/m2ee.yaml @@ -22,9 +22,9 @@ m2ee: javaopts: [ "-Dfile.encoding=UTF-8", - "-Djava.io.tmpdir=BUILD_PATH/data/tmp", - "-XX:OnError=kill -s USR1 PYTHONPID", - "-XX:OnOutOfMemoryError=kill -s USR2 PYTHONPID", + "-Djava.io.tmpdir=/tmp", + "-XX:OnError=BUILD_PATH/.local/scripts/on_error.sh", + "-XX:OnOutOfMemoryError=BUILD_PATH/.local/scripts/on_out_of_memory_error.sh", ] jetty: diff --git a/etc/scripts/on_error.sh b/etc/scripts/on_error.sh new file mode 100755 index 000000000..05e111625 --- /dev/null +++ b/etc/scripts/on_error.sh @@ -0,0 +1,2 @@ +#!/bin/bash +kill -s USR1 PYTHONPID diff --git a/etc/scripts/on_out_of_memory_error.sh b/etc/scripts/on_out_of_memory_error.sh new file mode 100755 index 000000000..7f6501e32 --- /dev/null +++ b/etc/scripts/on_out_of_memory_error.sh @@ -0,0 +1,2 @@ +#!/bin/bash +kill -s USR2 PYTHONPID