<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Chris,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 13, 2020 at 12:44 PM Chris Muller <<a href="mailto:ma.chris.m@gmail.com">ma.chris.m@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>The test case proves that it does.</div><div><br></div><div>The comment of the method is, </div><div><br></div><div>    "When writing, flush the current buffer out to disk." <br></div><div><br></div><div>I know what filesystem I deploy to, but Squeak appears to be silently ignoring this (rather important) expectation about #flush, that its own comment presents.</div></div></div></blockquote><div><br></div><div>We're talking linux right?  So the only change I see since Alistair's commit in 2018 is Nicolas' change that has to be harmless:</div><div><br></div><div>Aeolus.oscogvm$ git log platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c</div><div>commit e0d70a91864eca8f72947fe36d1865785482ed2e</div><div>Author: Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>></div><div>Date:   Thu Dec 27 12:10:34 2018 +0100</div><div><br></div><div>    Workaround S_ISFIFO to let MSVC compile FilePlugin</div><div><br></div><div>    Note: there is a possibility to create named pipe in windows</div><div>    <a href="https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipes">https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipes</a></div><div><br></div><div>    But named pipes cannot be intermixed with regular files.</div><div>    They are mounted on special named pipe file system (NPFS)</div><div>    <a href="https://stackoverflow.com/questions/21139790/where-on-windows-a-named-pipe-file-is-stored">https://stackoverflow.com/questions/21139790/where-on-windows-a-named-pipe-file-is-stored</a></div><div>    So I think that answering false to the query is a good solution.</div><div><br></div><div>commit 827ebe0ffbbf56abdee94fbdd519f00f7ddc0a27</div><div>Author: AlistairGrant <<a href="mailto:akgrant0710@gmail.com">akgrant0710@gmail.com</a>></div><div>Date:   Thu Nov 22 20:58:04 2018 +0100</div><div><br></div><div>    sqFilePluginBasicPrims.c: remove unused variable position</div><div><br></div><div>and Nicolas' change is only this:</div><div><br></div><div>diff --git a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c</div><div>index 0f2d6fe..df604fb 100755</div><div>--- a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c</div><div>+++ b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c</div><div>@@ -40,6 +40,12 @@</div><div> #include <limits.h></div><div> #include <stdio.h></div><div><br></div><div>+#ifdef _MSC_VER</div><div>+#ifndef S_ISFIFO</div><div>+#define S_ISFIFO(x) 0</div><div>+#endif</div><div>+#endif</div><div>+</div><div> #include "sqMemoryAccess.h"</div><div> #include "FilePlugin.h" /* must be included after sq.h */</div><div><br></div><div>So I don't see where to look for a change in flush behavior.  AFAICT there hasn't been one.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><br></div><div>  - Chris</div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 12, 2020 at 6:15 PM Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" target="_blank">leves@caesar.elte.hu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi Chris,<br>
<br>
Do you expect #flush to write the changes to disk?<br>
<br>
Levente<br>
<br>
On Sun, 12 Jan 2020, Chris Muller wrote:<br>
<br>
> Magma has been stable in 5.2 for a long time under an older VM, all tests pass.  But by changing ONLY the VM (not the image) to the new release-candidate, it fails the forward-recovery test.  This test tests the scenario of a<br>
> server failure during mid-write.  Unless I change StandardFileStream>>#flush as in Files-cmm.182, the recovery data which Magma relies on #flush to ensure is preserved is, in fact, not preserved.  It appears to be a breakage<br>
> of the contract which causes the test to fail.  This functionality is important to avoid corrupting databases.<br>
> I saw a discussion on the Cuis list in which someone was asserting that flush is no longer necessary(!!), and made a vague reference to a "thread on squeak-dev" which I never found.<br>
> <br>
> I hope this is just an oversight, otherwise I'll have to rely something like Files-cmm.182, which is half the speed of the old #flush.<br>
> <br>
> Best,<br>
>   Chris<br>
> <br>
></blockquote></div>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div></div></div>