Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: replacing minGenNonAncient data flow with NonAncientEventWindow #10597

Merged
merged 16 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
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
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import com.swirlds.platform.consensus.ConsensusSnapshot;
import com.swirlds.platform.consensus.GraphGenerations;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.event.GossipEvent;
import com.swirlds.platform.internal.ConsensusRound;
import com.swirlds.platform.internal.EventImpl;
Expand Down Expand Up @@ -82,7 +83,12 @@ private static Round buildMockRound(final List<List<Long>> eventContents, final
Mockito.when(mockSnapshot.round()).thenReturn(roundReceived);

return new ConsensusRound(
mock(AddressBook.class), mockEvents, mock(EventImpl.class), mock(GraphGenerations.class), mockSnapshot);
mock(AddressBook.class),
mockEvents,
mock(EventImpl.class),
mock(GraphGenerations.class),
mock(NonAncientEventWindow.class),
mockSnapshot);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.swirlds.platform.consensus.ConsensusUtils;
import com.swirlds.platform.consensus.CountingVote;
import com.swirlds.platform.consensus.InitJudges;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.consensus.RoundElections;
import com.swirlds.platform.consensus.SequentialRingBuffer;
import com.swirlds.platform.consensus.ThreadSafeConsensusInfo;
Expand Down Expand Up @@ -693,6 +694,8 @@
consensusEvents,
recentEvents.get(recentEvents.size() - 1),
new Generations(this),
NonAncientEventWindow.createUsingRoundsNonAncient(
decidedRoundNumber, getMinGenerationNonAncient(), config.roundsNonAncient()),

Check warning on line 698 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/ConsensusImpl.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/ConsensusImpl.java#L697-L698

Added lines #L697 - L698 were not covered by tests
new ConsensusSnapshot(
decidedRoundNumber,
ConsensusUtils.getHashes(judges),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
import com.swirlds.platform.components.transaction.system.PreconsensusSystemTransactionManager;
import com.swirlds.platform.config.ThreadConfig;
import com.swirlds.platform.consensus.ConsensusConfig;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.crypto.CryptoStatic;
import com.swirlds.platform.crypto.KeysAndCerts;
import com.swirlds.platform.crypto.PlatformSigner;
Expand Down Expand Up @@ -908,7 +909,13 @@
if (eventConfig.useLegacyIntake()) {
eventLinker.loadFromSignedState(initialState);
} else {
platformWiring.updateMinimumGenerationNonAncient(initialMinimumGenerationNonAncient);
platformWiring.updateNonAncientEventWindow(NonAncientEventWindow.createUsingRoundsNonAncient(
initialState.getRound(),

Check warning on line 913 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L912-L913

Added lines #L912 - L913 were not covered by tests
initialMinimumGenerationNonAncient,
platformContext
.getConfiguration()
.getConfigData(ConsensusConfig.class)
.roundsNonAncient()));

Check warning on line 918 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L916-L918

Added lines #L916 - L918 were not covered by tests
}

// We don't want to invoke these callbacks until after we are starting up.
Expand Down Expand Up @@ -1059,8 +1066,13 @@
}

