Hi,
from my experience this can occur when a real huge rollback is occurring (or multiple at the same time).
This might result in a stuck engine, which reacts to onstat but is permanently blocking in very long checkpoints.
You can monitor this in onstat -x (which will give you an "estimation" of the remaining rollback time).
Look for lines with very big values in the locks column and which started a big number of logs in the past.
The ugly thing here is that a rollback of a very long transaction (we encountered one with
a lot of sblobs involved recently) can take even longer as it took to produce the data.
Our situation occurred because there were >5 parallel rollbacks in progress.
(User did not get a response and retried multiple times ;))
There were about 100 logs to rollback, which took ages.
We decided to kill the engine (onmode did not work any more) and restart (because any other activity
was mostly blocked anyway).
This resulted in a rollback of the transactions very quickly, because at startup time,
a number of parallel cleaners are running which speeds up the rollback.
In our situation, rollback time initially was displayed with 2h, and was resolved with the
engine bounce in 4min.
onmode -z the long transactions does not help, because they are typically already in rollback,
which needs to complete.
Best,