docs/architecture/ExtensionConfiguration.md
Extension configuration allows users to customize extension loading behavior, enable/disable specific extensions, and pass extension-specific settings.
Configuration files are searched in priority order (highest to lowest):
-Dbtrace.extensions.config=/path/to/config~/.btrace/extensions.conf$BTRACE_HOME/conf/extensions.confThe first file found is used. Settings from multiple files are NOT merged.
Uses standard Java properties format:
# Extension Control
# Comma-separated list of extension IDs to enable (empty = all enabled)
extensions.enabled=
# Comma-separated list of extension IDs to disable
extensions.disabled=
# Auto-load extensions on demand (default: true)
extensions.autoload=true
# Extension-specific settings (passed to extension on load)
# Format: <extension-id>.<setting-name>=<value>
btrace-metrics.histogram.default-precision=3
btrace-metrics.stats.window-size=1000
extensions.enabled
extensions.enabled=btrace-metrics,btrace-customextensions.disabled
extensions.disabled=btrace-old-metricsextensions.enabled.extensions.autoload
truetrue, extensions are loaded on demand when scripts use their services. If false, all enabled extensions are loaded at agent startup.Extensions can define custom configuration properties using the pattern:
<extension-id>.<setting-name>=<value>
Examples:
# BTrace Metrics settings
btrace-metrics.histogram.default-precision=3
btrace-metrics.histogram.max-value=3600000000
btrace-metrics.stats.window-size=1000
# Custom extension settings
my-extension.feature.enabled=true
my-extension.endpoint=http://localhost:8080
Extension-specific settings are passed to the extension when loaded. Extensions can access these via their configuration API.
# Disable legacy metrics extension
extensions.disabled=btrace-old-metrics
# Only load metrics and custom extensions
extensions.enabled=btrace-metrics,my-custom-extension
# Configure metrics extension
btrace-metrics.histogram.default-precision=3
btrace-metrics.histogram.max-value=3600000000
# Disable lazy loading, load all extensions immediately
extensions.autoload=false
New class to manage extension configuration:
public class ExtensionConfig {
public boolean isEnabled(String extensionId);
public boolean isAutoLoad();
public Properties getExtensionProperties(String extensionId);
}
ExtensionLoader will:
Command-line (-Dbtrace.extensions.config)
↓
User config (~/.btrace/extensions.conf)
↓
System config ($BTRACE_HOME/conf/extensions.conf)
↓
Built-in defaults (all enabled, autoload=true)