phoenix-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [phoenix] gjacoby126 commented on a change in pull request #469: PHOENIX-5156 Consistent Global Indexes for Non-Transactional Tables
Date Wed, 10 Apr 2019 22:38:40 GMT
gjacoby126 commented on a change in pull request #469: PHOENIX-5156 Consistent Global Indexes
for Non-Transactional Tables
URL: https://github.com/apache/phoenix/pull/469#discussion_r274188632
 
 

 ##########
 File path: phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java
 ##########
 @@ -579,153 +633,83 @@ public void postBatchMutateIndispensably(ObserverContext<RegionCoprocessorEnviro
 
   private void doPost(ObserverContext<RegionCoprocessorEnvironment> c, BatchMutateContext
context) throws IOException {
       try {
-        doPostWithExceptions(c,context);
-        return;
-      } catch (Throwable e) {
-        rethrowIndexingException(e);
-      }
-      throw new RuntimeException(
-          "Somehow didn't complete the index update, but didn't return succesfully either!");
-    }
-
-  private void doPostWithExceptions(ObserverContext<RegionCoprocessorEnvironment> c,
BatchMutateContext context)
-          throws IOException {
-      //short circuit, if we don't need to do any work
-      if (context == null || context.indexUpdates.isEmpty()) {
-          return;
-      }
-
-      // get the current span, or just use a null-span to avoid a bunch of if statements
-      try (TraceScope scope = Trace.startSpan("Completing index writes")) {
-          Span current = scope.getSpan();
-          if (current == null) {
-              current = NullSpan.INSTANCE;
-          }
-          long start = EnvironmentEdgeManager.currentTimeMillis();
-          
-          current.addTimelineAnnotation("Actually doing index update for first time");
-          writer.writeAndKillYourselfOnFailure(context.indexUpdates, false, context.clientVersion);
-
-          long duration = EnvironmentEdgeManager.currentTimeMillis() - start;
-          if (duration >= slowIndexWriteThreshold) {
-              if (LOG.isDebugEnabled()) {
-                  LOG.debug(getCallTooSlowMessage("indexWrite", duration, slowIndexWriteThreshold));
-              }
-              metricSource.incrementNumSlowIndexWriteCalls();
-          }
-          metricSource.updateIndexWriteTime(duration);
-      }
-  }
-
-  /**
-   * Search the {@link WALEdit} for the first {@link IndexedKeyValue} present
-   * @param edit {@link WALEdit}
-   * @return the first {@link IndexedKeyValue} in the {@link WALEdit} or <tt>null</tt>
if not
-   *         present
-   */
-  private IndexedKeyValue getFirstIndexedKeyValue(WALEdit edit) {
-    for (Cell kv : edit.getCells()) {
-      if (kv instanceof IndexedKeyValue) {
-        return (IndexedKeyValue) kv;
-      }
-    }
-    return null;
+            doPostWithExceptions(c,context);
+            return;
+        } catch (Throwable e) {
+            rethrowIndexingException(e);
+        }
+        throw new RuntimeException(
+                "Somehow didn't complete the index update, but didn't return succesfully
either!");
   }
 
-  /**
-   * Extract the index updates from the WAL Edit
-   * @param edit to search for index updates
-   * @return the mutations to apply to the index tables
-   */
-  private Collection<Pair<Mutation, byte[]>> extractIndexUpdate(WALEdit edit)
{
-    // Avoid multiple internal array resizings. Initial size of 64, unless we have fewer
cells in the edit
-    int initialSize = Math.min(edit.size(), 64);
-    Collection<Pair<Mutation, byte[]>> indexUpdates = new ArrayList<Pair<Mutation,
byte[]>>(initialSize);
-    for (Cell kv : edit.getCells()) {
-      if (kv instanceof IndexedKeyValue) {
-        IndexedKeyValue ikv = (IndexedKeyValue) kv;
-        indexUpdates.add(new Pair<Mutation, byte[]>(ikv.getMutation(), ikv.getIndexTable()));
-      }
-    }
+  private void doPostWithExceptions(ObserverContext<RegionCoprocessorEnvironment> c,
BatchMutateContext context)
+            throws IOException {
+        //short circuit, if we don't need to do any work
+        if (context == null || context.postIndexUpdates.isEmpty()) {
+            return;
+        }
 
-    return indexUpdates;
-  }
+        // get the current span, or just use a null-span to avoid a bunch of if statements
+        try (TraceScope scope = Trace.startSpan("Completing index writes")) {
+            Span current = scope.getSpan();
+            if (current == null) {
+                current = NullSpan.INSTANCE;
+            }
+            long start = EnvironmentEdgeManager.currentTimeMillis();
 
-  @Override
-  public void postOpen(final ObserverContext<RegionCoprocessorEnvironment> c) {
-    Multimap<HTableInterfaceReference, Mutation> updates = failedIndexEdits.getEdits(c.getEnvironment().getRegion());
-    
-    if (this.disabled) {
-        return;
-    }
+            current.addTimelineAnnotation("Actually doing post index update for first time");
+            postWriter.writeAndHandleFailure(context.postIndexUpdates, false, context.clientVersion);
 
 Review comment:
   perhaps a comment here to make clear we're writing the verified flags

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message