Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase, mail # user - Is "synchronized" required?


Copy link to this message
-
Re: Is "synchronized" required?
Bing Li 2013-02-04, 20:32
Dear Ted and Harsh,

I am sorry I didn't keep the exceptions. It occurred many days ago. My
current version is 0.92.

Now "synchronized" is removed. Is it correct?

I will test if such exceptions are raised. I will let you know.

Thanks!

Best wishes,
Bing
On Tue, Feb 5, 2013 at 4:25 AM, Ted Yu <[EMAIL PROTECTED]> wrote:
> Bing:
> Use pastebin.com instead of attaching exception report.
>
> What version of HBase are you using ?
>
> Thanks
>
>
> On Mon, Feb 4, 2013 at 12:21 PM, Harsh J <[EMAIL PROTECTED]> wrote:
>>
>> What exceptions do you actually receive - can you send them here?
>> Knowing that is key to addressing your issue.
>>
>> On Tue, Feb 5, 2013 at 1:50 AM, Bing Li <[EMAIL PROTECTED]> wrote:
>> > Dear all,
>> >
>> > When writing data into HBase, sometimes I got exceptions. I guess they
>> > might be caused by concurrent writings. But I am not sure.
>> >
>> > My question is whether it is necessary to put "synchronized" before
>> > the writing methods? The following lines are the sample code.
>> >
>> > I think the directive, synchronized, must lower the performance of
>> > writing. Sometimes concurrent writing is needed in my system.
>> >
>> > Thanks so much!
>> >
>> > Best wishes,
>> > Bing
>> >
>> > public synchronized void AddDomainNodeRanks(String domainKey, int
>> > timingScale, Map<String, Double> nodeRankMap)
>> > {
>> >       List<Put> puts = new ArrayList<Put>();
>> >       Put domainKeyPut;
>> >       Put timingScalePut;
>> >       Put nodeKeyPut;
>> >       Put rankPut;
>> >
>> >       byte[] domainNodeRankRowKey;
>> >
>> >       for (Map.Entry<String, Double> nodeRankEntry :
>> > nodeRankMap.entrySet())
>> >       {
>> >           domainNodeRankRowKey >> > Bytes.toBytes(RankStructure.DOMAIN_NODE_RANK_ROW +
>> > Tools.GetAHash(domainKey + timingScale + nodeRankEntry.getKey()));
>> >
>> >          domainKeyPut = new Put(domainNodeRankRowKey);
>> >          domainKeyPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
>> > RankStructure.DOMAIN_NODE_RANK_DOMAIN_KEY_COLUMN,
>> > Bytes.toBytes(domainKey));
>> >          puts.add(domainKeyPut);
>> >
>> >          timingScalePut = new Put(domainNodeRankRowKey);
>> >          timingScalePut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
>> > RankStructure.DOMAIN_NODE_RANK_TIMING_SCALE_COLUMN,
>> > Bytes.toBytes(timingScale));
>> >         puts.add(timingScalePut);
>> >
>> >         nodeKeyPut = new Put(domainNodeRankRowKey);
>> >         nodeKeyPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
>> > RankStructure.DOMAIN_NODE_RANK_NODE_KEY_COLUMN,
>> > Bytes.toBytes(nodeRankEntry.getKey()));
>> >         puts.add(nodeKeyPut);
>> >
>> >         rankPut = new Put(domainNodeRankRowKey);
>> >         rankPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
>> > RankStructure.DOMAIN_NODE_RANK_RANKS_COLUMN,
>> > Bytes.toBytes(nodeRankEntry.getValue()));
>> >         puts.add(rankPut);
>> >      }
>> >
>> >      try
>> >      {
>> >          this.rankTable.put(puts);
>> >      }
>> >      catch (IOException e)
>> >      {
>> >          e.printStackTrace();
>> >      }
>> > }
>>
>>
>>
>> --
>> Harsh J
>
>