Hi all,

As the first release is almost complete (72 hours is coming), we need to
consider the compatibility of IoTDB in the future version.

Zhu has give a PR [1] for modify the magic number of TsFile.
And, the compatibility problem is quite occurs: in Tian Jiang's PR [2],
fileMetadata is modified so if we do not handle the case, then error
happens if we use the branch code to read file data in 0.8.0.

I list the potential compatibility problems:

1. TsFile has the compatibility problem.

The question is, do we need to update the magic number for each version?
e.g., in IoTDB v0.8.1, change the magic number from "TsFilev0.8.0" to
"TsFilev0.8.1", and in IoTDB v0.9.0, change the magic number from
"TsFilev0.8.0" to "TsFilev0.9.0".

If so, we can maintain a compatible list, e.g., IoTDB v1.0 supports
TsFilev0.8.0~TsFilev1.0.0. If the magic number is incompatible, then throw
exception.

Besides, we can provide a script to upgrade the file format.

Or, we can keep the Magic number constant if the versions are compatible.
e.g., if IoTDB v1.0 supports tsfiles that written by IoTBv0.8~v1.0, we
always use TsFilev0.8.0 as the magic number.

If so, we find the magic number is incorrect, we throw exception.

2. IoTDB system data has also the compatibility problem. However, current
these files do not have a marker to show which version they are.

3. IoTDB RPC module also has the problem. For example, current master
branch is incompatible with v0.8 because of a PR introduced by Yue su or
Leirui (I forget the PR number). So,  the client need to tell the server
which rpc protocol it uses.

I also create an issue to discuss and work on it:
https://issues.apache.org/jira/browse/IOTDB-165

Best,

[1] https://github.com/apache/incubator-iotdb/pull/337
[2] https://github.com/apache/incubator-iotdb/pull/258
-----------------------------------
Xiangdong Huang
School of Software, Tsinghua University

 黄向东
清华大学 软件学院

Reply via email to