translate_hbase_exceptions

in linkis-engineconn-plugins/hbase/hbase-shims-2.2.6/src/main/resources/hbase-ruby/shell/commands.rb [120:195]


      def translate_hbase_exceptions(*args)
        yield
      rescue => cause
        
        cause = cause.getCause if cause.is_a? java.io.UncheckedIOException
        handle_exceptions(cause, *args) if respond_to?(:handle_exceptions)
        
        if cause.is_a?(org.apache.hadoop.hbase.TableNotFoundException)
          strs = cause.to_s.split(' ')
          raise "Unknown table #{strs[0]}!" if strs.size == 1
          raise "Unknown table #{args.first}!"
        end
        if cause.is_a?(org.apache.hadoop.hbase.TableNotEnabledException)
          raise "Table #{args.first} is disabled!"
        end
        if cause.is_a?(org.apache.hadoop.hbase.TableNotDisabledException)
          raise "Table #{cause.message} should be disabled!"
        end
        if cause.is_a?(org.apache.hadoop.hbase.UnknownRegionException)
          raise cause.message
        end
        if cause.is_a?(org.apache.hadoop.hbase.exceptions.MergeRegionException)
          strs = cause.message.split("\n")
          raise(strs[0]).to_s unless strs.empty?
        end
        if cause.is_a?(org.apache.hadoop.hbase.NamespaceNotFoundException)
          s = /.*NamespaceNotFoundException: (?<namespace>[^\n]+).*/.match(cause.message)
          raise "Unknown namespace #{s['namespace']}!"
        end
        if cause.is_a?(org.apache.hadoop.hbase.snapshot.SnapshotDoesNotExistException)
          raise "Unknown snapshot #{args.first}!"
        end
        if cause.is_a?(org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException)
          exceptions = cause.getCauses
          exceptions.each do |exception|
            if exception.is_a?(org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException)
              valid_cols = table(args.first).get_all_columns.map { |c| c + '*' }
              raise "Unknown column family! Valid column names: #{valid_cols.join(', ')}"
            end
          end
        end
        if cause.is_a?(org.apache.hadoop.hbase.TableExistsException)
          strs = cause.to_s.split(' ')
          raise "Table already exists: #{strs[0]}!" if strs.size == 1
          raise "Table already exists: #{args.first}!"
        end
        
        
        if cause.is_a?(org.apache.hadoop.hbase.security.AccessDeniedException)
          str = java.lang.String.new(cause.to_s)
          
          
          strs = str.split("\n")
          raise (strs[0]).to_s unless strs.empty?
        end
        if cause.is_a?(org.apache.hadoop.hbase.quotas.SpaceLimitingException)
          strs = cause.message.split("\n")
          raise(strs[0]).to_s unless strs.empty?
        end
        if cause.is_a?(org.apache.hadoop.hbase.client.RetriesExhaustedException)
          str = cause.cause.to_s
          regex = /.*RpcThrottlingException: (?<message>[^\n]+).*/
          error = regex.match(str)
          raise error[:message].capitalize unless error.nil?
        end
        if cause.is_a?(org.apache.hadoop.hbase.DoNotRetryIOException)
          regex = /.*UnsupportedOperationException: quota support disabled.*/
          error = regex.match(cause.message)
          error_msg = 'Quota Support disabled. Please enable in configuration.'
          raise error_msg unless error.nil?
        end

        
        raise cause
      end