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

ASF GitHub Bot commented on TEPHRA-219:
---------------------------------------

Github user poornachandra commented on a diff in the pull request:

    https://github.com/apache/incubator-tephra/pull/35#discussion_r100940812
  
    --- Diff: 
tephra-hbase-compat-1.1-base/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
 ---
    @@ -97,27 +101,33 @@ private void startFlushThread() {
         flushThread = new Thread("tephra-prune-upper-bound-writer") {
           @Override
           public void run() {
    -        while ((!isInterrupted()) && isRunning()) {
    +        while ((!isInterrupted()) && (!stopped)) {
               long now = System.currentTimeMillis();
               if (now > (lastChecked + pruneFlushInterval)) {
                 // should flush data
                 try {
    -              // Record prune upper bound
    -              while (!pruneEntries.isEmpty()) {
    -                Map.Entry<byte[], Long> firstEntry = 
pruneEntries.firstEntry();
    -                
dataJanitorState.savePruneUpperBoundForRegion(firstEntry.getKey(), 
firstEntry.getValue());
    -                // We can now remove the entry only if the key and value 
match with what we wrote since it is
    -                // possible that a new pruneUpperBound for the same key 
has been added
    -                pruneEntries.remove(firstEntry.getKey(), 
firstEntry.getValue());
    -              }
    -              // Record empty regions
    -              while (!emptyRegions.isEmpty()) {
    -                Map.Entry<byte[], Long> firstEntry = 
emptyRegions.firstEntry();
    -                
dataJanitorState.saveEmptyRegionForTime(firstEntry.getValue(), 
firstEntry.getKey());
    -                // We can now remove the entry only if the key and value 
match with what we wrote since it is
    -                // possible that a new value for the same key has been 
added
    -                emptyRegions.remove(firstEntry.getKey(), 
firstEntry.getValue());
    -              }
    +              User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
    --- End diff --
    
    Let's not close TEPHRA-219 until we have figured out how to handle the 
wrapping cleanly.


> Setup proper security context in co-processor for compaction and flushes
> ------------------------------------------------------------------------
>
>                 Key: TEPHRA-219
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-219
>             Project: Tephra
>          Issue Type: Sub-task
>            Reporter: Poorna Chandra
>            Assignee: Gokul Gunasekaran
>             Fix For: 0.11.0-incubating
>
>
> From PHOENIX-3037, HBASE-16115 and HBASE-16141 - HBase runs compaction/flush 
> co-processor hooks as the user (current user) who started the 
> compaction/flush. This becomes an issue when a co-processor makes cross 
> region server calls in hooks. If the calls are made as the current user, then 
> the call may fail since the current user may not have sufficient privileges 
> to perform the call.
> Tephra TransactionProcessor will need to run all calls in compaction/flush 
> hooks as the login user instead of the current user.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to