I have a path test on Amazon S3 with a file named "xx?a=b.rtf" in the folder. Now I will list the step of how to reproduce the issue.
1. mount the S3 path like this
2. list the files of mounted path
3. stop the master, and then start it.
The master will be failed with error like this
I found the reason why restarting the master failed. In the 2nd step above, Alluxio will generate an inode file journal entry with file name "xx?a=b.rtf", and then a complete file journal entry. When processing the complete entry in the restart process of the master, InodeTree.lockFullInodePath will be called, the codes is listed below.
path.getPath() will return "/tmp/aws/xx", and obviously this path can not be found in the inode tree.
Fixing only this point is very easy. But AlluxioURI.getPath is used more than 200 times, I'm doubting that other place may be not correct also.
Further more, we can not claim the under file system for special characters like "?" does not exist in file name.