o A database write failure when calling IMap.flush() does not throw an Exception.
You are right, it should delegate map-store exception to caller side. And it will by version 2.3.
o It seems that IMap.flush() is a local operation, meaning we will have to call flush() on every node?
Yes, see javadoc of IMap.flush() ;
If this map has a MapStore and write-delay-seconds is
bigger than 0 (write-behind) then this method flushes
all the local dirty entries by calling MapStore.storeAll()