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
ISPN-7367 CommandAckCollector Improvements #4774
Conversation
PerfAck: library + dist + writes + no-tx |
run performance tests please |
Performance tests run successfully. Link to the results here. |
@pruivo Results are in but they seem worse for 100 threads? |
run performance tests please |
Performance tests didn't finish successfully. @Holmistr, can you review it? |
run performance tests please |
Performance tests run successfully. Link to the results here. |
personal note: results above used commit f5b4b6b |
Whoa!! Huge increase in perf! |
TX writes 100 threads still lower, more work to come? |
@galderz . short answer, yes. |
@pruivo So, do you want to tidy up and include in Beta2? Or wait? |
@galderz you can release Beta2 without it :) I want to make sure the results are real or not, and I need Dan to review it as well. |
Fair point |
Removed milestone |
run performance tests please |
Performance tests run successfully. Link to the results here. |
run performance tests please |
Performance tests run successfully. Link to the results here. |
@danberindei updated! |
@danberindei updated again :) |
run performance tests please |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor cosmetic issues.
@@ -354,7 +362,7 @@ private Object primaryOwnerWrite(InvocationContext context, DataWriteCommand com | |||
} | |||
|
|||
private void logCommandSequence(CommandInvocationId id, int segment, long sequence) { | |||
log.tracef("Command %s got sequence %s for segment %s", id, sequence, segment); | |||
log.tracef("Command %s got sequence %s for segment %s", id, sequence, segment); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd move the if (trace)
check in here.
command.getTopologyId()); | ||
.createMultiKeyCollector(command.getCommandInvocationId().getId(), filter.primaries.keySet(), | ||
filter.backups, | ||
command.getTopologyId(), timeoutNanos); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Join these lines?
|
||
private void traceBackupAck(int topologyId, Address from) { | ||
log.tracef("[Collector#%s] Backup ACK. Address=%s, TopologyId=%s (expected=%s)", | ||
id, from, topologyId, this.topologyId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here too, if (trace)
could be in the method.
@Inject | ||
public void inject( | ||
@ComponentName(value = KnownComponentNames.TIMEOUT_SCHEDULE_EXECUTOR) ScheduledExecutorService timeoutExecutor, | ||
Configuration configuration) { | ||
@ComponentName(value = KnownComponentNames.TIMEOUT_SCHEDULE_EXECUTOR) ScheduledExecutorService timeoutExecutor) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't need value =
@@ -1473,7 +1473,7 @@ TimeoutException timeoutWaitingForView(int expectedViewId, int currentViewId, | |||
//removed unused message (id=426) | |||
|
|||
@Message(value = "Timeout after %s waiting for acks. Id=%s", id = 427) | |||
TimeoutException timeoutWaitingForAcks(String timeout, CommandInvocationId id); | |||
TimeoutException timeoutWaitingForAcks(String timeout, Long id); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The id could be a primitive long
.
Performance tests run successfully. Link to the results here. |
@danberindei updated! |
CI build hanged in |
The AffinityTest failure seems specific to this branch: |
finally understood the issue. The CommandAckCollector cannot be a global component, it must be a per-cache component since it needs the cache topology updates to keeps its members updated. |
run performance tests please |
Performance tests run successfully. Link to the results here. |
@@ -91,12 +91,11 @@ | |||
private static final Log log = LogFactory.getLog(TriangleDistributionInterceptor.class); | |||
private static final boolean trace = log.isTraceEnabled(); | |||
private CommandAckCollector commandAckCollector; | |||
private final InvocationExceptionFunction onPutMapNoLocalEntriesException = this::onPutMapNoLocalEntriesException; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's better to group the lambdas at the end then mixing them with the injected components.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no idea why the reformat put the field there... but it does it consistently
updated |
Integrated, thanks Pedro! |
https://issues.jboss.org/browse/ISPN-7367