Martin Buchholz wrote:
:

I suppose we'll sadly have to back out all the changes for 6631352.
Another strategy is to open the file in FILE_WRITE_DATA mode as before,
but to make each individual write work in append mode.
Another look at the msdn documentation suggests that this is possible
(did I miss this when I explored the docs a year ago?)

http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx

Use WriteFile with a non-null OVERLAPPED, with Offset = OffsetHigh = 0xffffffff

"To write to the end of file, specify both the Offset and OffsetHigh
members of the OVERLAPPED structure as 0xFFFFFFFF. This is
functionally equivalent to previously calling the CreateFile function
to open hFile using FILE_APPEND_DATA access."

The above has a good chance of properly fixing 6631352.
I agree this is the approach to try. I've used WriteFile for append mode using this approach in another context and it worked although I don't recall ever checking its atomicity. The MSDN documentation is never clear on such topics but the AtomicAppend test that you included with these changes can quickly check.

What should the process code do, given that it doesn't control
how the subprocess will perform individual writes?
Maybe ProcessBuilder can open the file itself in append mode rather than using FileOutputStream.

-Alan.

Reply via email to