try {
eventCreator.setMinimumGenerationNonAncient(
signedState.getState().getPlatformState().getPlatformData().getMinimumGenerationNonAncient());
eventCreator.setNonAncientEventWindow(NonAncientEventWindow.createUsingRoundsNonAncient(
signedState.getRound(),
signedState.getMinRoundGeneration(),

Check warning on line 1071 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L1069-L1071

Added lines #L1069 - L1071 were not covered by tests
platformContext
.getConfiguration()
.getConfigData(ConsensusConfig.class)
.roundsNonAncient()));

Check warning on line 1075 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L1073-L1075

Added lines #L1073 - L1075 were not covered by tests

// newer states will not have events, so we need to check for null
if (signedState.getState().getPlatformState().getPlatformData().getEvents() == null) {
Expand Down Expand Up @@ -1197,7 +1209,13 @@
.inject(new AddressBookUpdate(
signedState.getState().getPlatformState().getPreviousAddressBook(),
signedState.getState().getPlatformState().getAddressBook()));
platformWiring.updateMinimumGenerationNonAncient(signedState.getMinRoundGeneration());
platformWiring.updateNonAncientEventWindow(NonAncientEventWindow.createUsingRoundsNonAncient(
signedState.getRound(),
signedState.getMinRoundGeneration(),

Check warning on line 1214 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L1212-L1214

Added lines #L1212 - L1214 were not covered by tests
platformContext
.getConfiguration()
.getConfigData(ConsensusConfig.class)
.roundsNonAncient()));

Check warning on line 1218 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/SwirldsPlatform.java#L1216-L1218

Added lines #L1216 - L1218 were not covered by tests
}
} finally {
intakeQueue.resume();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import com.swirlds.common.platform.NodeId;
import com.swirlds.common.threading.manager.ThreadManager;
import com.swirlds.platform.Consensus;
import com.swirlds.platform.consensus.ConsensusConfig;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.event.GossipEvent;
import com.swirlds.platform.event.linking.EventLinker;
import com.swirlds.platform.event.validation.StaticValidators;
Expand Down Expand Up @@ -79,6 +81,7 @@

private final EventIntakeMetrics metrics;
private final Time time;
private final Long roundsNonAncient;

/**
* Measures the time spent in each phase of event intake
Expand Down Expand Up @@ -137,6 +140,10 @@
this.intakeEventCounter = Objects.requireNonNull(intakeEventCounter);

final EventConfig eventConfig = platformContext.getConfiguration().getConfigData(EventConfig.class);
this.roundsNonAncient = (long) platformContext
.getConfiguration()
.getConfigData(ConsensusConfig.class)
.roundsNonAncient();

Check warning on line 146 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/EventIntake.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/EventIntake.java#L143-L146

Added lines #L143 - L146 were not covered by tests

final BlockingQueue<Runnable> prehandlePoolQueue = new LinkedBlockingQueue<>();
prehandlePool = new ThreadPoolExecutor(
Expand Down Expand Up @@ -214,7 +221,10 @@
phaseTimer.activatePhase(EventIntakePhase.HANDLING_STALE_EVENTS);
handleStale(minGenNonAncientBeforeAdding);
if (latestEventTipsetTracker != null) {
latestEventTipsetTracker.setMinimumGenerationNonAncient(minimumGenerationNonAncient);
// FUTURE WORK: When this class is refactored, it should not be constructing the
// NonAncientEventWindow, but receiving it through the PlatformWiring instead.
latestEventTipsetTracker.setNonAncientEventWindow(NonAncientEventWindow.createUsingRoundsNonAncient(
consensus().getLastRoundDecided(), minimumGenerationNonAncient, roundsNonAncient));

Check warning on line 227 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/EventIntake.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/EventIntake.java#L226-L227

Added lines #L226 - L227 were not covered by tests
}
}
} finally {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import com.swirlds.base.time.Time;
import com.swirlds.common.context.PlatformContext;
import com.swirlds.platform.Consensus;
import com.swirlds.platform.consensus.ConsensusConfig;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.eventhandling.ConsensusRoundHandler;
import com.swirlds.platform.gossip.IntakeEventCounter;
import com.swirlds.platform.gossip.shadowgraph.LatestEventTipsetTracker;
Expand Down Expand Up @@ -61,6 +63,7 @@

private final EventIntakeMetrics metrics;
private final Time time;
private final Long roundsNonAncient;

/**
* Tracks the number of events from each peer have been received, but aren't yet through the intake pipeline
Expand Down Expand Up @@ -104,6 +107,10 @@

this.paused = false;
metrics = new EventIntakeMetrics(platformContext, () -> -1);
this.roundsNonAncient = (long) platformContext
.getConfiguration()
.getConfigData(ConsensusConfig.class)
.roundsNonAncient();

Check warning on line 113 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java#L110-L113

Added lines #L110 - L113 were not covered by tests
}

/**
Expand Down Expand Up @@ -150,7 +157,12 @@
// with no consensus events, so we check the diff in generations to look for stale events
handleStale(minimumGenerationNonAncientBeforeAdding);
if (latestEventTipsetTracker != null) {
latestEventTipsetTracker.setMinimumGenerationNonAncient(minimumGenerationNonAncient);
// FUTURE WORK: When this class is refactored, it should not be constructing the
// NonAncientEventWindow, but receiving it through the PlatformWiring instead.
latestEventTipsetTracker.setNonAncientEventWindow(NonAncientEventWindow.createUsingRoundsNonAncient(
consensusSupplier.get().getLastRoundDecided(),

Check warning on line 163 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java#L162-L163

Added lines #L162 - L163 were not covered by tests
minimumGenerationNonAncient,
roundsNonAncient));

Check warning on line 165 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/components/LinkedEventIntake.java#L165

Added line #L165 was not covered by tests
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/*
* Copyright (C) 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.swirlds.platform.consensus;

import com.swirlds.base.utility.ToStringBuilder;
import com.swirlds.platform.event.GossipEvent;
import com.swirlds.platform.system.events.EventConstants;
import com.swirlds.platform.system.events.EventDescriptor;
import edu.umd.cs.findbugs.annotations.NonNull;

/**
* Determines the non-ancient lower bound (inclusive) on events and communicates the window of rounds between the
* pendingConsensusRound and the minimumRoundNonAncient (inclusive).
*/
public class NonAncientEventWindow {

/**
* The initial NonAncientEventWindow. This constant is used to initialize NonAncientEventWindow variables before
* receiving an updated value.
*/
public static NonAncientEventWindow INITIAL_EVENT_WINDOW = new NonAncientEventWindow(
ConsensusConstants.ROUND_FIRST, ConsensusConstants.ROUND_FIRST, EventConstants.FIRST_GENERATION);

private final long latestConsensusRound;
private final long minRoundNonAncient;
private final long minGenNonAncient;

/**
* Create a new NonAncientEventWindow with the given bounds. The latestConsensusRound must be greater than or equal
* to the first round of consensus. If the minimum round non-ancient is set to a number lower than the first round
* of consensus, the first round of consensus is used instead. The minGenNonAncient value must be greater than or
* equal to the first generation for events.
*
* @param latestConsensusRound the latest round that has come to consensus
* @param minRoundNonAncient the minimum round that is non-ancient
* @param minGenNonAncient the minimum generation that is non-ancient
* @throws IllegalArgumentException if the latestConsensusRound is less than the first round of consensus or if the
* minGenNonAncient value is less than the first generation for events.
*/
public NonAncientEventWindow(long latestConsensusRound, long minRoundNonAncient, long minGenNonAncient) {
edward-swirldslabs marked this conversation as resolved.
Show resolved Hide resolved
if (latestConsensusRound < ConsensusConstants.ROUND_FIRST) {
throw new IllegalArgumentException(

Check warning on line 56 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java#L56

Added line #L56 was not covered by tests
"The latest consensus round cannot be less than the first round of consensus.");
}
if (minGenNonAncient < EventConstants.FIRST_GENERATION) {
throw new IllegalArgumentException(

Check warning on line 60 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java#L60

Added line #L60 was not covered by tests
"the minimum generation non-ancient cannot be lower than the first generation for events.");
}
this.latestConsensusRound = latestConsensusRound;
this.minRoundNonAncient = Math.max(minRoundNonAncient, ConsensusConstants.ROUND_FIRST);
this.minGenNonAncient = minGenNonAncient;
}

/**
* @return the pending round coming to consensus, i.e. 1 + the latestConsensusRound
*/
public long pendingConsensusRound() {
return latestConsensusRound + 1;

Check warning on line 72 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java#L72

Added line #L72 was not covered by tests
}
edward-swirldslabs marked this conversation as resolved.
Show resolved Hide resolved

/**
* @return the lower bound of the non-ancient event window
*/
public long getLowerBound() {
// FUTURE WORK: return minRoundNonAncient once we switch from minGenNonAncient.
return minGenNonAncient;
}

/**
* Determines if the given event is ancient.
*
* @param event the event to check for being ancient.
* @return true if the event is ancient, false otherwise.
*/
public boolean isAncient(@NonNull final GossipEvent event) {
// FUTURE WORK: use generation until we throw the switch to using round
return event.getGeneration() < minGenNonAncient;
}

/**
* Determines if the given event is ancient.
*
* @param event the event to check for being ancient.
* @return true if the event is ancient, false otherwise.
*/
public boolean isAncient(EventDescriptor event) {
edward-swirldslabs marked this conversation as resolved.
Show resolved Hide resolved
// FUTURE WORK: use generation until we throw the switch to using round
return event.getGeneration() < minGenNonAncient;
}

/**
* Determines if the given long value is ancient.
*
* @param testValue the value to check for being ancient.
* @return true if the value is ancient, false otherwise.
*/
public boolean isAncient(long testValue) {
edward-swirldslabs marked this conversation as resolved.
Show resolved Hide resolved
// FUTURE WORK: use generation until we throw the switch to using round
return testValue < minGenNonAncient;
}

/**
* Create a NonAncientEventWindow by calculating the minRoundNonAncient value from the latestConsensusRound and
* roundsNonAncient.
*
* @param latestConsensusRound the latest round that has come to consensus
* @param minGenNonAncient the minimum generation that is non-ancient
* @param roundsNonAncient the number of rounds that are non-ancient
* @return the new NonAncientEventWindow
*/
public static NonAncientEventWindow createUsingRoundsNonAncient(
edward-swirldslabs marked this conversation as resolved.
Show resolved Hide resolved
final long latestConsensusRound, final long minGenNonAncient, final long roundsNonAncient) {
return new NonAncientEventWindow(

Check warning on line 127 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java#L127

Added line #L127 was not covered by tests
latestConsensusRound, latestConsensusRound - roundsNonAncient + 1, minGenNonAncient);
}

@Override
public String toString() {
return new ToStringBuilder(this)
.append("latestConsensusRound", latestConsensusRound)
.append("minRoundNonAncient", minRoundNonAncient)
.append("minGenNonAncient", minGenNonAncient)
.toString();

Check warning on line 137 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/consensus/NonAncientEventWindow.java#L133-L137

Added lines #L133 - L137 were not covered by tests
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.swirlds.common.threading.framework.config.QueueThreadMetricsConfiguration;
import com.swirlds.common.threading.futures.StandardFuture;
import com.swirlds.common.threading.manager.ThreadManager;
import com.swirlds.platform.consensus.NonAncientEventWindow;
import com.swirlds.platform.internal.EventImpl;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Objects;
Expand Down Expand Up @@ -60,9 +61,9 @@
private final BlockingQueueInserter<EventImpl> eventInserter;

/**
* The object used to enqueue updates to the minimum generation non-ancient onto the work queue.
* The object used to enqueue updates to the non-ancient event window onto the work queue.
*/
private final BlockingQueueInserter<Long> minimumGenerationNonAncientInserter;
private final BlockingQueueInserter<NonAncientEventWindow> nonAncientEventWindowInserter;

/**
* Used to signal a desired pause.
Expand Down Expand Up @@ -102,7 +103,7 @@
.setCapacity(eventCreationConfig.creationQueueSize())
.setMaxBufferSize(eventCreationConfig.creationQueueBufferSize())
.addHandler(EventImpl.class, this::handleEvent)
.addHandler(Long.class, this::handleMinimumGenerationNonAncient)
.addHandler(NonAncientEventWindow.class, this::handleNonAncientEventWindow)

Check warning on line 106 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java#L106

Added line #L106 was not covered by tests
.addHandler(PauseRequest.class, this::handlePauseStatusChange)
.setIdleCallback(eventCreator::maybeCreateEvent)
.setBatchHandledCallback(eventCreator::maybeCreateEvent)
Expand All @@ -113,7 +114,7 @@
.build();

eventInserter = workQueue.getInserter(EventImpl.class);
minimumGenerationNonAncientInserter = workQueue.getInserter(Long.class);
nonAncientEventWindowInserter = workQueue.getInserter(NonAncientEventWindow.class);

Check warning on line 117 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java#L117

Added line #L117 was not covered by tests
setPauseStatusInserter = workQueue.getInserter(PauseRequest.class);
}

Expand All @@ -128,12 +129,13 @@
}

/**
* Update the minimum generation non-ancient
* Update the non-ancient event window
*
* @param minimumGenerationNonAncient the new minimum generation non-ancient
* @param nonAncientEventWindow the new minimum generation non-ancient
*/
public void setMinimumGenerationNonAncient(final long minimumGenerationNonAncient) throws InterruptedException {
minimumGenerationNonAncientInserter.put(minimumGenerationNonAncient);
public void setNonAncientEventWindow(@NonNull final NonAncientEventWindow nonAncientEventWindow)
throws InterruptedException {
nonAncientEventWindowInserter.put(nonAncientEventWindow);

Check warning on line 138 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java#L138

Added line #L138 was not covered by tests
}

/**
Expand All @@ -146,12 +148,12 @@
}

/**
* Pass a new minimum generation non-ancient into the event creator.
* Pass a new non-ancient event window into the event creator.
*
* @param minimumGenerationNonAncient the new minimum generation non-ancient
* @param nonAncientEventWindow the new non-ancient event window
*/
private void handleMinimumGenerationNonAncient(final long minimumGenerationNonAncient) {
eventCreator.setMinimumGenerationNonAncient(minimumGenerationNonAncient);
private void handleNonAncientEventWindow(@NonNull final NonAncientEventWindow nonAncientEventWindow) {
eventCreator.setNonAncientEventWindow(nonAncientEventWindow);

Check warning on line 156 in platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java

View check run for this annotation

Codecov / codecov/patch

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/AsyncEventCreationManager.java#L156

Added line #L156 was not covered by tests
}

/**
Expand Down
Loading
Loading