diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb b/hbase-shell/src/main/ruby/hbase/admin.rb index bc0fe47eb3b..9b1320450a1 100644 --- a/hbase-shell/src/main/ruby/hbase/admin.rb +++ b/hbase-shell/src/main/ruby/hbase/admin.rb @@ -997,6 +997,15 @@ module Hbase @admin.getSecurityCapabilities end + # Abort a procedure + def abort_procedure?(proc_id, may_interrupt_if_running=nil) + if may_interrupt_if_running.nil? + @admin.abortProcedure(proc_id, true) + else + @admin.abortProcedure(proc_id, may_interrupt_if_running) + end + end + # List all procedures def list_procedures() @admin.listProcedures() diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb index 736fecda83a..5949461bd47 100644 --- a/hbase-shell/src/main/ruby/shell.rb +++ b/hbase-shell/src/main/ruby/shell.rb @@ -405,6 +405,7 @@ Shell.load_command_group( 'procedures', :full_name => 'PROCEDURES MANAGEMENT', :commands => %w[ + abort_procedure list_procedures ] ) diff --git a/hbase-shell/src/main/ruby/shell/commands/abort_procedure.rb b/hbase-shell/src/main/ruby/shell/commands/abort_procedure.rb new file mode 100644 index 00000000000..6f77ab7059c --- /dev/null +++ b/hbase-shell/src/main/ruby/shell/commands/abort_procedure.rb @@ -0,0 +1,51 @@ +# +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +module Shell + module Commands + class AbortProcedure < Command + def help + return <<-EOF +Given a procedure Id (and optional boolean may_interrupt_if_running parameter, +default is true), abort a procedure in hbase. Use with caution. Some procedures +might not be abortable. For experts only. + +If this command is accepted and the procedure is in the process of aborting, +it will return true; if the procedure could not be aborted (eg. procedure +does not exist, or procedure already completed or abort will cause corruption), +this command will return false. + +Examples: + + hbase> abort_procedure proc_id + hbase> abort_procedure proc_id, true + hbase> abort_procedure proc_id, false +EOF + end + + def command(proc_id, may_interrupt_if_running=nil) + format_simple_command do + formatter.row([ + admin.abort_procedure?(proc_id, may_interrupt_if_running).to_s + ]) + end + end + end + end +end \ No newline at end of file