hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Irfan Mohammed <irfan...@gmail.com>
Subject Re: new API method HTable.incrementColumnValue hangs
Date Mon, 15 Jun 2009 13:14:35 GMT
Apologize if the mail is seen twice in mailing-list. I sent the earlier mail before and didn't
see it in the mailing list. Don't know if the message was delivered to the server.

using the hbase from the trunk on ubuntu 9.04

irfan@damascus:~$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version: 0.20.0-dev, r784503, Sun Jun 14 15:36:01 EDT 2009

Whenever I use the new API call [HTable.incrementColumnValue], the process hangs. If I kill
the process and later try to access the table records anywhere including "hbase shell" etc.,
even that process hangs. 

1. "stop-hbase.sh" hangs as well and I have to kill the hbase processes
2. restart the hbase using "start-hbase.sh"
3. hbase shell> count 't1' ---> throws an error that the table if offline
4. so had to enable 't1' and then work with the table.

Thread [main] (Suspended)	
	Object.wait(long) line: not available [native method] [local variables unavailable]	
	HBaseClient$Call(Object).wait() line: 485 [local variables unavailable]	
	HBaseClient.call(Writable, InetSocketAddress, UserGroupInformation) line: 712	
	HBaseRPC$Invoker.invoke(Object, Method, Object[]) line: 321	
	$Proxy1.incrementColumnValue(byte[], byte[], byte[], byte[], long) line: not available	
	HTable$6.call() line: 504	
	HTable$6.call() line: 500	
	HConnectionManager$TableServers.getRegionServerWithRetries(ServerCallable<T>) line:
	HTable.incrementColumnValue(byte[], byte[], byte[], long) line: 499	
	LoadQueryTest.testUsingIncrement() line: 130	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]

	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	LoadQueryTest(TestCase).runTest() line: 168	
	LoadQueryTest(TestCase).runBare() line: 134	
	TestResult$1.protect() line: 110	
	TestResult.runProtected(Test, Protectable) line: 128	
	TestResult.run(TestCase) line: 113	
	LoadQueryTest(TestCase).run(TestResult) line: 124	
	TestSuite.runTest(Test, TestResult) line: 232	
	TestSuite.run(TestResult) line: 227	
	JUnit38ClassRunner.run(RunNotifier) line: 81	
	JUnit4TestAdapter.run(TestResult) line: 36	
	TestSuite.runTest(Test, TestResult) line: 232	
	TestSuite.run(TestResult) line: 227	
	AllTests(JUnit38ClassRunner).run(RunNotifier) line: 81	
	JUnit4TestClassReference(JUnit4TestReference).run(TestExecution) line: 45	
	TestExecution.run(ITestReference[]) line: 38	
	RemoteTestRunner.runTests(String[], String, TestExecution) line: 460	
	RemoteTestRunner.runTests(TestExecution) line: 673	
	RemoteTestRunner.run() line: 386	
	RemoteTestRunner.main(String[]) line: 196	

My code is as follows ...

    public void testUsingIncrement() throws Exception {
        String tableName = "t1";
        HBaseConfiguration config = getConfiguration();
        createTable(config, tableName);

        // This instantiates an HTable object that connects you to the "myTable"
        // table.
        HTable table = new HTable(config, tableName);
        long siteId = 1234;
        long publisherId = 5678;
        Date eventTime = DATE_INPUT_FORMAT.parse("2009-06-15 13:08:54");
        long[] metrics = new long[] { 10, 22, 32 };
        byte[] rowKey = Bytes.toBytes(siteId + "_" + ROW_KEY_FORMAT.format(eventTime));
        byte[] family = Bytes.toBytes(FAMILY_PUBLISHER);
        byte[] qualifier = Bytes.toBytes(publisherId);
        for (int i1 = 0, n1 = metrics.length; n1 > 0; i1++, n1--) {
            table.incrementColumnValue(rowKey, family, qualifier, metrics[i1]); /// <<<<
hangs here all the time ...

        // queryMetrics(table, siteId, publisherId, eventTime);

Is there anything I am doing incorrectly?

Thanks for the help.

View raw message