mirror of
https://github.com/vacp2p/linea-besu.git
synced 2026-01-08 20:47:59 -05:00
shift creation of plugin context to BesuCommand for now (#7625)
* shift creation of plugin context to BesuCommand for now * mock component will provide a no-op metrics sys --------- Signed-off-by: Justin Florentine <justin+github@florentine.us>
This commit is contained in:
committed by
GitHub
parent
6df4149f2a
commit
7d3e376771
@@ -13,6 +13,7 @@
|
||||
### Bug fixes
|
||||
- Fix mounted data path directory permissions for besu user [#7575](https://github.com/hyperledger/besu/pull/7575)
|
||||
- Fix for `debug_traceCall` to handle transactions without specified gas price. [#7510](https://github.com/hyperledger/besu/pull/7510)
|
||||
- Corrects a regression where custom plugin services are not initialized correctly. [#7625](https://github.com/hyperledger/besu/pull/7625)
|
||||
|
||||
|
||||
## 24.9.1
|
||||
|
||||
@@ -75,6 +75,70 @@ public class ProcessBesuNodeRunner implements BesuNodeRunner {
|
||||
|
||||
final Path dataDir = node.homeDirectory();
|
||||
|
||||
final List<String> params = commandlineArgs(node, dataDir);
|
||||
|
||||
LOG.info("Creating besu process with params {}", params);
|
||||
final ProcessBuilder processBuilder =
|
||||
new ProcessBuilder(params)
|
||||
.directory(new File(System.getProperty("user.dir")).getParentFile().getParentFile())
|
||||
.redirectErrorStream(true)
|
||||
.redirectInput(Redirect.INHERIT);
|
||||
if (!node.getPlugins().isEmpty()) {
|
||||
processBuilder
|
||||
.environment()
|
||||
.put(
|
||||
"BESU_OPTS",
|
||||
"-Dbesu.plugins.dir=" + dataDir.resolve("plugins").toAbsolutePath().toString());
|
||||
}
|
||||
// Use non-blocking randomness for acceptance tests
|
||||
processBuilder
|
||||
.environment()
|
||||
.put(
|
||||
"JAVA_OPTS",
|
||||
"-Djava.security.properties="
|
||||
+ "acceptance-tests/tests/build/resources/test/acceptanceTesting.security");
|
||||
// add additional environment variables
|
||||
processBuilder.environment().putAll(node.getEnvironment());
|
||||
|
||||
try {
|
||||
int debugPort = Integer.parseInt(System.getenv("BESU_DEBUG_CHILD_PROCESS_PORT"));
|
||||
LOG.warn("Waiting for debugger to attach to SUSPENDED child process");
|
||||
String debugOpts =
|
||||
" -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:" + debugPort;
|
||||
String prevJavaOpts = processBuilder.environment().get("JAVA_OPTS");
|
||||
if (prevJavaOpts == null) {
|
||||
processBuilder.environment().put("JAVA_OPTS", debugOpts);
|
||||
} else {
|
||||
processBuilder.environment().put("JAVA_OPTS", prevJavaOpts + debugOpts);
|
||||
}
|
||||
|
||||
} catch (NumberFormatException e) {
|
||||
LOG.debug(
|
||||
"Child process may be attached to by exporting BESU_DEBUG_CHILD_PROCESS_PORT=<port> to env");
|
||||
}
|
||||
|
||||
try {
|
||||
checkState(
|
||||
isNotAliveOrphan(node.getName()),
|
||||
"A live process with name: %s, already exists. Cannot create another with the same name as it would orphan the first",
|
||||
node.getName());
|
||||
|
||||
final Process process = processBuilder.start();
|
||||
process.onExit().thenRun(() -> node.setExitCode(process.exitValue()));
|
||||
outputProcessorExecutor.execute(() -> printOutput(node, process));
|
||||
besuProcesses.put(node.getName(), process);
|
||||
} catch (final IOException e) {
|
||||
LOG.error("Error starting BesuNode process", e);
|
||||
}
|
||||
|
||||
if (node.getRunCommand().isEmpty()) {
|
||||
waitForFile(dataDir, "besu.ports");
|
||||
waitForFile(dataDir, "besu.networks");
|
||||
}
|
||||
MDC.remove("node");
|
||||
}
|
||||
|
||||
private List<String> commandlineArgs(final BesuNode node, final Path dataDir) {
|
||||
final List<String> params = new ArrayList<>();
|
||||
params.add("build/install/besu/bin/besu");
|
||||
|
||||
@@ -388,66 +452,7 @@ public class ProcessBesuNodeRunner implements BesuNodeRunner {
|
||||
}
|
||||
|
||||
params.addAll(node.getRunCommand());
|
||||
|
||||
LOG.info("Creating besu process with params {}", params);
|
||||
final ProcessBuilder processBuilder =
|
||||
new ProcessBuilder(params)
|
||||
.directory(new File(System.getProperty("user.dir")).getParentFile().getParentFile())
|
||||
.redirectErrorStream(true)
|
||||
.redirectInput(Redirect.INHERIT);
|
||||
if (!node.getPlugins().isEmpty()) {
|
||||
processBuilder
|
||||
.environment()
|
||||
.put(
|
||||
"BESU_OPTS",
|
||||
"-Dbesu.plugins.dir=" + dataDir.resolve("plugins").toAbsolutePath().toString());
|
||||
}
|
||||
// Use non-blocking randomness for acceptance tests
|
||||
processBuilder
|
||||
.environment()
|
||||
.put(
|
||||
"JAVA_OPTS",
|
||||
"-Djava.security.properties="
|
||||
+ "acceptance-tests/tests/build/resources/test/acceptanceTesting.security");
|
||||
// add additional environment variables
|
||||
processBuilder.environment().putAll(node.getEnvironment());
|
||||
|
||||
try {
|
||||
int debugPort = Integer.parseInt(System.getenv("BESU_DEBUG_CHILD_PROCESS_PORT"));
|
||||
LOG.warn("Waiting for debugger to attach to SUSPENDED child process");
|
||||
String debugOpts =
|
||||
" -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:" + debugPort;
|
||||
String prevJavaOpts = processBuilder.environment().get("JAVA_OPTS");
|
||||
if (prevJavaOpts == null) {
|
||||
processBuilder.environment().put("JAVA_OPTS", debugOpts);
|
||||
} else {
|
||||
processBuilder.environment().put("JAVA_OPTS", prevJavaOpts + debugOpts);
|
||||
}
|
||||
|
||||
} catch (NumberFormatException e) {
|
||||
LOG.debug(
|
||||
"Child process may be attached to by exporting BESU_DEBUG_CHILD_PROCESS_PORT=<port> to env");
|
||||
}
|
||||
|
||||
try {
|
||||
checkState(
|
||||
isNotAliveOrphan(node.getName()),
|
||||
"A live process with name: %s, already exists. Cannot create another with the same name as it would orphan the first",
|
||||
node.getName());
|
||||
|
||||
final Process process = processBuilder.start();
|
||||
process.onExit().thenRun(() -> node.setExitCode(process.exitValue()));
|
||||
outputProcessorExecutor.execute(() -> printOutput(node, process));
|
||||
besuProcesses.put(node.getName(), process);
|
||||
} catch (final IOException e) {
|
||||
LOG.error("Error starting BesuNode process", e);
|
||||
}
|
||||
|
||||
if (node.getRunCommand().isEmpty()) {
|
||||
waitForFile(dataDir, "besu.ports");
|
||||
waitForFile(dataDir, "besu.networks");
|
||||
}
|
||||
MDC.remove("node");
|
||||
return params;
|
||||
}
|
||||
|
||||
private boolean isNotAliveOrphan(final String name) {
|
||||
|
||||
@@ -138,7 +138,8 @@ public class ThreadBesuNodeRunner implements BesuNodeRunner {
|
||||
final PermissioningServiceImpl permissioningService = new PermissioningServiceImpl();
|
||||
|
||||
GlobalOpenTelemetry.resetForTest();
|
||||
final ObservableMetricsSystem metricsSystem = component.getObservableMetricsSystem();
|
||||
final ObservableMetricsSystem metricsSystem =
|
||||
(ObservableMetricsSystem) component.getMetricsSystem();
|
||||
final List<EnodeURL> bootnodes =
|
||||
node.getConfiguration().getBootnodes().stream().map(EnodeURLImpl::fromURI).toList();
|
||||
|
||||
@@ -280,6 +281,16 @@ public class ThreadBesuNodeRunner implements BesuNodeRunner {
|
||||
this.toProvide = toProvide;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MetricsConfiguration provideMetricsConfiguration() {
|
||||
if (toProvide.getMetricsConfiguration() != null) {
|
||||
return toProvide.getMetricsConfiguration();
|
||||
} else {
|
||||
return MetricsConfiguration.builder().build();
|
||||
}
|
||||
}
|
||||
|
||||
@Provides
|
||||
public BesuNode provideBesuNodeRunner() {
|
||||
return toProvide;
|
||||
@@ -410,13 +421,13 @@ public class ThreadBesuNodeRunner implements BesuNodeRunner {
|
||||
public BesuController provideBesuController(
|
||||
final SynchronizerConfiguration synchronizerConfiguration,
|
||||
final BesuControllerBuilder builder,
|
||||
final ObservableMetricsSystem metricsSystem,
|
||||
final MetricsSystem metricsSystem,
|
||||
final KeyValueStorageProvider storageProvider,
|
||||
final MiningParameters miningParameters) {
|
||||
|
||||
builder
|
||||
.synchronizerConfiguration(synchronizerConfiguration)
|
||||
.metricsSystem(metricsSystem)
|
||||
.metricsSystem((ObservableMetricsSystem) metricsSystem)
|
||||
.dataStorageConfiguration(DataStorageConfiguration.DEFAULT_FOREST_CONFIG)
|
||||
.ethProtocolConfiguration(EthProtocolConfiguration.defaultConfig())
|
||||
.clock(Clock.systemUTC())
|
||||
@@ -562,12 +573,6 @@ public class ThreadBesuNodeRunner implements BesuNodeRunner {
|
||||
return besuCommand;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MetricsConfiguration provideMetricsConfiguration() {
|
||||
return MetricsConfiguration.builder().build();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("besuCommandLogger")
|
||||
@Singleton
|
||||
|
||||
@@ -16,6 +16,7 @@ package org.hyperledger.besu;
|
||||
|
||||
import org.hyperledger.besu.cli.BesuCommand;
|
||||
import org.hyperledger.besu.cli.logging.BesuLoggingConfigurationFactory;
|
||||
import org.hyperledger.besu.components.BesuComponent;
|
||||
import org.hyperledger.besu.components.DaggerBesuComponent;
|
||||
|
||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||
@@ -36,13 +37,15 @@ public final class Besu {
|
||||
*/
|
||||
public static void main(final String... args) {
|
||||
setupLogging();
|
||||
final BesuCommand besuCommand = DaggerBesuComponent.create().getBesuCommand();
|
||||
final BesuComponent besuComponent = DaggerBesuComponent.create();
|
||||
final BesuCommand besuCommand = besuComponent.getBesuCommand();
|
||||
int exitCode =
|
||||
besuCommand.parse(
|
||||
new RunLast(),
|
||||
besuCommand.parameterExceptionHandler(),
|
||||
besuCommand.executionExceptionHandler(),
|
||||
System.in,
|
||||
besuComponent,
|
||||
args);
|
||||
|
||||
System.exit(exitCode);
|
||||
|
||||
@@ -85,6 +85,7 @@ import org.hyperledger.besu.cli.util.BesuCommandCustomFactory;
|
||||
import org.hyperledger.besu.cli.util.CommandLineUtils;
|
||||
import org.hyperledger.besu.cli.util.ConfigDefaultValueProviderStrategy;
|
||||
import org.hyperledger.besu.cli.util.VersionProvider;
|
||||
import org.hyperledger.besu.components.BesuComponent;
|
||||
import org.hyperledger.besu.config.CheckpointConfigOptions;
|
||||
import org.hyperledger.besu.config.GenesisConfigFile;
|
||||
import org.hyperledger.besu.config.GenesisConfigOptions;
|
||||
@@ -145,7 +146,6 @@ import org.hyperledger.besu.evm.precompile.KZGPointEvalPrecompiledContract;
|
||||
import org.hyperledger.besu.metrics.BesuMetricCategory;
|
||||
import org.hyperledger.besu.metrics.MetricCategoryRegistryImpl;
|
||||
import org.hyperledger.besu.metrics.MetricsProtocol;
|
||||
import org.hyperledger.besu.metrics.MetricsSystemFactory;
|
||||
import org.hyperledger.besu.metrics.ObservableMetricsSystem;
|
||||
import org.hyperledger.besu.metrics.StandardMetricCategory;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration;
|
||||
@@ -423,6 +423,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
private final TransactionPoolValidatorServiceImpl transactionValidatorServiceImpl;
|
||||
private final TransactionSimulationServiceImpl transactionSimulationServiceImpl;
|
||||
private final BlockchainServiceImpl blockchainServiceImpl;
|
||||
private BesuComponent besuComponent;
|
||||
|
||||
static class P2PDiscoveryOptionGroup {
|
||||
|
||||
@@ -897,9 +898,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
private BesuController besuController;
|
||||
private BesuConfigurationImpl pluginCommonConfiguration;
|
||||
|
||||
private final Supplier<ObservableMetricsSystem> metricsSystem =
|
||||
Suppliers.memoize(() -> MetricsSystemFactory.create(metricsConfiguration()));
|
||||
|
||||
private Vertx vertx;
|
||||
private EnodeDnsConfiguration enodeDnsConfiguration;
|
||||
private KeyValueStorageProvider keyValueStorageProvider;
|
||||
@@ -1029,6 +1027,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
* @param parameterExceptionHandler Handler for exceptions related to command line parameters.
|
||||
* @param executionExceptionHandler Handler for exceptions during command execution.
|
||||
* @param in The input stream for commands.
|
||||
* @param besuComponent The Besu component.
|
||||
* @param args The command line arguments.
|
||||
* @return The execution result status code.
|
||||
*/
|
||||
@@ -1037,8 +1036,12 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
final BesuParameterExceptionHandler parameterExceptionHandler,
|
||||
final BesuExecutionExceptionHandler executionExceptionHandler,
|
||||
final InputStream in,
|
||||
final BesuComponent besuComponent,
|
||||
final String... args) {
|
||||
|
||||
if (besuComponent == null) {
|
||||
throw new IllegalArgumentException("BesuComponent must be provided");
|
||||
}
|
||||
this.besuComponent = besuComponent;
|
||||
initializeCommandLineSettings(in);
|
||||
|
||||
// Create the execution strategy chain.
|
||||
@@ -1142,7 +1145,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
logger.info("Starting Besu");
|
||||
|
||||
// Need to create vertx after cmdline has been parsed, such that metricsSystem is configurable
|
||||
vertx = createVertx(createVertxOptions(metricsSystem.get()));
|
||||
vertx = createVertx(createVertxOptions(besuComponent.getMetricsSystem()));
|
||||
|
||||
validateOptions();
|
||||
|
||||
@@ -1527,8 +1530,8 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
}
|
||||
|
||||
private void setReleaseMetrics() {
|
||||
metricsSystem
|
||||
.get()
|
||||
besuComponent
|
||||
.getMetricsSystem()
|
||||
.createLabelledGauge(
|
||||
StandardMetricCategory.PROCESS, "release", "Release information", "version")
|
||||
.labels(() -> 1, BesuInfo.version());
|
||||
@@ -1992,7 +1995,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
.miningParameters(miningParametersSupplier.get())
|
||||
.transactionPoolConfiguration(buildTransactionPoolConfiguration())
|
||||
.nodeKey(new NodeKey(securityModule()))
|
||||
.metricsSystem(metricsSystem.get())
|
||||
.metricsSystem((ObservableMetricsSystem) besuComponent.getMetricsSystem())
|
||||
.messagePermissioningProviders(permissioningService.getMessagePermissioningProviders())
|
||||
.privacyParameters(privacyParameters())
|
||||
.clock(Clock.systemUTC())
|
||||
@@ -2012,7 +2015,8 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
.randomPeerPriority(p2PDiscoveryOptionGroup.randomPeerPriority)
|
||||
.chainPruningConfiguration(unstableChainPruningOptions.toDomainObject())
|
||||
.cacheLastBlocks(numberOfblocksToCache)
|
||||
.genesisStateHashCacheEnabled(genesisStateHashCacheEnabled);
|
||||
.genesisStateHashCacheEnabled(genesisStateHashCacheEnabled)
|
||||
.besuComponent(besuComponent);
|
||||
}
|
||||
|
||||
private JsonRpcConfiguration createEngineJsonRpcConfiguration(
|
||||
@@ -2414,7 +2418,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
|
||||
p2pTLSConfiguration.ifPresent(runnerBuilder::p2pTLSConfiguration);
|
||||
|
||||
final ObservableMetricsSystem metricsSystem = this.metricsSystem.get();
|
||||
final Runner runner =
|
||||
runnerBuilder
|
||||
.vertx(vertx)
|
||||
@@ -2441,7 +2444,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
.pidPath(pidPath)
|
||||
.dataDir(dataDir())
|
||||
.bannedNodeIds(p2PDiscoveryOptionGroup.bannedNodeIds)
|
||||
.metricsSystem(metricsSystem)
|
||||
.metricsSystem((ObservableMetricsSystem) besuComponent.getMetricsSystem())
|
||||
.permissioningService(permissioningService)
|
||||
.metricsConfiguration(metricsConfiguration)
|
||||
.staticNodes(staticNodes)
|
||||
@@ -2608,7 +2611,7 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
* @return Instance of MetricsSystem
|
||||
*/
|
||||
public MetricsSystem getMetricsSystem() {
|
||||
return metricsSystem.get();
|
||||
return besuComponent.getMetricsSystem();
|
||||
}
|
||||
|
||||
private Set<EnodeURL> loadStaticNodes() throws IOException {
|
||||
@@ -2946,4 +2949,13 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin context.
|
||||
*
|
||||
* @return the plugin context.
|
||||
*/
|
||||
public BesuPluginContextImpl getBesuPluginContext() {
|
||||
return besuPluginContext;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,9 +42,7 @@ public class BesuCommandModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
BesuCommand provideBesuCommand(
|
||||
final BesuPluginContextImpl pluginContext,
|
||||
final @Named("besuCommandLogger") Logger commandLogger) {
|
||||
BesuCommand provideBesuCommand(final @Named("besuCommandLogger") Logger commandLogger) {
|
||||
final BesuCommand besuCommand =
|
||||
new BesuCommand(
|
||||
RlpBlockImporter::new,
|
||||
@@ -52,7 +50,7 @@ public class BesuCommandModule {
|
||||
RlpBlockExporter::new,
|
||||
new RunnerBuilder(),
|
||||
new BesuController.Builder(),
|
||||
pluginContext,
|
||||
new BesuPluginContextImpl(),
|
||||
System.getenv(),
|
||||
commandLogger);
|
||||
besuCommand.toCommandLine();
|
||||
@@ -71,4 +69,10 @@ public class BesuCommandModule {
|
||||
Logger provideBesuCommandLogger() {
|
||||
return Besu.getFirstLogger();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
BesuPluginContextImpl provideBesuPluginContextImpl(final BesuCommand provideFrom) {
|
||||
return provideFrom.getBesuPluginContext();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.hyperledger.besu.ethereum.eth.transactions.BlobCacheModule;
|
||||
import org.hyperledger.besu.ethereum.trie.diffbased.bonsai.cache.BonsaiCachedMerkleTrieLoader;
|
||||
import org.hyperledger.besu.ethereum.trie.diffbased.bonsai.cache.BonsaiCachedMerkleTrieLoaderModule;
|
||||
import org.hyperledger.besu.metrics.MetricsSystemModule;
|
||||
import org.hyperledger.besu.metrics.ObservableMetricsSystem;
|
||||
import org.hyperledger.besu.plugin.services.MetricsSystem;
|
||||
import org.hyperledger.besu.services.BesuPluginContextImpl;
|
||||
|
||||
import javax.inject.Named;
|
||||
@@ -60,7 +60,7 @@ public interface BesuComponent {
|
||||
*
|
||||
* @return ObservableMetricsSystem
|
||||
*/
|
||||
ObservableMetricsSystem getObservableMetricsSystem();
|
||||
MetricsSystem getMetricsSystem();
|
||||
|
||||
/**
|
||||
* a Logger specifically configured to provide configuration feedback to users.
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
*/
|
||||
package org.hyperledger.besu.components;
|
||||
|
||||
import org.hyperledger.besu.plugin.services.BesuConfiguration;
|
||||
import org.hyperledger.besu.services.BesuConfigurationImpl;
|
||||
import org.hyperledger.besu.services.BesuPluginContextImpl;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@@ -35,18 +33,4 @@ public class BesuPluginContextModule {
|
||||
BesuConfigurationImpl provideBesuPluginConfig() {
|
||||
return new BesuConfigurationImpl();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a BesuPluginContextImpl, used for plugin service discovery.
|
||||
*
|
||||
* @param pluginConfig the BesuConfigurationImpl
|
||||
* @return the BesuPluginContext
|
||||
*/
|
||||
@Provides
|
||||
@Singleton
|
||||
public BesuPluginContextImpl provideBesuPluginContext(final BesuConfigurationImpl pluginConfig) {
|
||||
BesuPluginContextImpl retval = new BesuPluginContextImpl();
|
||||
retval.addService(BesuConfiguration.class, pluginConfig);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -552,7 +552,7 @@ public abstract class BesuControllerBuilder implements MiningParameterOverrides
|
||||
checkNotNull(evmConfiguration, "Missing evm config");
|
||||
checkNotNull(networkingConfiguration, "Missing network configuration");
|
||||
checkNotNull(dataStorageConfiguration, "Missing data storage configuration");
|
||||
|
||||
checkNotNull(besuComponent, "Must supply a BesuComponent");
|
||||
prepForBuild();
|
||||
|
||||
final ProtocolSchedule protocolSchedule = createProtocolSchedule();
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.hyperledger.besu.cli.options.unstable.EthProtocolOptions;
|
||||
import org.hyperledger.besu.cli.options.unstable.MetricsCLIOptions;
|
||||
import org.hyperledger.besu.cli.options.unstable.NetworkingOptions;
|
||||
import org.hyperledger.besu.cli.options.unstable.SynchronizerOptions;
|
||||
import org.hyperledger.besu.components.BesuComponent;
|
||||
import org.hyperledger.besu.config.GenesisConfigOptions;
|
||||
import org.hyperledger.besu.controller.BesuController;
|
||||
import org.hyperledger.besu.controller.BesuControllerBuilder;
|
||||
@@ -69,6 +70,7 @@ import org.hyperledger.besu.ethereum.permissioning.PermissioningConfiguration;
|
||||
import org.hyperledger.besu.ethereum.storage.StorageProvider;
|
||||
import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration;
|
||||
import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive;
|
||||
import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration;
|
||||
import org.hyperledger.besu.plugin.services.PicoCLIOptions;
|
||||
import org.hyperledger.besu.plugin.services.StorageService;
|
||||
@@ -204,6 +206,9 @@ public abstract class CommandTestAbstract {
|
||||
@Mock(lenient = true)
|
||||
protected BesuController mockController;
|
||||
|
||||
@Mock(lenient = true)
|
||||
protected BesuComponent mockBesuComponent;
|
||||
|
||||
@Mock protected RlpBlockExporter rlpBlockExporter;
|
||||
@Mock protected JsonBlockImporter jsonBlockImporter;
|
||||
@Mock protected RlpBlockImporter rlpBlockImporter;
|
||||
@@ -344,6 +349,7 @@ public abstract class CommandTestAbstract {
|
||||
when(mockRunnerBuilder.allowedSubnets(any())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.poaDiscoveryRetryBootnodes(anyBoolean())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.build()).thenReturn(mockRunner);
|
||||
when(mockBesuComponent.getMetricsSystem()).thenReturn(new NoOpMetricsSystem());
|
||||
|
||||
final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithmFactory.getInstance();
|
||||
|
||||
@@ -451,6 +457,7 @@ public abstract class CommandTestAbstract {
|
||||
besuCommand.parameterExceptionHandler(),
|
||||
besuCommand.executionExceptionHandler(),
|
||||
in,
|
||||
mockBesuComponent,
|
||||
args);
|
||||
return besuCommand;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ import static org.mockito.Mockito.mock;
|
||||
|
||||
import org.hyperledger.besu.cli.BesuCommand;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration;
|
||||
import org.hyperledger.besu.plugin.services.BesuConfiguration;
|
||||
import org.hyperledger.besu.services.BesuConfigurationImpl;
|
||||
import org.hyperledger.besu.services.BesuPluginContextImpl;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
@@ -47,4 +50,17 @@ public class MockBesuCommandModule {
|
||||
Logger provideBesuCommandLogger() {
|
||||
return LoggerFactory.getLogger(MockBesuCommandModule.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a BesuPluginContextImpl, used for plugin service discovery.
|
||||
*
|
||||
* @return the BesuPluginContext
|
||||
*/
|
||||
@Provides
|
||||
@Singleton
|
||||
public BesuPluginContextImpl provideBesuPluginContext() {
|
||||
BesuPluginContextImpl retval = new BesuPluginContextImpl();
|
||||
retval.addService(BesuConfiguration.class, new BesuConfigurationImpl());
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package org.hyperledger.besu.ethereum.trie.diffbased.bonsai.cache;
|
||||
|
||||
import org.hyperledger.besu.metrics.ObservableMetricsSystem;
|
||||
import org.hyperledger.besu.plugin.services.MetricsSystem;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
@@ -24,7 +25,7 @@ public class BonsaiCachedMerkleTrieLoaderModule {
|
||||
|
||||
@Provides
|
||||
BonsaiCachedMerkleTrieLoader provideCachedMerkleTrieLoaderModule(
|
||||
final ObservableMetricsSystem metricsSystem) {
|
||||
return new BonsaiCachedMerkleTrieLoader(metricsSystem);
|
||||
final MetricsSystem metricsSystem) {
|
||||
return new BonsaiCachedMerkleTrieLoader((ObservableMetricsSystem) metricsSystem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,10 +36,4 @@ public class MetricsSystemModule {
|
||||
MetricsSystem provideMetricsSystem(final MetricsConfiguration metricsConfig) {
|
||||
return MetricsSystemFactory.create(metricsConfig);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ObservableMetricsSystem provideObservableMetricsSystem(final MetricsConfiguration metricsConfig) {
|
||||
return MetricsSystemFactory.create(metricsConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.DoubleSupplier;
|
||||
import java.util.stream.Stream;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
@@ -67,6 +68,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/** Metrics system relying on the native OpenTelemetry format. */
|
||||
@Singleton
|
||||
public class OpenTelemetrySystem implements ObservableMetricsSystem {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(OpenTelemetrySystem.class);
|
||||
|
||||
Reference in New Issue
Block a user