the "hack" to keep track of files written to in FSDirectory, to filter them when calling sync is heavily broken. mikemccand already opened an issue, which was abandoned then.
In fact handling this in FSDirectory is a hack and broken! If IndexWriter is itsself not able to correctly handle tracking the files, it is also his repsonsibilty to do this. We already have a class that can do this: TrackingDirectoryWrapper. IndexWriter should use an instance of this class to track those stale files (until the problem is solved).
I would like to keep FSDirectory clean from this, especially, as this is broken anyways: If somebody has another directory impl like HDFS or Infinispan, the problem still persists. The base directory should throw an IOException if trying to sync a file that does not exist!