http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html index 7f3de9e..557f64e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html @@ -686,51 +686,56 @@ <span class="sourceLineNo">678</span> // Internal to shouldBypass, it checks if obeserverOperation#isBypassable().<a name="line.678"></a> <span class="sourceLineNo">679</span> bypass |= observerOperation.shouldBypass();<a name="line.679"></a> <span class="sourceLineNo">680</span> observerOperation.postEnvCall();<a name="line.680"></a> -<span class="sourceLineNo">681</span> }<a name="line.681"></a> -<span class="sourceLineNo">682</span> return bypass;<a name="line.682"></a> -<span class="sourceLineNo">683</span> }<a name="line.683"></a> -<span class="sourceLineNo">684</span><a name="line.684"></a> -<span class="sourceLineNo">685</span> /**<a name="line.685"></a> -<span class="sourceLineNo">686</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.686"></a> -<span class="sourceLineNo">687</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.687"></a> -<span class="sourceLineNo">688</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.688"></a> -<span class="sourceLineNo">689</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.689"></a> -<span class="sourceLineNo">690</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.690"></a> -<span class="sourceLineNo">691</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.691"></a> -<span class="sourceLineNo">692</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.692"></a> -<span class="sourceLineNo">693</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.693"></a> -<span class="sourceLineNo">694</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.694"></a> -<span class="sourceLineNo">695</span> * @throws IOException<a name="line.695"></a> -<span class="sourceLineNo">696</span> */<a name="line.696"></a> -<span class="sourceLineNo">697</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.697"></a> -<span class="sourceLineNo">698</span> throws IOException {<a name="line.698"></a> -<span class="sourceLineNo">699</span> if (observerOperation == null) return false;<a name="line.699"></a> -<span class="sourceLineNo">700</span> boolean bypass = false;<a name="line.700"></a> -<span class="sourceLineNo">701</span> List<E> envs = coprocEnvironments.get();<a name="line.701"></a> -<span class="sourceLineNo">702</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.702"></a> -<span class="sourceLineNo">703</span> for (E env : envs) {<a name="line.703"></a> -<span class="sourceLineNo">704</span> observerOperation.prepare(env);<a name="line.704"></a> -<span class="sourceLineNo">705</span> Thread currentThread = Thread.currentThread();<a name="line.705"></a> -<span class="sourceLineNo">706</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.706"></a> -<span class="sourceLineNo">707</span> try {<a name="line.707"></a> -<span class="sourceLineNo">708</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.708"></a> -<span class="sourceLineNo">709</span> observerOperation.callObserver();<a name="line.709"></a> -<span class="sourceLineNo">710</span> } catch (Throwable e) {<a name="line.710"></a> -<span class="sourceLineNo">711</span> handleCoprocessorThrowable(env, e);<a name="line.711"></a> -<span class="sourceLineNo">712</span> } finally {<a name="line.712"></a> -<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(cl);<a name="line.713"></a> -<span class="sourceLineNo">714</span> }<a name="line.714"></a> -<span class="sourceLineNo">715</span> bypass |= observerOperation.shouldBypass();<a name="line.715"></a> -<span class="sourceLineNo">716</span> }<a name="line.716"></a> -<span class="sourceLineNo">717</span><a name="line.717"></a> -<span class="sourceLineNo">718</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.718"></a> -<span class="sourceLineNo">719</span> for (E env : envs) {<a name="line.719"></a> -<span class="sourceLineNo">720</span> observerOperation.prepare(env);<a name="line.720"></a> -<span class="sourceLineNo">721</span> observerOperation.postEnvCall();<a name="line.721"></a> -<span class="sourceLineNo">722</span> }<a name="line.722"></a> -<span class="sourceLineNo">723</span> return bypass;<a name="line.723"></a> -<span class="sourceLineNo">724</span> }<a name="line.724"></a> -<span class="sourceLineNo">725</span>}<a name="line.725"></a> +<span class="sourceLineNo">681</span> if (bypass) {<a name="line.681"></a> +<span class="sourceLineNo">682</span> // If CP says bypass, skip out w/o calling any following CPs; they might ruin our response.<a name="line.682"></a> +<span class="sourceLineNo">683</span> // In hbase1, this used to be called 'complete'. In hbase2, we unite bypass and 'complete'.<a name="line.683"></a> +<span class="sourceLineNo">684</span> break;<a name="line.684"></a> +<span class="sourceLineNo">685</span> }<a name="line.685"></a> +<span class="sourceLineNo">686</span> }<a name="line.686"></a> +<span class="sourceLineNo">687</span> return bypass;<a name="line.687"></a> +<span class="sourceLineNo">688</span> }<a name="line.688"></a> +<span class="sourceLineNo">689</span><a name="line.689"></a> +<span class="sourceLineNo">690</span> /**<a name="line.690"></a> +<span class="sourceLineNo">691</span> * Coprocessor classes can be configured in any order, based on that priority is set and<a name="line.691"></a> +<span class="sourceLineNo">692</span> * chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is<a name="line.692"></a> +<span class="sourceLineNo">693</span> * going down. This function first calls coprocessor methods (using ObserverOperation.call())<a name="line.693"></a> +<span class="sourceLineNo">694</span> * and then shutdowns the environment in postEnvCall(). <br><a name="line.694"></a> +<span class="sourceLineNo">695</span> * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.695"></a> +<span class="sourceLineNo">696</span> * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.696"></a> +<span class="sourceLineNo">697</span> * master/regionserver stop or cluster shutdown. (Refer:<a name="line.697"></a> +<span class="sourceLineNo">698</span> * <a href="https://issues.apache.org/jira/browse/HBASE-16663">HBASE-16663</a><a name="line.698"></a> +<span class="sourceLineNo">699</span> * @return true if bypaas coprocessor execution, false if not.<a name="line.699"></a> +<span class="sourceLineNo">700</span> * @throws IOException<a name="line.700"></a> +<span class="sourceLineNo">701</span> */<a name="line.701"></a> +<span class="sourceLineNo">702</span> protected <O> boolean execShutdown(final ObserverOperation<O> observerOperation)<a name="line.702"></a> +<span class="sourceLineNo">703</span> throws IOException {<a name="line.703"></a> +<span class="sourceLineNo">704</span> if (observerOperation == null) return false;<a name="line.704"></a> +<span class="sourceLineNo">705</span> boolean bypass = false;<a name="line.705"></a> +<span class="sourceLineNo">706</span> List<E> envs = coprocEnvironments.get();<a name="line.706"></a> +<span class="sourceLineNo">707</span> // Iterate the coprocessors and execute ObserverOperation's call()<a name="line.707"></a> +<span class="sourceLineNo">708</span> for (E env : envs) {<a name="line.708"></a> +<span class="sourceLineNo">709</span> observerOperation.prepare(env);<a name="line.709"></a> +<span class="sourceLineNo">710</span> Thread currentThread = Thread.currentThread();<a name="line.710"></a> +<span class="sourceLineNo">711</span> ClassLoader cl = currentThread.getContextClassLoader();<a name="line.711"></a> +<span class="sourceLineNo">712</span> try {<a name="line.712"></a> +<span class="sourceLineNo">713</span> currentThread.setContextClassLoader(env.getClassLoader());<a name="line.713"></a> +<span class="sourceLineNo">714</span> observerOperation.callObserver();<a name="line.714"></a> +<span class="sourceLineNo">715</span> } catch (Throwable e) {<a name="line.715"></a> +<span class="sourceLineNo">716</span> handleCoprocessorThrowable(env, e);<a name="line.716"></a> +<span class="sourceLineNo">717</span> } finally {<a name="line.717"></a> +<span class="sourceLineNo">718</span> currentThread.setContextClassLoader(cl);<a name="line.718"></a> +<span class="sourceLineNo">719</span> }<a name="line.719"></a> +<span class="sourceLineNo">720</span> bypass |= observerOperation.shouldBypass();<a name="line.720"></a> +<span class="sourceLineNo">721</span> }<a name="line.721"></a> +<span class="sourceLineNo">722</span><a name="line.722"></a> +<span class="sourceLineNo">723</span> // Iterate the coprocessors and execute ObserverOperation's postEnvCall()<a name="line.723"></a> +<span class="sourceLineNo">724</span> for (E env : envs) {<a name="line.724"></a> +<span class="sourceLineNo">725</span> observerOperation.prepare(env);<a name="line.725"></a> +<span class="sourceLineNo">726</span> observerOperation.postEnvCall();<a name="line.726"></a> +<span class="sourceLineNo">727</span> }<a name="line.727"></a> +<span class="sourceLineNo">728</span> return bypass;<a name="line.728"></a> +<span class="sourceLineNo">729</span> }<a name="line.729"></a> +<span class="sourceLineNo">730</span>}<a name="line.730"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/d171b896/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html index fd753f3..49d37d0 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html @@ -70,17 +70,22 @@ <span class="sourceLineNo">062</span> * that the replacement for the bypassed code takes care of all necessary<a name="line.62"></a> <span class="sourceLineNo">063</span> * skipped concerns. Because those concerns can change at any point, such an<a name="line.63"></a> <span class="sourceLineNo">064</span> * assumption is never safe.</p><a name="line.64"></a> -<span class="sourceLineNo">065</span> */<a name="line.65"></a> -<span class="sourceLineNo">066</span> void bypass();<a name="line.66"></a> -<span class="sourceLineNo">067</span><a name="line.67"></a> -<span class="sourceLineNo">068</span> /**<a name="line.68"></a> -<span class="sourceLineNo">069</span> * Returns the active user for the coprocessor call. If an explicit {@code User} instance was<a name="line.69"></a> -<span class="sourceLineNo">070</span> * provided to the constructor, that will be returned, otherwise if we are in the context of an<a name="line.70"></a> -<span class="sourceLineNo">071</span> * RPC call, the remote user is used. May not be present if the execution is outside of an RPC<a name="line.71"></a> -<span class="sourceLineNo">072</span> * context.<a name="line.72"></a> -<span class="sourceLineNo">073</span> */<a name="line.73"></a> -<span class="sourceLineNo">074</span> Optional<User> getCaller();<a name="line.74"></a> -<span class="sourceLineNo">075</span>}<a name="line.75"></a> +<span class="sourceLineNo">065</span> * <p>As of hbase2, when bypass has been set, we will NOT call any Coprocessors follow the<a name="line.65"></a> +<span class="sourceLineNo">066</span> * bypassing Coprocessor; we cut short the processing and return the bypassing Coprocessors<a name="line.66"></a> +<span class="sourceLineNo">067</span> * response (this used be a separate 'complete' option that has been folded into the<a name="line.67"></a> +<span class="sourceLineNo">068</span> * 'bypass' in hbase2.</p><a name="line.68"></a> +<span class="sourceLineNo">069</span> */<a name="line.69"></a> +<span class="sourceLineNo">070</span> void bypass();<a name="line.70"></a> +<span class="sourceLineNo">071</span><a name="line.71"></a> +<span class="sourceLineNo">072</span><a name="line.72"></a> +<span class="sourceLineNo">073</span> /**<a name="line.73"></a> +<span class="sourceLineNo">074</span> * Returns the active user for the coprocessor call. If an explicit {@code User} instance was<a name="line.74"></a> +<span class="sourceLineNo">075</span> * provided to the constructor, that will be returned, otherwise if we are in the context of an<a name="line.75"></a> +<span class="sourceLineNo">076</span> * RPC call, the remote user is used. May not be present if the execution is outside of an RPC<a name="line.76"></a> +<span class="sourceLineNo">077</span> * context.<a name="line.77"></a> +<span class="sourceLineNo">078</span> */<a name="line.78"></a> +<span class="sourceLineNo">079</span> Optional<User> getCaller();<a name="line.79"></a> +<span class="sourceLineNo">080</span>}<a name="line.80"></a>
