You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by dl...@apache.org on 2023/02/02 12:51:17 UTC
[accumulo] branch 1.10 updated: Add comments found in ThriftClientHandler as to why client will wait for writes (#3181)
This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch 1.10
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/1.10 by this push:
new cd81bc7922 Add comments found in ThriftClientHandler as to why client will wait for writes (#3181)
cd81bc7922 is described below
commit cd81bc79222b821924f8a3f8adee4aaba1091c4f
Author: Dave Marion <dl...@apache.org>
AuthorDate: Thu Feb 2 07:51:12 2023 -0500
Add comments found in ThriftClientHandler as to why client will wait for writes (#3181)
Closes #3174
---
.../org/apache/accumulo/core/client/impl/ThriftScanner.java | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
index 7c3b11fff0..8f1b11d664 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
@@ -75,6 +75,17 @@ import org.slf4j.LoggerFactory;
public class ThriftScanner {
private static final Logger log = LoggerFactory.getLogger(ThriftScanner.class);
+ // This set is initially empty when the client starts. The first time this
+ // client contacts a server it will wait for any writes that are in progress.
+ // This is to account for the case where a client may have sent writes
+ // to accumulo and dies while waiting for a confirmation from
+ // accumulo. The client process restarts and tries to read
+ // data from accumulo making the assumption that it will get
+ // any writes previously made, however if the server side thread
+ // processing the write from the dead client is still in progress,
+ // the restarted client may not see the write unless we wait here.
+ // this behavior is very important when the client is reading the
+ // metadata
public static final Map<TabletType,Set<String>> serversWaitedForWrites =
new EnumMap<>(TabletType.class);