[ 
https://issues.apache.org/jira/browse/RATIS-748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16970024#comment-16970024
 ] 

Hadoop QA commented on RATIS-748:
---------------------------------

| (x) *{color:red}-1 overall{color}* |
\\
\\
|| Vote || Subsystem || Runtime || Comment ||
| {color:blue}0{color} | {color:blue} reexec {color} | {color:blue}  0m 
57s{color} | {color:blue} Docker mode activated. {color} |
|| || || || {color:brown} Prechecks {color} ||
| {color:blue}0{color} | {color:blue} findbugs {color} | {color:blue}  0m  
0s{color} | {color:blue} Findbugs executables are not available. {color} |
| {color:green}+1{color} | {color:green} @author {color} | {color:green}  0m  
0s{color} | {color:green} The patch does not contain any @author tags. {color} |
| {color:red}-1{color} | {color:red} test4tests {color} | {color:red}  0m  
0s{color} | {color:red} The patch doesn't appear to include any new or modified 
tests. Please justify why no new tests are needed for this patch. Also please 
list what manual steps were performed to verify this patch. {color} |
|| || || || {color:brown} master Compile Tests {color} ||
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}  3m 
30s{color} | {color:green} master passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  1m  
8s{color} | {color:green} master passed {color} |
| {color:green}+1{color} | {color:green} checkstyle {color} | {color:green}  0m 
25s{color} | {color:green} master passed {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green}  0m 
54s{color} | {color:green} master passed {color} |
|| || || || {color:brown} Patch Compile Tests {color} ||
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}  1m 
15s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  1m  
3s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} javac {color} | {color:green}  1m  
3s{color} | {color:green} the patch passed {color} |
| {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange}  
0m 13s{color} | {color:orange} root: The patch generated 2 new + 16 unchanged - 
2 fixed = 18 total (was 18) {color} |
| {color:green}+1{color} | {color:green} whitespace {color} | {color:green}  0m 
 0s{color} | {color:green} The patch has no whitespace issues. {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green}  0m 
43s{color} | {color:green} the patch passed {color} |
|| || || || {color:brown} Other Tests {color} ||
| {color:red}-1{color} | {color:red} unit {color} | {color:red} 34m 10s{color} 
| {color:red} root in the patch failed. {color} |
| {color:green}+1{color} | {color:green} asflicense {color} | {color:green}  0m 
21s{color} | {color:green} The patch does not generate ASF License warnings. 
{color} |
| {color:black}{color} | {color:black} {color} | {color:black} 44m 58s{color} | 
{color:black} {color} |
\\
\\
|| Reason || Tests ||
| Failed junit tests | ratis.logservice.TestLogServiceWithNetty |
|   | ratis.logservice.server.TestMetaServer |
|   | ratis.examples.filestore.TestFileStoreWithGrpc |
|   | ratis.examples.filestore.TestFileStoreWithNetty |
|   | ratis.server.simulation.TestLeaderElectionWithSimulatedRpc |
|   | ratis.server.simulation.TestRaftWithSimulatedRpc |
|   | ratis.grpc.TestStateMachineShutdownWithGrpc |
|   | ratis.grpc.TestRaftSnapshotWithGrpc |
|   | ratis.server.raftlog.TestRaftLogMetrics |
|   | ratis.grpc.TestRaftAsyncWithGrpc |
|   | ratis.grpc.TestRaftStateMachineExceptionWithGrpc |
|   | ratis.server.simulation.TestRaftStateMachineExceptionWithSimulatedRpc |
\\
\\
|| Subsystem || Report/Notes ||
| Docker | Client=19.03.4 Server=19.03.4 Image:yetus/ratis:date2019-11-08 |
| JIRA Issue | RATIS-748 |
| JIRA Patch URL | 
https://issues.apache.org/jira/secure/attachment/12985330/RATIS-748.001.patch |
| Optional Tests |  dupname  asflicense  javac  javadoc  unit  findbugs  
checkstyle  compile  |
| uname | Linux 1c427bd2eaa2 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 
05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
| Build tool | maven |
| Personality | 
/home/jenkins/jenkins-slave/workspace/PreCommit-RATIS-Build/yetus-personality.sh
 |
| git revision | master / 005aa6a |
| maven | version: Apache Maven 3.6.2 
(40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T15:06:16Z) |
| Default Java | 1.8.0_222 |
| checkstyle | 
https://builds.apache.org/job/PreCommit-RATIS-Build/1139/artifact/out/diff-checkstyle-root.txt
 |
| unit | 
https://builds.apache.org/job/PreCommit-RATIS-Build/1139/artifact/out/patch-unit-root.txt
 |
|  Test Results | 
https://builds.apache.org/job/PreCommit-RATIS-Build/1139/testReport/ |
| Max. process+thread count | 1236 (vs. ulimit of 5000) |
| modules | C: ratis-server U: ratis-server |
| Console output | 
https://builds.apache.org/job/PreCommit-RATIS-Build/1139/console |
| Powered by | Apache Yetus 0.8.0   http://yetus.apache.org |


This message was automatically generated.



> Follower might not update its commit index
> ------------------------------------------
>
>                 Key: RATIS-748
>                 URL: https://issues.apache.org/jira/browse/RATIS-748
>             Project: Ratis
>          Issue Type: Bug
>            Reporter: Lokesh Jain
>            Priority: Critical
>         Attachments: RATIS-748.001.patch
>
>
> While updating the commit index, the follower checks whether majority index 
> is present in the raft log. There can be cases where leader is ahead of the 
> follower and follower does not have the entry corresponding to the 
> majorityIndex. In such cases the follower commit index is not updated. Below 
> is the corresponding code snippet.
> {code:java}
> public boolean updateLastCommitted(long majorityIndex, long currentTerm) {
>   try(AutoCloseableLock writeLock = writeLock()) {
>     final long oldCommittedIndex = getLastCommittedIndex();
>     if (oldCommittedIndex < majorityIndex) {
>       // Only update last committed index for current term. See §5.4.2 in
>       // paper for details.
>       final TermIndex entry = getTermIndex(majorityIndex);
>       if (entry != null && entry.getTerm() == currentTerm) {
>         final long newCommitIndex = Math.min(majorityIndex, getFlushIndex());
>         if (newCommitIndex > oldCommittedIndex) {
>           commitIndex.updateIncreasingly(newCommitIndex, traceIndexChange);
>         }
>         return true;
>       }
>     }
>   }
>   return false;
> }{code}
> This function RaftLog#updateLastCommitted is also used by follower to update 
> its commit index. The follower does not require the check of entry.getTerm() 
> == currentTerm and its commitIndex can be updated to min(majorityIndex, 
> getFlushIndex()). It has already verified the entries in the 
> appendEntriesAsync call.
> This can lead to the follower commit being updated in bursts and can lead to 
> failure of watch requests.
> cc [~shashikant] [~szetszwo]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to