The javadoc is not right -- I just committed a fix.
rollback() discards all changes since the last commit, or since the
IndexWriter was opened (if commit hasn't been called).
So in your case, doc1 is in the index but doc2 is not.
You can also call rollback() not having called prepareCommit(
A question about IndexWriter.rollback() logic. Its javadoc says that it "Close
the IndexWriter without committing any of the changes that have occurred since
it was opened." So if I do
1. Open IndexWriter
2. Add doc1
3. Commit (successfully)
4. Add doc2
5. PrepareCommit()
6. Rollback()