[
https://issues.apache.org/jira/browse/HBASE-20881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16580586#comment-16580586
]
Duo Zhang commented on HBASE-20881:
-----------------------------------
The TestLockManager seems to be another problem. The code is like this
{code}
else if (procedure.getState() == ProcedureState.WAITING_TIMEOUT) {
LOG.trace("Added to timeoutExecutor {}", procedure);
timeoutExecutor.add(procedure);
}
public void add(Procedure<TEnvironment> procedure) {
assert procedure.getState() == ProcedureState.WAITING_TIMEOUT;
LOG.info("ADDED {}; timeout={}, timestamp={}", procedure,
procedure.getTimeout(),
procedure.getTimeoutTimestamp());
queue.add(new DelayedProcedure<>(procedure));
}
{code}
You can see that there is a WAITING_TIMEOUT check before adding, but in the add
method the assertion fails...
The full log
{noformat}
2018-08-14 17:30:10,342 DEBUG [Time-limited test]
procedure2.ProcedureExecutor(958): Stored pid=15, state=RUNNABLE,
hasLock=false; org.apache.hadoop.hbase.master.locking.LockProcedure,
namespace=namespace, type=EXCLUSIVE
2018-08-14 17:30:10,343 DEBUG [PEWorker-1] locking.LockProcedure(309): LOCKED
pid=15, state=RUNNABLE, hasLock=false;
org.apache.hadoop.hbase.master.locking.LockProcedure, namespace=namespace,
type=EXCLUSIVE
2018-08-14 17:30:10,348 INFO [PEWorker-1]
procedure2.ProcedureExecutor$WorkerThread(1822): ASSERT pid=15
java.lang.AssertionError
at
org.apache.hadoop.hbase.procedure2.TimeoutExecutorThread.add(TimeoutExecutorThread.java:81)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1573)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1319)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$900(ProcedureExecutor.java:77)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1820)
2018-08-14 17:30:10,349 WARN [PEWorker-1]
procedure2.ProcedureExecutor$WorkerThread(1836): Worker terminating UNNATURALLY
null
java.lang.AssertionError
at
org.apache.hadoop.hbase.procedure2.TimeoutExecutorThread.add(TimeoutExecutorThread.java:81)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1573)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1319)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$900(ProcedureExecutor.java:77)
at
org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1820)
{noformat}
Not too much useful information.
> Introduce a region transition procedure to handle all the state transition
> for a region
> ---------------------------------------------------------------------------------------
>
> Key: HBASE-20881
> URL: https://issues.apache.org/jira/browse/HBASE-20881
> Project: HBase
> Issue Type: Sub-task
> Components: amv2, proc-v2
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Priority: Major
> Fix For: 3.0.0, 2.2.0
>
> Attachments: HBASE-20881-v1.patch, HBASE-20881-v10.patch,
> HBASE-20881-v2.patch, HBASE-20881-v3.patch, HBASE-20881-v4.patch,
> HBASE-20881-v4.patch, HBASE-20881-v5.patch, HBASE-20881-v6.patch,
> HBASE-20881-v7.patch, HBASE-20881-v7.patch, HBASE-20881-v8.patch,
> HBASE-20881-v9.patch, HBASE-20881.patch
>
>
> Now have an AssignProcedure, an UnssignProcedure, and also a
> MoveRegionProcedure which schedules an AssignProcedure and an
> UnssignProcedure to move a region. This makes the logic a bit complicated, as
> MRP is not a RIT, so when SCP can not interrupt it directly...
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)