Search in sources :

Example 1 with DeletableSigner

use of tech.pegasys.teku.core.signatures.DeletableSigner in project teku by ConsenSys.

the class ValidatorLoader method addValidator.

private void addValidator(final Signer signer, final BLSPublicKey publicKey) {
    ownedValidators.addValidator(new Validator(publicKey, new DeletableSigner(signer), graffitiProvider, false));
    LOG.info("Added validator: {}", publicKey.toString());
}
Also used : DeletableSigner(tech.pegasys.teku.core.signatures.DeletableSigner) Validator(tech.pegasys.teku.validator.client.Validator)

Example 2 with DeletableSigner

use of tech.pegasys.teku.core.signatures.DeletableSigner in project teku by ConsenSys.

the class MultithreadedValidatorLoader method loadValidators.

public static void loadValidators(final OwnedValidators ownedValidators, final Map<BLSPublicKey, ValidatorProvider> providers, final GraffitiProvider graffitiProvider) {
    final int totalValidatorCount = providers.size();
    STATUS_LOG.loadingValidators(totalValidatorCount);
    final ExecutorService executorService = Executors.newFixedThreadPool(Math.min(4, Runtime.getRuntime().availableProcessors()));
    try {
        final AtomicInteger numberOfLoadedKeys = new AtomicInteger(0);
        final List<Future<Validator>> futures = providers.values().stream().map(provider -> executorService.submit(() -> {
            final Validator validator = new Validator(provider.getPublicKey(), new DeletableSigner(provider.createSigner()), graffitiProvider, provider.isReadOnly());
            int loadedValidatorCount = numberOfLoadedKeys.incrementAndGet();
            if (loadedValidatorCount % 10 == 0) {
                STATUS_LOG.atLoadedValidatorNumber(loadedValidatorCount, totalValidatorCount);
            }
            return validator;
        })).collect(toList());
        final List<Validator> addedValidators = new ArrayList<>();
        for (Future<Validator> future : futures) {
            final Validator validator = future.get();
            addedValidators.add(validator);
        }
        // Only start adding validators once we've successfully loaded all keys
        addedValidators.forEach(ownedValidators::addValidator);
        STATUS_LOG.validatorsInitialised(addedValidators.stream().map(validator -> validator.getPublicKey().toAbbreviatedString()).collect(toList()));
    } catch (InterruptedException e) {
        throw new RuntimeException("Interrupted while attempting to load validator key files", e);
    } catch (ExecutionException e) {
        if (e.getCause() instanceof RuntimeException) {
            throw (RuntimeException) e.getCause();
        }
        throw new RuntimeException("Unable to load validator key files", e);
    } finally {
        executorService.shutdownNow();
    }
}
Also used : GraffitiProvider(tech.pegasys.teku.validator.api.GraffitiProvider) BLSPublicKey(tech.pegasys.teku.bls.BLSPublicKey) DeletableSigner(tech.pegasys.teku.core.signatures.DeletableSigner) Executors(java.util.concurrent.Executors) ValidatorProvider(tech.pegasys.teku.validator.client.loader.ValidatorSource.ValidatorProvider) ArrayList(java.util.ArrayList) ExecutionException(java.util.concurrent.ExecutionException) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Future(java.util.concurrent.Future) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Map(java.util.Map) STATUS_LOG(tech.pegasys.teku.infrastructure.logging.StatusLogger.STATUS_LOG) ExecutorService(java.util.concurrent.ExecutorService) Validator(tech.pegasys.teku.validator.client.Validator) DeletableSigner(tech.pegasys.teku.core.signatures.DeletableSigner) ArrayList(java.util.ArrayList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ExecutorService(java.util.concurrent.ExecutorService) Future(java.util.concurrent.Future) ExecutionException(java.util.concurrent.ExecutionException) Validator(tech.pegasys.teku.validator.client.Validator)

Aggregations

DeletableSigner (tech.pegasys.teku.core.signatures.DeletableSigner)2 Validator (tech.pegasys.teku.validator.client.Validator)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 ExecutionException (java.util.concurrent.ExecutionException)1 ExecutorService (java.util.concurrent.ExecutorService)1 Executors (java.util.concurrent.Executors)1 Future (java.util.concurrent.Future)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 Collectors.toList (java.util.stream.Collectors.toList)1 BLSPublicKey (tech.pegasys.teku.bls.BLSPublicKey)1 STATUS_LOG (tech.pegasys.teku.infrastructure.logging.StatusLogger.STATUS_LOG)1 GraffitiProvider (tech.pegasys.teku.validator.api.GraffitiProvider)1 ValidatorProvider (tech.pegasys.teku.validator.client.loader.ValidatorSource.ValidatorProvider)1