Advertisement
Guest User

Untitled

a guest
Jun 20th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.java
  2. index b4825f0..9ec6f58 100644
  3. --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.java
  4. +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.java
  5. @@ -52,6 +52,7 @@ public class ExplicitColumnTracker implements ColumnTracker {
  6.  
  7. private final int maxVersions;
  8. private final int minVersions;
  9. + private int slack;
  10.  
  11. /**
  12. * Contains the list of columns that the ExplicitColumnTracker is tracking. Each ColumnCount
  13. @@ -74,9 +75,10 @@ public class ExplicitColumnTracker implements ColumnTracker {
  14. * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL
  15. */
  16. public ExplicitColumnTracker(NavigableSet<byte[]> columns, int minVersions, int maxVersions,
  17. - long oldestUnexpiredTS) {
  18. + int slack, long oldestUnexpiredTS) {
  19. this.maxVersions = maxVersions;
  20. this.minVersions = minVersions;
  21. + this.slack = slack;
  22. this.oldestStamp = oldestUnexpiredTS;
  23. this.columns = new ColumnCount[columns.size()];
  24. int i = 0;
  25. @@ -85,6 +87,12 @@ public class ExplicitColumnTracker implements ColumnTracker {
  26. }
  27. reset();
  28. }
  29. + public void retract() {
  30. + if (slack > 0) {
  31. + slack--;
  32. + this.column.decrement();
  33. + }
  34. + }
  35.  
  36. /**
  37. * Done when there are no more columns to match against.
  38. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ScanWildcardColumnTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ScanWildcardColumnTracker.java
  39. index a73cc0b..c62bdc5 100644
  40. --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ScanWildcardColumnTracker.java
  41. +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ScanWildcardColumnTracker.java
  42. @@ -38,6 +38,7 @@ public class ScanWildcardColumnTracker implements ColumnTracker {
  43. private int currentCount = 0;
  44. private int maxVersions;
  45. private int minVersions;
  46. + private int slack = 0;
  47. /*
  48. * Keeps track of the latest timestamp and type included for current column. Used to eliminate
  49. * duplicates.
  50. @@ -54,9 +55,19 @@ public class ScanWildcardColumnTracker implements ColumnTracker {
  51. * @param oldestUnexpiredTS oldest timestamp that has not expired according to the TTL.
  52. */
  53. public ScanWildcardColumnTracker(int minVersion, int maxVersion, long oldestUnexpiredTS) {
  54. + this(minVersion, maxVersion, 0, oldestUnexpiredTS);
  55. + }
  56. + public ScanWildcardColumnTracker(int minVersion, int maxVersion, int slack, long oldestUnexpiredTS) {
  57. this.maxVersions = maxVersion;
  58. this.minVersions = minVersion;
  59. this.oldestStamp = oldestUnexpiredTS;
  60. + this.slack = slack;
  61. + }
  62. + public void retract() {
  63. + if (slack > 0) {
  64. + slack--;
  65. + currentCount--;
  66. + }
  67. }
  68.  
  69. /**
  70. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/UserScanQueryMatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/UserScanQueryMatcher.java
  71. index 407f3fc..b941668 100644
  72. --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/UserScanQueryMatcher.java
  73. +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/UserScanQueryMatcher.java
  74. @@ -196,20 +236,22 @@ public abstract class UserScanQueryMatcher extends ScanQueryMatcher {
  75. RegionCoprocessorHost regionCoprocessorHost) throws IOException {
  76. int maxVersions = scan.isRaw() ? scan.getMaxVersions()
  77. : Math.min(scan.getMaxVersions(), scanInfo.getMaxVersions());
  78. + int slack = scan.isRaw() ? 0 :
  79. + Math.max(scan.getMaxVersions(), scanInfo.getMaxVersions())-maxVersions;
  80. boolean hasNullColumn;
  81. ColumnTracker columnTracker;
  82. if (columns == null || columns.isEmpty()) {
  83. // there is always a null column in the wildcard column query.
  84. hasNullColumn = true;
  85. // use a specialized scan for wildcard column tracker.
  86. - columnTracker = new ScanWildcardColumnTracker(scanInfo.getMinVersions(), maxVersions,
  87. + columnTracker = new ScanWildcardColumnTracker(scanInfo.getMinVersions(), maxVersions, slack,
  88. oldestUnexpiredTS);
  89. } else {
  90. // We can share the ExplicitColumnTracker, diff is we reset
  91. // between rows, not between storefiles.
  92. // whether there is null column in the explicit column query
  93. hasNullColumn = columns.first().length == 0;
  94. - columnTracker = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,
  95. + columnTracker = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions, slack,
  96. oldestUnexpiredTS);
  97. }
  98. if (scan.isRaw()) {
  99. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.java
  100. index 7a2a1e2..b060bbf 100644
  101. --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.java
  102. +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.java
  103. @@ -126,4 +126,5 @@ public interface ColumnTracker extends ShipperListener {
  104. * @return <code>true</code> to early out based on timestamp.
  105. */
  106. boolean isDone(long timestamp);
  107. + void retract();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement