This is my test case ,but I get NPE some times .

java.lang.NullPointerException
at
com.uuwatch.idm.hbase.GetRowVersionsTest.testGetRowMultipleVersions(GetRowVersionsTest.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

public class GetRowVersionsTest extends TestCase
{
    private final byte[] family    = Bytes.toBytes("log");

    private final byte[] qualifier = Bytes.toBytes("siteUrl");

    private final byte[] rowKey    = Bytes.toBytes(1);

    private final HTable table     =
IDMHBaseConfiguration.getTable(BigTableName.getSite());

    private final long   ts1       = 1298529542218L;

    private final long   ts2       = ts1 + 100;

    private final long   ts3       = ts1 + 100;

    private final byte[] value1    = Bytes.toBytes("value1");

    private final byte[] value2    = Bytes.toBytes("value2");

    private final byte[] value3    = Bytes.toBytes("value3");

    private void insert(final long ts, final byte[] value) throws
IOException
    {
        final Put put = new Put(rowKey);
        put.add(family, qualifier, ts, value);
        table.put(put);
    }

    private void sleep()
    {
        try
        {
            Thread.sleep(1000);
        }
        catch (final InterruptedException e)
        {
            e.printStackTrace();
        }
    }

    @Test
    public void testGetRowMultipleVersions() throws Exception
    {
        insert(ts1, value1);
        sleep();
        insert(ts2, value2);
        sleep();
        insert(ts3, value3);
        sleep();

        // check getRow with multiple versions
        final Get get = new Get(rowKey);
        get.setMaxVersions();
        final Result r = table.get(get);
        final NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long,
byte[]>>> map = r.getMap();
        final NavigableMap<byte[], NavigableMap<Long, byte[]>> familyMap =
map.get(family);
        final NavigableMap<Long, byte[]> versionMap =
familyMap.get(qualifier);
        for (final Map.Entry<Long, byte[]> entry : versionMap.entrySet())
        {
            System.err.println(entry.getKey());
            System.err.println(Bytes.toString(entry.getValue()));
        }
        //        assertTrue(versionMap.size() == 3);

        //        assertTrue(value1 == versionMap.get(ts1));
        //        assertTrue(value2 == versionMap.get(ts2));
        //        assertTrue(value3 == versionMap.get(ts3));

        //        table.delete(new Delete(rowKey));
        //        assertTrue(table.get(get).size() == 0);
        //        table.close();
    }
}


On Thu, Feb 24, 2011 at 11:07 AM, Tatsuya Kawano <tatsuya6...@gmail.com>wrote:

> Hi Jiajun,
>
> Make sure you don't have the same timestamp on every versions of puts; try
> to put Thread.sleep() in your test(?) codes when necessary.
>
> You might not want to specify the timestamp by yourself but want to let
> HBase to store appropriate ones.
>
> --
> Tatsuya Kawano (Mr.)
> Tokyo, Japan
>
>
> On Feb 24, 2011, at 11:30 AM, Ryan Rawson <ryano...@gmail.com> wrote:
>
> > There are test cases for this, the functionality DOES work, something is
> up...
> >
> > Without full code and full descriptions of your tables, debugging is
> > harder than it needs to be.  It's probably a simple typo or something,
> > check your code and table descriptions again. Many people rely on the
> > multi version query capabilities and it is very unlikely to be broken
> > in a released version of hbase.
> >
> > On Wed, Feb 23, 2011 at 6:27 PM, 陈加俊 <cjjvict...@gmail.com> wrote:
> >>  final List<KeyValue> list = result.list();
> >>           for (final KeyValue it : list)
> >>           {
> >>               System.out.println(Bytes.toString(it.getKey()));
> >>               System.out.println(Bytes.toString(it.getValue()));
> >>           }
> >> I can only get the last version!  why ? Is there any testcase in Hbase?
> >>
> >> On Thu, Feb 24, 2011 at 9:56 AM, 陈加俊 <cjjvict...@gmail.com> wrote:
> >>
> >>> /**
> >>>   * Create a sorted list of the KeyValue's in this result.
> >>>   *
> >>>   * @return The sorted list of KeyValue's.
> >>>   */
> >>>  public List<KeyValue> list() {
> >>>    if(this.kvs == null) {
> >>>      readFields();
> >>>    }
> >>>    return isEmpty()? null: Arrays.asList(sorted());
> >>>  }
> >>>
> >>> I will try it . Thank you very much!
> >>>
> >>> On Thu, Feb 24, 2011 at 9:45 AM, Buttler, David <buttl...@llnl.gov>
> wrote:
> >>>
> >>>> Result.list() ?
> >>>> Putting the hbase source into your IDE of choice (yay Eclipse!) is
> really
> >>>> helpful
> >>>>
> >>>> Dave
> >>>>
> >>>>
> >>>> -----Original Message-----
> >>>> From: 陈加俊 [mailto:cjjvict...@gmail.com]
> >>>> Sent: Wednesday, February 23, 2011 5:42 PM
> >>>> To: user@hbase.apache.org
> >>>> Cc: Buttler, David
> >>>> Subject: Re: I can't get many versions of the specified column,but
> only
> >>>> get the latest version of the specified column
> >>>>
> >>>> Thank you David !
> >>>>
> >>>> I alter the table schema as follow:
> >>>>
> >>>>> alter 'cjjIndexPageModify', {NAME => 'log' , VERSIONS => 5 , METHOD
> =>
> >>>> 'add'}
> >>>>
> >>>> How to iterate over KeyValues?  which method in Result?
> >>>>
> >>>> On Thu, Feb 24, 2011 at 9:27 AM, Buttler, David <buttl...@llnl.gov>
> >>>> wrote:
> >>>>
> >>>>> What is your table schema set to?  By default it holds 3 versions.
> >>>>> Also, you might iterating over KeyValues instead of using the Map
> since
> >>>> you
> >>>>> don't really care about the organization, just the time.
> >>>>>
> >>>>> Dave
> >>>>>
> >>>>> -----Original Message-----
> >>>>> From: 陈加俊 [mailto:cjjvict...@gmail.com]
> >>>>> Sent: Wednesday, February 23, 2011 5:22 PM
> >>>>> To: user@hbase.apache.org
> >>>>> Cc: Stack
> >>>>> Subject: Re: I can't get many versions of the specified column,but
> only
> >>>> get
> >>>>> the latest version of the specified column
> >>>>>
> >>>>> I execute it five times at diffrent time.
> >>>>>
> >>>>> //put data by version
> >>>>>
> >>>>> final Put p = new Put(key); // key
> >>>>> final long ts = System.currentTimeMillis();
> >>>>>      p.add(FAMILY, q1, ts,v1);
> >>>>>      p.add(FAMILY, q2, ts,v2);
> >>>>>      p.add(FAMILY, q3, ts,v3);
> >>>>>     table.put(p);
> >>>>>
> >>>>> So I can get five versions ,right?
> >>>>>
> >>>>> On Thu, Feb 24, 2011 at 2:06 AM, Stack <st...@duboce.net> wrote:
> >>>>>
> >>>>>> What do you get for a result?
> >>>>>>
> >>>>>> You are only entering a single version of each column, a single
> >>>>>> version of FAMILY:q1, a single version FAMILY:q2, and a FAMILY:q3.
> >>>>>>
> >>>>>> St.Ack
> >>>>>>
> >>>>>> On Wed, Feb 23, 2011 at 2:54 AM, 陈加俊 <cjjvict...@gmail.com> wrote:
> >>>>>>> I can't get many versions of the specified column,but only get the
> >>>>> latest
> >>>>>>> version of the specified column. Is there anyone  help me?
> >>>>>>>
> >>>>>>> //put data by version
> >>>>>>>
> >>>>>>> final Put p = new Put(key); // key
> >>>>>>> final long ts = System.currentTimeMillis();
> >>>>>>>      p.add(FAMILY, q1, ts,v1);
> >>>>>>>      p.add(FAMILY, q2, ts,v2);
> >>>>>>>      p.add(FAMILY, q3, ts,v3);
> >>>>>>>
> >>>>>>>     table.put(p);
> >>>>>>>
> >>>>>>>
> >>>>>>> //get all versions of data
> >>>>>>>
> >>>>>>> final Get get = new Get(key);
> >>>>>>>          get.addFamily(FAMILY);
> >>>>>>>          get.setMaxVersions(10);
> >>>>>>>          final Result result = htable.get(get);
> >>>>>>>
> >>>>>>>          final NavigableMap<byte[], NavigableMap<byte[],
> >>>>>>> NavigableMap<Long, byte[]>>> map = result.getMap();
> >>>>>>>          final Set<Entry<byte[], NavigableMap<byte[],
> >>>>>>> NavigableMap<Long, byte[]>>>> entrySet = map.entrySet();
> >>>>>>>          final Iterator<Entry<byte[], NavigableMap<byte[],
> >>>>>>> NavigableMap<Long, byte[]>>>> iterator = entrySet
> >>>>>>>                  .iterator();
> >>>>>>>          while (iterator.hasNext())
> >>>>>>>          {
> >>>>>>>              final Entry<byte[], NavigableMap<byte[],
> >>>>>>> NavigableMap<Long, byte[]>>> next = iterator.next();
> >>>>>>>              System.out.println(Bytes.toString(next.getKey()));
> >>>>> //family
> >>>>>>>              for (final Entry<byte[], NavigableMap<Long, byte[]>>
> >>>>>>> item : next.getValue().entrySet())
> >>>>>>>              {
> >>>>>>>                  System.out.println(Bytes.toString(item.getKey()));
> >>>>>>>                  for (final Entry<Long, byte[]> _item :
> >>>>>>> item.getValue().entrySet())
> >>>>>>>                  {
> >>>>>>>                      System.out.println(_item.getKey()); //q
> >>>>>>>
> >>>>>> System.out.println(Bytes.toString(_item.getValue()));
> >>>>>>> //value
> >>>>>>>                  }
> >>>>>>>              }
> >>>>>>>
> >>>>>>>          }
> >>>>>>>
> >>>>>>> --
> >>>>>>> Thanks & Best regards
> >>>>>>> jiajun
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Thanks & Best regards
> >>>>> jiajun
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Thanks & Best regards
> >>>> jiajun
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Thanks & Best regards
> >>> jiajun
> >>>
> >>>
> >>
> >>
> >> --
> >> Thanks & Best regards
> >> jiajun
> >>
>



-- 
Thanks & Best regards
jiajun

Reply via email to