Skip to content

Commit 1fda499

Browse files
mfulblavarou
andauthored
feat(agent): improve package major version metric creation (#965)
Change how the package major number metrics are created. This now occurs in R_SHUTDOWN. This allows the use of package versions from ALL sources including the Composer API. Whenever instrumentation for a package detects a package, it can create a package suggestion. Initially if a version is not known it is fine to use PHP_PACKAGE_VERSION_UNKNOWN. If later the instrumentation determines a version from a class constant, etc, then the suggestion can be updated with the version. At the end of the transaction the suggestions are iterated over and the actual package data (which could include Composer API data) is referenced and a major number supportability metric is created with the best version available. --------- Co-authored-by: Michal Nowacki <[email protected]>
1 parent 51f6d43 commit 1fda499

File tree

61 files changed

+800
-207
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+800
-207
lines changed

agent/Makefile.frag

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ TEST_BINARIES = \
107107
tests/test_php_minit \
108108
tests/test_php_stack \
109109
tests/test_php_stacked_segment \
110+
tests/test_php_txn \
110111
tests/test_php_wrapper \
111112
tests/test_predis \
112113
tests/test_redis \

agent/fw_drupal.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -886,10 +886,7 @@ void nr_drupal_enable(TSRMLS_D) {
886886
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME,
887887
PHP_PACKAGE_VERSION_UNKNOWN);
888888
}
889-
890-
nr_fw_support_add_package_supportability_metric(
891-
NRPRG(txn), PHP_PACKAGE_NAME, NULL,
892-
nr_php_packages_get_package(NRPRG(txn)->php_packages,
893-
PHP_PACKAGE_NAME));
894889

890+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
891+
PHP_PACKAGE_VERSION_UNKNOWN);
895892
}

agent/fw_drupal8.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,6 @@ NR_PHP_WRAPPER_END
669669
void nr_drupal_version() {
670670
zval* zval_version = NULL;
671671
zend_class_entry* class_entry = NULL;
672-
nr_php_package_t* p = NULL;
673672

674673
class_entry = nr_php_find_class("drupal");
675674
if (NULL == class_entry) {
@@ -688,10 +687,8 @@ void nr_drupal_version() {
688687
if (nr_php_is_zval_valid_string(zval_version)) {
689688
char* version = Z_STRVAL_P(zval_version);
690689
if (NRINI(vulnerability_management_package_detection_enabled)) {
691-
p = nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
690+
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
692691
}
693-
nr_fw_support_add_package_supportability_metric(
694-
NRPRG(txn), PHP_PACKAGE_NAME, version, p);
695692
}
696693

697694
nr_php_zval_free(&zval_version);
@@ -763,4 +760,7 @@ void nr_drupal8_enable(TSRMLS_D) {
763760
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME,
764761
PHP_PACKAGE_VERSION_UNKNOWN);
765762
}
763+
764+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
765+
PHP_PACKAGE_VERSION_UNKNOWN);
766766
}

agent/fw_laminas3.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@ void nr_laminas3_enable(TSRMLS_D) {
168168
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME,
169169
PHP_PACKAGE_VERSION_UNKNOWN);
170170
}
171-
nr_fw_support_add_package_supportability_metric(
172-
NRPRG(txn), PHP_PACKAGE_NAME, NULL,
173-
nr_php_packages_get_package(NRPRG(txn)->php_packages,
174-
PHP_PACKAGE_NAME));
171+
172+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
173+
PHP_PACKAGE_VERSION_UNKNOWN);
175174
}

agent/fw_laravel.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,6 @@ NR_PHP_WRAPPER(nr_laravel_application_construct) {
949949
zval* this_var = nr_php_scope_get(NR_EXECUTE_ORIG_ARGS TSRMLS_CC);
950950
;
951951
char* version = NULL;
952-
nr_php_package_t* p = NULL;
953952

954953
NR_UNUSED_SPECIALFN;
955954
(void)wraprec;
@@ -962,10 +961,11 @@ NR_PHP_WRAPPER(nr_laravel_application_construct) {
962961

963962
if (NRINI(vulnerability_management_package_detection_enabled)) {
964963
// Add php package to transaction
965-
p = nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
964+
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
966965
}
967-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
968-
version, p);
966+
967+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
968+
version);
969969

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

