Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-18755

Set Increment getReturnResults to false will cause batch failed by using BufferedMutator

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.2.0
    • None
    • Client
    • None

    Description

      I try to do batch of increment in Spark rdd like this:

          var connection: Connection = null
          var bufferdMutator: BufferedMutator = null
          try {
            connection = getConnection
            bufferdMutator = getBufferedMutator(connection)
            dataItr.foreach(row => try {
              val rowKey = toRowKey(row)
              val increment = new Increment(rowKey)
              increment.setDurability(Durability.SKIP_WAL)
              increment.setReturnResults(false)
              meas.foreach(columnName => {
                increment.addColumn("cf".getBytes, Bytes.toBytes(columnName), row.getAs[Long](columnName))
              })
              bufferdMutator.mutate(increment)
      
            } catch {
              case t: Throwable => logger.error(t.getMessage, t)
            })
            bufferdMutator.flush()
          } catch {
            case t: Throwable => logger.error(t.getMessage, t)
          } finally {
            IOUtils.closeQuietly(bufferdMutator)
          }
      

      Because I do not need the return result, thus I use increment.setReturnResults(false) . When flush to Hbase, I got the flowing exception. When I change increment.setReturnResults(true) everything is OK

      17/09/04 17:55:39 ERROR client.AsyncProcess: #32, Caught throwable while calling. This is unexpected. Retrying. Server is hadoop02,60020,1502272041150, tableName=push:msgHourInfo
      java.lang.RuntimeException: java.lang.IllegalStateException: actions.getActionCount=1, actionResult.getResultOrExceptionCount=0 for region type: REGION_NAME
      value: "msgHourInfo,,1504318878177.1edc4215ef0853432b1598a0b1965519."

      at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208)
      at org.apache.hadoop.hbase.client.AsyncProcess$AsyncRequestFutureImpl$SingleServerRequestRunnable.run(AsyncProcess.java:733)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.IllegalStateException: actions.getActionCount=1, actionResult.getResultOrExceptionCount=0 for region type: REGION_NAME
      value: "push:msgHourInfo,,1504318878177.1edc4215ef0853432b1598a0b1965519."

      at org.apache.hadoop.hbase.protobuf.ResponseConverter.getResults(ResponseConverter.java:117)
      at org.apache.hadoop.hbase.client.MultiServerCallable.call(MultiServerCallable.java:133)
      at org.apache.hadoop.hbase.client.MultiServerCallable.call(MultiServerCallable.java:53)
      at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
      ... 6 more

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              allencheng1225 Xudong Zheng
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: