Hi,

I have a basic question about Endpoint coprocessors.

Suppose I want to write a coprocessor that returns the total number of memstore 
bytes used by a table.

I can write code that loops through all the regions, asking their region 
servers to tell me the memstore bytes for each given region, and then add them 
all up.

Such code, of course, will have a RegionServer talking to other RegionServers 
in the cluster.

Is there any problem with this? For example, when a RegionServer does an RPC to 
another RegionServer, does that tie up a thread in the calling RegionServer? 
And if so, and if my coprocessor is popular, might I get deadlocks or thread 
exhaustion errors if multiple RegionServers run my coprocessor?

The more general architectural question is, should an EndPoint coprocessor 
limit itself to the regions that are on its own RegionServer? Or does HBase 
possess appropriate layers to robustly manage prolific cross-server traffic?

Thanks,

Dave

Reply via email to