I think the IW integrated IR needs a rule regarding the behavior of IW.flush and IR.flush. There will need to be a flush lock that is shared between the IW and IR. The lock is acquired at the beginning of a flush and released immediately after a successful or unsuccessful call. We will need to share this lock down to the SegmentReader level as presumably IR.getSequentialReaders may be called and operated on individually.
A few questions that need to be answered as to desired behavior. What happens when IW flushes w/deletes and IR has pending deletes not flushed yet? Can we automatically flush the IR deletes? If not automatically flushed are the IR deletes still valid and can the IR later flush them and not create a conflict (I think this is doable)? Or does the reader become readonly and IR.reopen must be called to obtain the new deletes? In the reverse scenario where IW has pending deletes and IR flushes deletes, are there issues that arise when IW later flushes? I think if it's made clear to the user the implications of using IR and IW in combination for deletes then there should not be an issue with supporting deletes from IR and IW. (I found another way to format with hard line breaks http://emailformattool.com/)