[squeak-dev] new VM appears not to be flushing
Eliot Miranda
eliot.miranda at gmail.com
Mon Jan 13 20:55:13 UTC 2020
Hi Chris,
On Mon, Jan 13, 2020 at 12:44 PM Chris Muller <ma.chris.m at gmail.com> wrote:
> The test case proves that it does.
>
> The comment of the method is,
>
> "When writing, flush the current buffer out to disk."
>
> 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.
>
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:
Aeolus.oscogvm$ git log
platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
commit e0d70a91864eca8f72947fe36d1865785482ed2e
Author: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
Date: Thu Dec 27 12:10:34 2018 +0100
Workaround S_ISFIFO to let MSVC compile FilePlugin
Note: there is a possibility to create named pipe in windows
https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipes
But named pipes cannot be intermixed with regular files.
They are mounted on special named pipe file system (NPFS)
https://stackoverflow.com/questions/21139790/where-on-windows-a-named-pipe-file-is-stored
So I think that answering false to the query is a good solution.
commit 827ebe0ffbbf56abdee94fbdd519f00f7ddc0a27
Author: AlistairGrant <akgrant0710 at gmail.com>
Date: Thu Nov 22 20:58:04 2018 +0100
sqFilePluginBasicPrims.c: remove unused variable position
and Nicolas' change is only this:
diff --git a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
index 0f2d6fe..df604fb 100755
--- a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
+++ b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
@@ -40,6 +40,12 @@
#include <limits.h>
#include <stdio.h>
+#ifdef _MSC_VER
+#ifndef S_ISFIFO
+#define S_ISFIFO(x) 0
+#endif
+#endif
+
#include "sqMemoryAccess.h"
#include "FilePlugin.h" /* must be included after sq.h */
So I don't see where to look for a change in flush behavior. AFAICT there
hasn't been one.
>
> - Chris
>
>
>
> On Sun, Jan 12, 2020 at 6:15 PM Levente Uzonyi <leves at caesar.elte.hu>
> wrote:
>
>> Hi Chris,
>>
>> Do you expect #flush to write the changes to disk?
>>
>> Levente
>>
>> On Sun, 12 Jan 2020, Chris Muller wrote:
>>
>> > 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
>> > 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
>> > of the contract which causes the test to fail. This functionality is
>> important to avoid corrupting databases.
>> > 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.
>> >
>> > 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.
>> >
>> > Best,
>> > Chris
>> >
>> >
>
>
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200113/739a47fa/attachment.html>
More information about the Squeak-dev
mailing list
|