Skip to content

Commit d028397

Browse files
committed
only legacy code creates package version metric
Don't create package major version supportability metric when package info for vulnerability management is collected using composer - this results in a lot of metrics (one metric for each package) which is not very useful. Agent will only generate a handful metrics for packages that are instrumented, and, if composer is enabled, the major version value will be from package info collected using composer api. Otherwise legacy method will be used to obtain the major version value (retrieve from the package itself by accessing static VERSION constant or calling to get_version method). [WIP] - unit tests updates pending...
1 parent 999656b commit d028397

File tree

13 files changed

+77
-26
lines changed

13 files changed

+77
-26
lines changed

agent/fw_drupal8.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,8 @@ void nr_drupal_version() {
689689
if (NRINI(vulnerability_management_package_detection_enabled)) {
690690
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
691691
}
692-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
693-
version);
692+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
693+
version, nr_fw_support_add_package_supportability_metric);
694694
}
695695

696696
nr_php_zval_free(&zval_version);

agent/fw_laravel.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -963,8 +963,8 @@ NR_PHP_WRAPPER(nr_laravel_application_construct) {
963963
// Add php package to transaction
964964
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
965965
}
966-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
967-
version);
966+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
967+
version, nr_fw_support_add_package_supportability_metric);
968968

969969
if (version) {
970970
nrl_debug(NRL_FRAMEWORK, "Laravel version is " NRP_FMT, NRP_PHP(version));

agent/fw_slim.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ NR_PHP_WRAPPER(nr_slim_application_construct) {
163163
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
164164
}
165165

166-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
167-
version);
166+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
167+
version, nr_fw_support_add_package_supportability_metric);
168168

169169
nr_free(version);
170170
nr_php_scope_release(&this_var);

agent/fw_wordpress.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,8 +813,8 @@ void nr_wordpress_version() {
813813
if (NRINI(vulnerability_management_package_detection_enabled)) {
814814
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
815815
}
816-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
817-
version);
816+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
817+
version, nr_fw_support_add_package_supportability_metric);
818818
}
819819
zval_dtor(&retval);
820820
}

agent/lib_aws_sdk_php.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ void nr_lib_aws_sdk_php_handle_version() {
6969
/* Add php package to transaction */
7070
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
7171
}
72-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
73-
version);
72+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
73+
version, nr_fw_support_add_package_supportability_metric);
7474
nr_php_zval_free(&zval_version);
7575
}
7676

agent/lib_composer.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,6 @@ static void nr_execute_handle_autoload_composer_get_packages_information(
214214
nr_txn_add_php_package(NRPRG(txn), NRSAFESTR(Z_STRVAL_P(value)),
215215
NRSAFESTR(version));
216216
}
217-
nr_fw_support_add_package_supportability_metric(
218-
NRPRG(txn), NRSAFESTR(Z_STRVAL_P(value)), NRSAFESTR(version));
219217
}
220218
}
221219
ZEND_HASH_FOREACH_END();
@@ -244,9 +242,6 @@ static void nr_execute_handle_autoload_composer_get_packages_information(
244242
NRSAFESTR(Z_STRVAL_P(package_version)));
245243
nr_txn_add_php_package_from_source(NRPRG(txn), NRSAFESTR(ZSTR_VAL(package_name)),
246244
NRSAFESTR(Z_STRVAL_P(package_version)), NR_PHP_PACKAGE_SOURCE_COMPOSER);
247-
nr_fw_support_add_package_supportability_metric(
248-
NRPRG(txn), NRSAFESTR(ZSTR_VAL(package_name)),
249-
NRSAFESTR(Z_STRVAL_P(package_version)));
250245
}
251246
}
252247
ZEND_HASH_FOREACH_END();

agent/lib_guzzle6.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,8 @@ NR_PHP_WRAPPER_START(nr_guzzle6_client_construct) {
366366
if (NULL == version) {
367367
version = nr_php_get_object_constant(this_var, "MAJOR_VERSION");
368368
}
369-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
370-
version);
369+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
370+
version, nr_fw_support_add_package_supportability_metric);
371371
nr_free(version);
372372

373373
(void)wraprec;

agent/lib_monolog.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,8 @@ NR_PHP_WRAPPER(nr_monolog_logger_addrecord) {
378378
= nr_monolog_get_timestamp(api, argc, NR_EXECUTE_ORIG_ARGS TSRMLS_CC);
379379
char version[MAJOR_VERSION_LENGTH];
380380
snprintf(version, sizeof(version), "%d", api);
381-
nr_fw_support_add_package_supportability_metric(NRPRG(txn),
382-
PHP_PACKAGE_NAME, version);
381+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn),
382+
PHP_PACKAGE_NAME, version, nr_fw_support_add_package_supportability_metric);
383383
}
384384

385385
/* Record the log event */

agent/lib_predis.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,8 +654,7 @@ NR_PHP_WRAPPER(nr_predis_client_construct) {
654654
// Add php package to transaction
655655
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
656656
}
657-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
658-
version);
657+
nr_txn_add_package_major_version_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME, version, nr_fw_support_add_package_supportability_metric);
659658
nr_free(version);
660659

661660
/*

axiom/nr_php_packages.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "util_random.h"
1111
#include "util_vector.h"
1212
#include "util_hashmap.h"
13+
#include "util_strings.h"
1314

1415
#define PHP_PACKAGE_VERSION_UNKNOWN " "
1516

@@ -140,6 +141,26 @@ static inline int nr_php_packages_has_package(nr_php_packages_t* h,
140141
return 0;
141142
}
142143

144+
/*
145+
* Purpose : Retrieve a pointer to php package from the collection
146+
*
147+
* Params : 1. A pointer to nr_php_packages_t
148+
* 2. The name of the package to retrieve
149+
*
150+
* Returns : Returns pointer to php package if the package exists or NULL
151+
*/
152+
static inline nr_php_package_t* nr_php_packages_get_package(nr_php_packages_t* php_packages,
153+
const char* package_name) {
154+
if (NULL == package_name) {
155+
return NULL;
156+
}
157+
158+
if (nrlikely(NULL != php_packages && NULL != php_packages->data)) {
159+
return (nr_php_package_t*)nr_hashmap_get(php_packages->data, package_name, nr_strlen(package_name));
160+
}
161+
return NULL;
162+
}
163+
143164
/*
144165
* Purpose : Converts a package to a json
145166
*

0 commit comments

Comments
 (0)