You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Keith Lui (JIRA)" <ji...@apache.org> on 2015/12/16 01:52:46 UTC

[jira] [Updated] (HBASE-14988) java.lang.reflect.InvocationTargetException when doing batch with large number of increment

     [ https://issues.apache.org/jira/browse/HBASE-14988?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Keith Lui updated HBASE-14988:
------------------------------
    Description: 
Tried to do a 10K increment with batch. When using 
public void batch(List<? extends Row> actions, Object[] results) 
got 
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.simontuffs.onejar.Boot.run(Boot.java:340)
	at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.AssertionError: results.length
	at org.apache.hadoop.hbase.client.AsyncProcess$AsyncRequestFutureImpl.<init>(AsyncProcess.java:763)
	at org.apache.hadoop.hbase.client.AsyncProcess.createAsyncRequestFuture(AsyncProcess.java:1578)
	at org.apache.hadoop.hbase.client.AsyncProcess.submitAll(AsyncProcess.java:554)
	at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:1000)

Interestingly no exception is thrown when using the deprecated method 
public Object[] batch(List<? extends Row> actions)

This is a sample code in Scala:

val table = connection.getTable(TableName.valueOf("test_table"))
val increments = for (i <- 0 until 10000) yield {
val increment = new Increment(Random.nextDouble().toString.getBytes)
increment.addColumn(family, qualifier, Random.nextLong())
increment
}
table.batch(increments, Array.empty[Object])


  was:
Tried to do a 10K increment with batch. When using 
public void batch(List<? extends Row> actions, Object[] results) 
got 
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.simontuffs.onejar.Boot.run(Boot.java:340)
	at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.AssertionError: results.length
	at org.apache.hadoop.hbase.client.AsyncProcess$AsyncRequestFutureImpl.<init>(AsyncProcess.java:763)
	at org.apache.hadoop.hbase.client.AsyncProcess.createAsyncRequestFuture(AsyncProcess.java:1578)
	at org.apache.hadoop.hbase.client.AsyncProcess.submitAll(AsyncProcess.java:554)
	at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:1000)

Interestingly no exception is thrown when using the deprecated method 
public Object[] batch(List<? extends Row> actions)

This is a sample code in Scala:

val table = connection.getTable(TableName.valueOf("test_table"))
val increments = for (i <- 0 until 10000) yield {
  val rand = Random.nextDouble().toString  
  val increment = new Increment(rand.getBytes)
  increment.addColumn(family, qualifier, Random.nextLong())
  increment
}
table.batch(increments, Array.empty[Object])



> java.lang.reflect.InvocationTargetException when doing batch with large number of increment
> -------------------------------------------------------------------------------------------
>
>                 Key: HBASE-14988
>                 URL: https://issues.apache.org/jira/browse/HBASE-14988
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>            Reporter: Keith Lui
>
> Tried to do a 10K increment with batch. When using 
> public void batch(List<? extends Row> actions, Object[] results) 
> got 
> java.lang.reflect.InvocationTargetException
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.simontuffs.onejar.Boot.run(Boot.java:340)
> 	at com.simontuffs.onejar.Boot.main(Boot.java:166)
> Caused by: java.lang.AssertionError: results.length
> 	at org.apache.hadoop.hbase.client.AsyncProcess$AsyncRequestFutureImpl.<init>(AsyncProcess.java:763)
> 	at org.apache.hadoop.hbase.client.AsyncProcess.createAsyncRequestFuture(AsyncProcess.java:1578)
> 	at org.apache.hadoop.hbase.client.AsyncProcess.submitAll(AsyncProcess.java:554)
> 	at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:1000)
> Interestingly no exception is thrown when using the deprecated method 
> public Object[] batch(List<? extends Row> actions)
> This is a sample code in Scala:
> val table = connection.getTable(TableName.valueOf("test_table"))
> val increments = for (i <- 0 until 10000) yield {
> val increment = new Increment(Random.nextDouble().toString.getBytes)
> increment.addColumn(family, qualifier, Random.nextLong())
> increment
> }
> table.batch(increments, Array.empty[Object])



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)