--- FileDataStore.java 23 Nov 2010 21:48:23 -0000 1.1 +++ FileDataStore.java 23 Nov 2010 21:49:22 -0000 @@ -199,10 +199,13 @@ // stream length and the message digest of the stream long length = 0; MessageDigest digest = MessageDigest.getInstance(DIGEST); - OutputStream output = new DigestOutputStream( - new FileOutputStream(temporary), digest); + FileOutputStream fos = new FileOutputStream(temporary); + OutputStream output = new DigestOutputStream(fos , digest); try { length = IOUtils.copyLarge(input, output); + // make sure all java buffers are flushed to OS, then fdsync() data + output.flush(); + fos.getFD().sync(); } finally { output.close(); }