Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions agent/native/ext/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ typedef struct DurationOptionAdditionalMetadata DurationOptionAdditionalMetadata
struct SizeOptionAdditionalMetadata
{
SizeUnits defaultUnits = sizeUnits_byte;
Int64 minValidValueInBytes = INT64_MIN;
};
typedef struct SizeOptionAdditionalMetadata SizeOptionAdditionalMetadata;

Expand Down Expand Up @@ -427,7 +428,14 @@ static ResultCode parseSizeValue( const OptionMetadata* optMeta, String rawValue
ResultCode parseResultCode = parseSize( stringToView( rawValue )
, optMeta->additionalData.sizeData.defaultUnits
, /* out */ &parsedValue->u.sizeValue );
if ( parseResultCode == resultSuccess ) parsedValue->type = parsedOptionValueType_size;
if ( parseResultCode == resultSuccess )
{
if ( sizeToBytes( parsedValue->u.sizeValue ) < optMeta->additionalData.sizeData.minValidValueInBytes )
{
return resultParsingFailed;
}
parsedValue->type = parsedOptionValueType_size;
}
return parseResultCode;
}

Expand Down Expand Up @@ -667,7 +675,7 @@ static OptionMetadata buildDurationOptionMetadata(
};
}

[[maybe_unused]] static OptionMetadata buildSizeOptionMetadata(
static OptionMetadata buildSizeOptionMetadata(
String name
, StringView iniName
, bool isSecret
Expand All @@ -676,6 +684,7 @@ static OptionMetadata buildDurationOptionMetadata(
, SetConfigSnapshotFieldFunc setFieldFunc
, GetConfigSnapshotFieldFunc getFieldFunc
, SizeUnits defaultUnits
, Int64 minValidValueInBytes
)
{
return (OptionMetadata)
Expand All @@ -692,7 +701,7 @@ static OptionMetadata buildDurationOptionMetadata(
.setField = setFieldFunc,
.getField = getFieldFunc,
.parsedValueToZval = &parsedSizeValueToZval,
.additionalData = (OptionAdditionalMetadata){ .sizeData = (SizeOptionAdditionalMetadata){ .defaultUnits = defaultUnits } }
.additionalData = (OptionAdditionalMetadata){ .sizeData = (SizeOptionAdditionalMetadata){ .defaultUnits = defaultUnits, .minValidValueInBytes = minValidValueInBytes } }
};
}

Expand Down Expand Up @@ -827,6 +836,7 @@ ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS( LogLevel, logLevelSyslog )
# ifdef PHP_WIN32
ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS( LogLevel, logLevelWinSysDebug )
# endif
ELASTIC_APM_DEFINE_FIELD_ACCESS_FUNCS( sizeValue, maxSendQueueSize )
# if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS( MemoryTrackingLevel, memoryTrackingLevel )
# endif
Expand Down Expand Up @@ -882,6 +892,9 @@ ELASTIC_APM_DEFINE_FIELD_ACCESS_FUNCS( stringValue, debugDiagnosticsFile )
#define ELASTIC_APM_INIT_DURATION_METADATA( fieldName, optName, defaultValue, defaultUnits, isNegativeValid ) \
ELASTIC_APM_INIT_METADATA_EX( buildDurationOptionMetadata, fieldName, optName, /* isSecret */ false, /* isDynamic */ false, defaultValue, defaultUnits, isNegativeValid )

#define ELASTIC_APM_INIT_SIZE_METADATA( fieldName, optName, defaultValue, defaultUnits, minValidValueInBytes ) \
ELASTIC_APM_INIT_METADATA_EX( buildSizeOptionMetadata, fieldName, optName, /* isSecret */ false, /* isDynamic */ false, defaultValue, defaultUnits, minValidValueInBytes )

#define ELASTIC_APM_INIT_SECRET_METADATA( buildFunc, fieldName, optName, defaultValue ) \
ELASTIC_APM_INIT_METADATA_EX( buildFunc, fieldName, optName, /* isSecret */ true, /* isDynamic */ false, defaultValue )

Expand Down Expand Up @@ -1115,6 +1128,13 @@ static void initOptionsMetadata( OptionMetadata* optsMeta )
ELASTIC_APM_CFG_OPT_NAME_LOG_LEVEL_WIN_SYS_DEBUG );
#endif

ELASTIC_APM_INIT_SIZE_METADATA(
maxSendQueueSize,
ELASTIC_APM_CFG_OPT_NAME_MAX_SEND_QUEUE_SIZE,
/* defaultValue: */ makeSize( 10, sizeUnits_mebibyte ),
/* defaultUnits: */ sizeUnits_mebibyte,
/* minValidValueInBytes: */ 1 );

#if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
ELASTIC_APM_ENUM_INIT_METADATA(
/* fieldName: */ memoryTrackingLevel,
Expand Down
3 changes: 3 additions & 0 deletions agent/native/ext/ConfigManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ enum OptionId
#ifdef PHP_WIN32
optionId_logLevelWinSysDebug,
#endif
optionId_maxSendQueueSize,
#if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
optionId_memoryTrackingLevel,
#endif
Expand Down Expand Up @@ -303,6 +304,8 @@ const ConfigSnapshot* getGlobalCurrentConfigSnapshot();
#define ELASTIC_APM_CFG_OPT_NAME_LOG_LEVEL_WIN_SYS_DEBUG "log_level_win_sys_debug"
# endif

#define ELASTIC_APM_CFG_OPT_NAME_MAX_SEND_QUEUE_SIZE "max_send_queue_size"

/**
* Internal configuration option (not included in public documentation)
*/
Expand Down
2 changes: 2 additions & 0 deletions agent/native/ext/ConfigSnapshot.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "LogLevel.h"
#include "OptionalBool.h"
#include "time_util.h" // Duration
#include "util.h" // Size
#include "elastic_apm_assert_enabled.h"

struct ConfigSnapshot
Expand Down Expand Up @@ -68,6 +69,7 @@ struct ConfigSnapshot
#ifdef PHP_WIN32
LogLevel logLevelWinSysDebug = logLevel_off;
#endif
Size maxSendQueueSize;
#if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
MemoryTrackingLevel memoryTrackingLevel = memoryTrackingLevel_off;
#endif
Expand Down
19 changes: 14 additions & 5 deletions agent/native/ext/backend_comm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -660,15 +660,14 @@ static void freeDataToSendQueue( DataToSendQueue* dataQueue )
}
}

