IIUC, we know the storage type even for an old client since it passes it in the writeBlock request. Can an old client correctly pass along an unknown StorageType (e.g. PROVIDED)?
I think you understood correctly. I don't think an old client will be able to deserialise a PROVIDED StorageType from the protobuf, so it will fail to pass along that StorageType (though I have not yet done the cross-version testing with Hadoop 2.6). I think this is the same as would be the case any time a new StorageType is introduced (e.g. if we hypothetically added StorageType.NVME, StorageType.SMR, etc.). Maybe the forward compatibility of StorageTypes is another JIRA I should raise?
If so, then I see how this works; essentially, only require storageIDs when writing to provided storage.
For 3.0.0-alpha4 I can also revert
HDFS-9807 while we figure out this JIRA. We did this internally to unblock testing.
I'm traveling today so I won't be able to furnish a patch just yet. What's your time frame for tagging alpha4?