Additional information)
I am currently using hbase-1, but I am preparing to upgrade to hbase-2.

2020. 3. 17. 11:51, Kang Minwoo 
<[email protected]<mailto:[email protected]>> 작성:

Thank you for kindly reply.

I think the solution you gave me is really good.

I didn't know that before, so I took a different approach.
I made a new configuration to check that a system is stopped by time.
And I create a issue[1] and attach a patch[2].

I am not sure this is a proper approach.
I'd appreciate your advice.

[1]: https://issues.apache.org/jira/browse/HBASE-23968
[2]: https://github.com/apache/hbase/pull/1274/files


2020. 3. 17. 01:55, Stack 
<[email protected]<mailto:[email protected]><mailto:[email protected]>> 작성:

Thanks for the detail below. Helped.

In your custom scanner, can you check RegionCoprocessorEnvironment on each next 
invocation? RCE gives you access to the hosting RegionServer via

/** @return reference to the region server services */
RegionServerServices getRegionServerServices();

You can ask RegionServerServices... if it is stopping [2].

(This facility is removed in hbase2 it seems but is available to you in hbase1).

S

2. 
https://github.com/saintstack/hbase/blob/branch-1.2/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java#L51



On Sun, Mar 1, 2020 at 8:49 PM Kang Minwoo 
<[email protected]<mailto:[email protected]><mailto:[email protected]>>
 wrote:
HBase version is 1.2.9
The region was closed after a few minutes of about 1min.

I use a coprocessor that implements BaseRegionObserver.
The purpose is for deleting data with an expired retention period.

My coprocessor return Custom scanner in BaseRegionObserver.preCompact and when 
scan type is COMPACT_DROP_DELETES.
The custom scanner does only check row key (row key contain time) and if row 
key range is expired retention period, scanner returns empty List<Cell> result.

While the region does performCompaction[1], the region got a request that is a 
close region. writesEnabled is changed false. and then performCompaction is 
stopped only if writing bytes is over hbase.hstore.close.check.interval 
config[2].

In my case, there are too many expired retention period data. therefore the 
scanner returns nothing. so writing bytes is zero. It occurs pending close.

The reason why I do not use a TTL. Because the retention period changed 
dynamically by users.

[1]: 
https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java#L367
[2]: 
https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java#L420-L429

Best regards,
Minwoo Kang

________________________________________
보낸 사람: Stack 
<[email protected]<mailto:[email protected]><mailto:[email protected]>>
보낸 날짜: 2020년 2월 29일 토요일 02:07
받는 사람: Hbase-User
제목: Re: Is there any way to check the system stop is requested in 
performCompaction over time?

On Mon, Feb 24, 2020 at 8:20 PM Kang Minwoo 
<[email protected]<mailto:[email protected]><mailto:[email protected]>>
 wrote:

Hello Users.

Is there any way to check the system stop is requested in
performCompaction over time?

When the region got a close request, the region should wait there is no
compaction and flush.
However, in performCompaction method checked periodically only by write
bytes.
If write bytes is too small or scanner returns empty cells, the region
status persists pending close.

Best regards,
Minwoo Kang



Please provide a bit more context. Link to code. Version. Is Region not
closing?
Thanks,
S

Reply via email to