#define ELASTIC_APM_MAX_QUEUE_SIZE_IN_BYTES (10 * 1024 * 1024)

struct BackgroundBackendComm
{
Mutex* mutex;
ConditionVariable* condVar;
Thread* thread;
DataToSendQueue dataToSendQueue;
size_t dataToSendTotalSize;
UInt64 maxQueueSizeInBytes;
size_t nextEventsBatchId;
bool shouldExit;
TimeSpec shouldExitBy;
Expand Down Expand Up @@ -1051,13 +1050,17 @@ ResultCode newBackgroundBackendComm( const ConfigSnapshot* config, BackgroundBac

ResultCode resultCode;
BackgroundBackendComm* backgroundBackendComm = NULL;
Int64 maxQueueSizeInBytes = sizeToBytes( config->maxSendQueueSize );

ELASTIC_APM_ASSERT( maxQueueSizeInBytes > 0, "maxQueueSizeInBytes: %" PRId64, maxQueueSizeInBytes );

ELASTIC_APM_MALLOC_INSTANCE_IF_FAILED_GOTO( BackgroundBackendComm, /* out */ backgroundBackendComm );
backgroundBackendComm->condVar = NULL;
backgroundBackendComm->mutex = NULL;
backgroundBackendComm->thread = NULL;
initDataToSendQueue( &( backgroundBackendComm->dataToSendQueue ) );
backgroundBackendComm->dataToSendTotalSize = 0;
backgroundBackendComm->maxQueueSizeInBytes = (UInt64) maxQueueSizeInBytes;
backgroundBackendComm->nextEventsBatchId = 1;
backgroundBackendComm->shouldExit = false;
ELASTIC_APM_CALL_IF_FAILED_GOTO( newMutex( &( backgroundBackendComm->mutex ), /* dbgDesc */ "Background backend communications" ) );
Expand Down Expand Up @@ -1179,15 +1182,21 @@ ResultCode enqueueEventsToSendToApmServer( StringView userAgentHttpHeader, Strin
bool shouldUnlockMutex = false;
UInt64 id;
BackgroundBackendComm* backgroundBackendComm = g_backgroundBackendComm;
UInt64 totalSizeAfterEnqueue;

ELASTIC_APM_CALL_IF_FAILED_GOTO( lockMutex( backgroundBackendComm->mutex, &shouldUnlockMutex, __FUNCTION__ ) );

if ( backgroundBackendComm->dataToSendTotalSize >= ELASTIC_APM_MAX_QUEUE_SIZE_IN_BYTES )
totalSizeAfterEnqueue = (UInt64) backgroundBackendComm->dataToSendTotalSize + (UInt64) serializedEvents.length;
if ( totalSizeAfterEnqueue > backgroundBackendComm->maxQueueSizeInBytes )
{
ELASTIC_APM_LOG_ERROR(
"Already queued events are above max queue size - dropping these events"
"Queueing these events would exceed max queue size - dropping these events"
"; size of already queued events: %" PRIu64
, (UInt64) backgroundBackendComm->dataToSendTotalSize );
"; size of events to queue: %" PRIu64
"; max queue size: %" PRIu64
, (UInt64) backgroundBackendComm->dataToSendTotalSize
, (UInt64) serializedEvents.length
, backgroundBackendComm->maxQueueSizeInBytes );
ELASTIC_APM_SET_RESULT_CODE_AND_GOTO_FAILURE();
}

Expand Down
1 change: 1 addition & 0 deletions agent/native/ext/elastic_apm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ PHP_INI_BEGIN()
#ifdef PHP_WIN32
ELASTIC_APM_INI_ENTRY( ELASTIC_APM_CFG_OPT_NAME_LOG_LEVEL_WIN_SYS_DEBUG )
#endif
ELASTIC_APM_INI_ENTRY( ELASTIC_APM_CFG_OPT_NAME_MAX_SEND_QUEUE_SIZE )
#if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
ELASTIC_APM_INI_ENTRY( ELASTIC_APM_CFG_OPT_NAME_MEMORY_TRACKING_LEVEL )
#endif
Expand Down
10 changes: 10 additions & 0 deletions agent/native/ext/tests/config_defaults.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ ELASTIC_APM_LOG_LEVEL=
ELASTIC_APM_LOG_LEVEL_FILE=
ELASTIC_APM_LOG_LEVEL_SYSLOG=
ELASTIC_APM_LOG_LEVEL_WIN_SYS_DEBUG=
ELASTIC_APM_MAX_SEND_QUEUE_SIZE=
ELASTIC_APM_SECRET_TOKEN=
ELASTIC_APM_SERVER_URL=
ELASTIC_APM_SERVICE_NAME=
Expand Down Expand Up @@ -78,6 +79,15 @@ if (elasticApmIsOsWindows()) {
elasticApmAssertSame("elastic_apm_get_config_option_by_name('log_level_win_sys_debug')", elastic_apm_get_config_option_by_name('log_level_win_sys_debug'), ELASTIC_APM_LOG_LEVEL_NOT_SET);
}

//////////////////////////////////////////////
/////////////// max_send_queue_size

elasticApmAssertSame("getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE')", getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE'), false);

elasticApmAssertEqual("ini_get('elastic_apm.max_send_queue_size')", ini_get('elastic_apm.max_send_queue_size'), false);

elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 10.0 * 1024 * 1024);

//////////////////////////////////////////////
/////////////// secret_token

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ Configuration in ini file has higher precedence than environment variables
ELASTIC_APM_LOG_LEVEL_STDERR=CRITICAL
ELASTIC_APM_LOG_FILE=log_file_from_env_vars.txt
ELASTIC_APM_LOG_LEVEL_FILE=off
ELASTIC_APM_MAX_SEND_QUEUE_SIZE=123MB
--INI--
elastic_apm.log_file=log_file_from_ini.txt
elastic_apm.max_send_queue_size=456MB
elastic_apm.bootstrap_php_part_file=../../php/bootstrap_php_part.php
--FILE--
<?php
Expand All @@ -18,6 +20,12 @@ elasticApmAssertSame("ini_get('elastic_apm.log_file')", ini_get('elastic_apm.log

elasticApmAssertSame("elastic_apm_get_config_option_by_name('log_file')", elastic_apm_get_config_option_by_name('log_file'), 'log_file_from_ini.txt');

elasticApmAssertSame("getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE')", getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE'), '123MB');

elasticApmAssertSame("ini_get('elastic_apm.max_send_queue_size')", ini_get('elastic_apm.max_send_queue_size'), '456MB');

elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 456.0 * 1024 * 1024);

echo 'Test completed'
?>
--EXPECT--
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ When value in ini is invalid the fallback is the default and not environment var
--ENV--
ELASTIC_APM_LOG_LEVEL_STDERR=CRITICAL
ELASTIC_APM_ASSERT_LEVEL=O_n
ELASTIC_APM_MAX_SEND_QUEUE_SIZE=123MB
ELASTIC_APM_MEMORY_TRACKING_LEVEL=ALL
ELASTIC_APM_VERIFY_SERVER_CERT=false
--INI--
elastic_apm.max_send_queue_size=0
elastic_apm.memory_tracking_level=not a valid memory tracking level
elastic_apm.verify_server_cert=not a valid bool
elastic_apm.bootstrap_php_part_file=../../php/bootstrap_php_part.php
Expand All @@ -18,6 +20,10 @@ require __DIR__ . '/../tests_util/tests_util.php';
elasticApmAssertSame("elastic_apm_get_config_option_by_name('assert_level')", elastic_apm_get_config_option_by_name('assert_level'), ELASTIC_APM_ASSERT_LEVEL_O_N);
elasticApmAssertSame("getenv('ELASTIC_APM_ASSERT_LEVEL')", getenv('ELASTIC_APM_ASSERT_LEVEL'), 'O_n');

// max_send_queue_size is set in ini but the value is invalid so it falls back on default (which is `10MB`) and not the value set by env vars (which is `123MB`)
elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 10.0 * 1024 * 1024);
elasticApmAssertSame("getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE')", getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE'), '123MB');

// memory_tracking_level is set in ini but the value is invalid so it falls back on default (which is `ELASTIC_APM_MEMORY_TRACKING_LEVEL_NOT_SET) and not the value set by env vars (which is ELASTIC_APM_MEMORY_TRACKING_LEVEL_ALL)
elasticApmAssertSame("elastic_apm_get_config_option_by_name('memory_tracking_level')", elastic_apm_get_config_option_by_name('memory_tracking_level'), ELASTIC_APM_MEMORY_TRACKING_LEVEL_NOT_SET);
elasticApmAssertSame("getenv('ELASTIC_APM_MEMORY_TRACKING_LEVEL')", getenv('ELASTIC_APM_MEMORY_TRACKING_LEVEL'), 'ALL');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Setting configuration option to invalid value via environment variables
ELASTIC_APM_LOG_LEVEL_STDERR=CRITICAL
ELASTIC_APM_ENABLED=not_valid_boolean_value
ELASTIC_APM_ASSERT_LEVEL=|:/:\:|
ELASTIC_APM_MAX_SEND_QUEUE_SIZE=0
ELASTIC_APM_SECRET_TOKEN=\|<>|/
ELASTIC_APM_SERVER_URL=<\/\/>
ELASTIC_APM_SERVICE_NAME=/\><\/
Expand All @@ -30,6 +31,13 @@ elasticApmAssertSame("getenv('ELASTIC_APM_ASSERT_LEVEL')", getenv('ELASTIC_APM_A

elasticApmAssertSame("elastic_apm_get_config_option_by_name('assert_level')", elastic_apm_get_config_option_by_name('assert_level'), ELASTIC_APM_ASSERT_LEVEL_NOT_SET);

//////////////////////////////////////////////
/////////////// max_send_queue_size

elasticApmAssertSame("getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE')", getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE'), '0');

elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 10.0 * 1024 * 1024);

//////////////////////////////////////////////
/////////////// secret_token

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ ELASTIC_APM_LOG_LEVEL=CRITICAL
ELASTIC_APM_LOG_LEVEL_FILE=TRACE
ELASTIC_APM_LOG_LEVEL_SYSLOG=TRACE
ELASTIC_APM_LOG_LEVEL_WIN_SYS_DEBUG=CRITICAL
ELASTIC_APM_MAX_SEND_QUEUE_SIZE=123MB
ELASTIC_APM_SECRET_TOKEN=non-default_secret_token_123
ELASTIC_APM_SERVER_URL=https://non-default_server_url:4321/some/path
ELASTIC_APM_SERVICE_NAME=Non-default Service Name
Expand Down Expand Up @@ -66,6 +67,13 @@ if (elasticApmIsOsWindows()) {
elasticApmAssertSame("elastic_apm_get_config_option_by_name('log_level_win_sys_debug')", elastic_apm_get_config_option_by_name('log_level_win_sys_debug'), ELASTIC_APM_LOG_LEVEL_CRITICAL);
}

//////////////////////////////////////////////
/////////////// max_send_queue_size

elasticApmAssertSame("getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE')", getenv('ELASTIC_APM_MAX_SEND_QUEUE_SIZE'), '123MB');

elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 123.0 * 1024 * 1024);

//////////////////////////////////////////////
/////////////// secret_token

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ elastic_apm.log_level=CRITICAL
elastic_apm.log_level_file=TRACE
elastic_apm.log_level_syslog=TRACE
elastic_apm.log_level_win_sys_debug=CRITICAL
elastic_apm.max_send_queue_size=456MB
elastic_apm.secret_token=non-default_secret_token_123
elastic_apm.server_url=https://non-default_server_url:4321/some/path
elastic_apm.service_name=Non-default Service Name
Expand Down Expand Up @@ -65,6 +66,13 @@ if (elasticApmIsOsWindows()) {
elasticApmAssertSame("elastic_apm_get_config_option_by_name('log_level_win_sys_debug')", elastic_apm_get_config_option_by_name('log_level_win_sys_debug'), ELASTIC_APM_LOG_LEVEL_CRITICAL);
}

//////////////////////////////////////////////
/////////////// max_send_queue_size

elasticApmAssertSame("ini_get('elastic_apm.max_send_queue_size')", ini_get('elastic_apm.max_send_queue_size'), '456MB');

elasticApmAssertSame("elastic_apm_get_config_option_by_name('max_send_queue_size')", elastic_apm_get_config_option_by_name('max_send_queue_size'), 456.0 * 1024 * 1024);

//////////////////////////////////////////////
/////////////// secret_token

Expand Down
6 changes: 6 additions & 0 deletions agent/php/ElasticApm/Impl/Config/AllOptionsMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ private static function buildPositiveOrZeroIntMetadata(int $default): IntOptionM
return new IntOptionMetadata(/* min */ 0, /* max */ null, $default);
}

private static function buildPositiveSizeMetadata(int $defaultInBytes, int $defaultUnits): SizeOptionMetadata
{
return new SizeOptionMetadata(/* min */ 1.0, /* max */ null, $defaultUnits, floatval($defaultInBytes));
}

/**
* @return array<string, OptionMetadata<mixed>> Option name to metadata
*/
Expand Down Expand Up @@ -103,6 +108,7 @@ public static function get(): array
OptionNames::LOG_LEVEL => new NullableLogLevelOptionMetadata(),
OptionNames::LOG_LEVEL_STDERR => new NullableLogLevelOptionMetadata(),
OptionNames::LOG_LEVEL_SYSLOG => new NullableLogLevelOptionMetadata(),
OptionNames::MAX_SEND_QUEUE_SIZE => self::buildPositiveSizeMetadata(OptionDefaultValues::MAX_SEND_QUEUE_SIZE, SizeUnits::MEGABYTES),
OptionNames::NON_KEYWORD_STRING_MAX_LENGTH => self::buildPositiveOrZeroIntMetadata(/* default */ 10 * 1024),
OptionNames::PROFILING_INFERRED_SPANS_ENABLED => new BoolOptionMetadata(/* default */ false),
OptionNames::PROFILING_INFERRED_SPANS_MIN_DURATION => self::buildDurationMetadataInMilliseconds(/* default */ 0),
Expand Down
1 change: 1 addition & 0 deletions agent/php/ElasticApm/Impl/Config/OptionDefaultValues.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ final class OptionDefaultValues
{
use StaticClassTrait;

public const MAX_SEND_QUEUE_SIZE = 10 * 1024 * 1024;
public const SPAN_STACK_TRACE_MIN_DURATION = 5;
public const STACK_TRACE_LIMIT = 50;
public const TRANSACTION_MAX_SPANS = 500;
Expand Down
1 change: 1 addition & 0 deletions agent/php/ElasticApm/Impl/Config/OptionNames.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ final class OptionNames
public const LOG_LEVEL = 'log_level';
public const LOG_LEVEL_SYSLOG = 'log_level_syslog';
public const LOG_LEVEL_STDERR = 'log_level_stderr';
public const MAX_SEND_QUEUE_SIZE = 'max_send_queue_size';
public const NON_KEYWORD_STRING_MAX_LENGTH = 'non_keyword_string_max_length';
public const PROFILING_INFERRED_SPANS_ENABLED = 'profiling_inferred_spans_enabled';
public const PROFILING_INFERRED_SPANS_MIN_DURATION = 'profiling_inferred_spans_min_duration';
Expand Down
Loading
Loading