In EventQueueBackingStoreFileV3 constructor, if it detects that the checkpoint and meta files have differing logWriteOrderIds, it throws a BadCheckpointException. Controls goes back to the exception handler in Log.replay() which attempts to delete all the files in checkpoint directory and start fresh. The same file names are reused when starting fresh.
Unfortunately this does not work on Windows since the deletion of the checkpoint file in the checkpointDir fails. The failure is due to the fact that the checkpoint file is memory mapped. Unless it is unmapped the deletion will not succeed... and unfortunately Java does not have unmap support. Windows does not permit deletion (or renaming) of files in use. The obvious thought i am having is that when starting fresh we delete whatever we can and invent a new file name for the ones we cant (i think for checkpoint file only) thoughts ? -roshan
