Resolution: Won't Fix
Affects Version/s: None
Fix Version/s: None
In the current code, there is a enum named DFS_CURRENT_VERSION. It is being used for three different purposes:
1. It is stored in the fsimage and represents the format of the fsimage.
2. It is stored in the "storage" file by the Datanodes. Thus, it represents the format of data on Datanodes.
3. It is used as a version of the Datanode Protocol.
The current implementation makes it difficult to change the fsimage format without affecting the Datanode Protocol. My proposal is to introduce three new constants, one for each of the functionality described above.
In the current code, we have:
public static final int DFS_CURRENT_VERSION = -3;
Instead, we can have:
public static final int DFS_FSIMAGE_CURRENT_VERSION = -3;
public static final int DFS_DATANODEPROTOCOL_CURRENT_VERSION = -3;
public static final int DFS_DATASTORAGE_CURRENT_VERSION = -3;
The first one is associated with the format of the fsimage/edits; the second one is associated with the communication procotol between the namenode and the datanode; the third one is associated with the format of the datastore on the datanodes (e.g. directory fanout).