hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ted Yu <yuzhih...@gmail.com>
Subject Re: class cast exception and setting operation timeout on a pooled HTable
Date Wed, 10 Apr 2013 16:04:23 GMT
bq. there is no way to directly set the operation timeout on a pooled table

Right.

Cheers

On Wed, Apr 10, 2013 at 8:26 AM, Jim the Standing Bear <
standingbear@gmail.com> wrote:

> Thanks Ted.  It appears the implementation has changed from v0.92 to
> v0.94 (PooledHTable used to extend HTable in v0.92, but only
> implements HTableInterface in v0.94).  My fault for looking at the
> v0.92 sourcecode and assumed that it would be the same in v0.94.
> So in other words, there is no way to directly set the operation
> timeout on a pooled table, correct?  Thanks.
>
> -- Jim
>
> On Wed, Apr 10, 2013 at 11:02 AM, Ted Yu <yuzhihong@gmail.com> wrote:
> > PooledHTable implements HTableInterface through delegate, table.
> > I see this method:
> >
> >      * Expose the wrapped HTable to tests in the same package
> >
> >      *
> >
> >      * @return wrapped htable
> >
> >      */
> >
> >     HTableInterface getWrappedTable() {
> >
> >       return table;
> >
> >     }
> > If you just want to verify timeout, you can use (I know this is not
> ideal):
> >
> >     public String toString() {
> >
> >       return "PooledHTable{" + ", table=" + table + '}';
> >
> >     }
> >
> > On Wed, Apr 10, 2013 at 7:56 AM, Jim the Standing Bear <
> > standingbear@gmail.com> wrote:
> >
> >> Hi,
> >>
> >> When I use HTablePool to perform some HBase data loading operations, I
> >> encountered a problem where the Put operation seemed to hang forever.
> >> A little bit of digging shows that the default client operation
> >> timeout is something like 2 billion ms.
> >>
> >> HTable provides a getter and setter methods on operation time out, but
> >> that method is not exposed in HTableInterface.  In addition, the
> >> HTablePool.getTable actually returns a PooledHTable object although
> >> down-casted as HTableInterface, and PooledHTable extends HTable, so it
> >> seems every piece is there for me to check or to set the operation
> >> timeout, and all I need is just some class casting.
> >>
> >> But when I do
> >>
> >> HTableInterface hti = hTablePool.getTable("table1");
> >> System.out.println(((HTable)hti).getOperationTimeout);
> >>
> >> I get a class cast exception:
> >>
> >> java.lang.ClassCastException:
> >> org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast
> >> to org.apache.hadoop.hbase.client.HTable
> >>
> >> What am I missing?  Also how can I check or set the operation timeout?
> >>  I know another way is to use the configuration parameter,
> >> hbase.client.operation.timeout, but it doesn't allow me to check an
> >> actual HTable instance to make sure the correct timeout is set.
> >> Please help.
> >>
> >> I am using hbase 0.94.4 with security enabled.  Thanks.
> >>
> >> -- Jim
> >>
>
>
>
> --
> --------------------------------------
> Standing Bear Has Spoken
> --------------------------------------
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message