agent/fw_lumen.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,6 @@ void nr_lumen_enable(TSRMLS_D) {
239239
PHP_PACKAGE_VERSION_UNKNOWN);
240240
}
241241

242-
nr_fw_support_add_package_supportability_metric(
243-
NRPRG(txn), PHP_PACKAGE_NAME, NULL,
244-
nr_php_packages_get_package(NRPRG(txn)->php_packages,
245-
PHP_PACKAGE_NAME));
242+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
243+
PHP_PACKAGE_VERSION_UNKNOWN);
246244
}

agent/fw_slim.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ NR_PHP_WRAPPER_END
152152
NR_PHP_WRAPPER(nr_slim_application_construct) {
153153
zval* this_var = nr_php_scope_get(NR_EXECUTE_ORIG_ARGS);
154154
char* version = NULL;
155-
nr_php_package_t* p = NULL;
156155

157156
NR_UNUSED_SPECIALFN;
158157
(void)wraprec;
@@ -161,11 +160,11 @@ NR_PHP_WRAPPER(nr_slim_application_construct) {
161160

162161
if (NRINI(vulnerability_management_package_detection_enabled)) {
163162
// Add php package to transaction
164-
p = nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
163+
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
165164
}
166165

167-
nr_fw_support_add_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
168-
version, p);
166+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
167+
version);
169168

170169
nr_free(version);
171170
nr_php_scope_release(&this_var);

agent/fw_symfony4.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,6 @@ void nr_symfony4_enable(TSRMLS_D) {
283283
PHP_PACKAGE_VERSION_UNKNOWN);
284284
}
285285

286-
nr_fw_support_add_package_supportability_metric(
287-
NRPRG(txn), PHP_PACKAGE_NAME, NULL,
288-
nr_php_packages_get_package(NRPRG(txn)->php_packages,
289-
PHP_PACKAGE_NAME));
286+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
287+
PHP_PACKAGE_VERSION_UNKNOWN);
290288
}

agent/fw_wordpress.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -804,18 +804,17 @@ void nr_wordpress_version() {
804804
"})();";
805805

806806
zval retval;
807-
int result
808-
= zend_eval_string(func_string, &retval, "Get Wordpress Version");
809-
nr_php_package_t* p = NULL;
807+
int result = zend_eval_string(func_string, &retval, "Get Wordpress Version");
810808
// Add php package to transaction
811809
if (SUCCESS == result) {
812810
if (nr_php_is_zval_valid_string(&retval)) {
813811
char* version = Z_STRVAL(retval);
814812
if (NRINI(vulnerability_management_package_detection_enabled)) {
815-
p = nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
813+
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME, version);
816814
}
817-
nr_fw_support_add_package_supportability_metric(
818-
NRPRG(txn), PHP_PACKAGE_NAME, version, p);
815+
816+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
817+
version);
819818
}
820819
zval_dtor(&retval);
821820
}

agent/fw_yii.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,7 @@ void nr_yii2_enable(TSRMLS_D) {
227227
nr_txn_add_php_package(NRPRG(txn), PHP_PACKAGE_NAME,
228228
PHP_PACKAGE_VERSION_UNKNOWN);
229229
}
230-
231-
nr_fw_support_add_package_supportability_metric(
232-
NRPRG(txn), PHP_PACKAGE_NAME, NULL,
233-
nr_php_packages_get_package(NRPRG(txn)->php_packages,
234-
PHP_PACKAGE_NAME));
230+
231+
nr_txn_suggest_package_supportability_metric(NRPRG(txn), PHP_PACKAGE_NAME,
232+
PHP_PACKAGE_VERSION_UNKNOWN);
235233
}

0 commit comments

Comments
 (0)