A Coprocessor override "public InternalScanner preFlush(final Store store, final InternalScanner scanner)" and return NULL when calling this method, will cancel flush request, leaving snapshot un-flushed, and no new storefile created. But the HRegion.internalFlushCache still set down memstoreSize to 0 by totalFlushableSize.
If there's no write requests anymore, the memstoreSize will remaining as 0, and no more flush quests will be processed because of the checking of memstoreSize.get() <=0 at the beginning of internalFlushCache.
This issue may not cause data loss, but it will confuse coprocessor users. If we argree with this, I'll apply a patch later.