HDFS-6800, we can encounter the following scenario:
- We start with DN software version -55 and initiate a rolling upgrade to version -56
- We delete some blocks, and they are moved to trash
- We roll back to DN software version -55 using the -rollback flag – since we are running the old code (prior to this patch), we will restore the previous directory but will not delete the trash
- We append to some of the blocks that were deleted in step 2
- We then restart a DN that contains blocks that were appended to – since the trash still exists, it will be restored at this point, the appended-to blocks will be overwritten, and we will lose the appended data
So I think we need to avoid writing anything to the trash directory if we have a previous directory.
Thanks to james.thomas for reporting this.