Here is the scenario on 0.98 with zk-less assignment
The master gets an OPEN RPC call from region server.
So, it moves the region state from PENDING_OPEN to OPEN.
But, the call timeouts on the region server and region server retries sending the OPEN call. However, now the master throws an Exception saying the region is not PENDING_OPEN. So, the region servers aborts the region on receiving that exception and sends FAILED_OPEN to master. But the master cannot change its state from FAILED_OPEN to OPEN, so eventually the master keeps the state as OPEN while the actual region is no longer open on region server.
The master should not throw an exception on receiving OPEN RPC calls multiple times.