Did a review on Writables in hbase. This issue was originally about purge of migration code. Then (I) warped it to be about purge of Writables. Writeables should be banished from codebase but it is a big job still going by examination. So, filed a separate issue to do that – HBASE-18790-- and lets return this issue to its original intent, purge of migration code.
HBASE-18754 is about getting rid of Writable from TimeRangeTracker. I don't see any usage of 0.94-0.96 migration code in TRT. So, not a concern for this JIRA.
For TablePermission/Permission/UserPermission, we read permissions from acl table on initialization of accesscontroller in the loadAll method. We scan the acl and load up a Map of perms. We don't use the TablePermission Writable deserializing here; we just serialize the tablename raw bytes as part of row key. It is hard to follow what is going on – comments don't agree w/ code – and it needs some cleanup but safe to say no HbaseObjectWritableFor96Migration involved.
HbaseObjectWritableFor96Migration is used in one place only, serializing/deserializing TablePermission in test; actual TablePermission serialization into acl table goes another route and does not use HbaseObjectWritableFor96Migration so safe to purge.
MetaWriter doesn't use HbaseObjectWritableFor96Migration. It should be purged but can do in another issue.
So I'm +1 on the attached patch. Let me apply.