From 35ca2be34400e86537bbf6eb0773e3fd08a51ad8 Mon Sep 17 00:00:00 2001 From: Philip Monk Date: Thu, 7 May 2020 21:15:35 -0700 Subject: [PATCH 1/2] gall: clear outstanding ack queue to breaching ships fixes #2867 --- pkg/arvo/sys/vane/gall.hoon | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/arvo/sys/vane/gall.hoon b/pkg/arvo/sys/vane/gall.hoon index c84c41f721..c12ab99897 100644 --- a/pkg/arvo/sys/vane/gall.hoon +++ b/pkg/arvo/sys/vane/gall.hoon @@ -423,6 +423,12 @@ =. mo-core (mo-untrack-ship ship) =. mo-core (mo-filter-queue ship) =/ agents=(list [name=term =running-agent]) ~(tap by running.agents.state) + =. outstanding.agents.state + %- malt + %+ skip ~(tap by outstanding.agents.state) + |= [[=wire duct] (qeu remote-request)] + =(/sys/way/(scot %p ship) (scag 3 wire)) + :: |- ^+ mo-core ?~ agents mo-core From 54e550d229cf351546843b43b0f74e595e33ba62 Mon Sep 17 00:00:00 2001 From: Philip Monk Date: Thu, 7 May 2020 21:18:25 -0700 Subject: [PATCH 2/2] gall: clear outstanding ack queue on-load This will fix the issue described in #2867 for ducts that have already triggered the bug. This will also send spurious acks for any messages that are outstanding at the time of the upgrade, but I don't believe this will cause a serious problem. --- bin/solid.pill | 4 ++-- pkg/arvo/sys/vane/gall.hoon | 24 ++++++++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/bin/solid.pill b/bin/solid.pill index fe0179c553..78c0ab824a 100644 --- a/bin/solid.pill +++ b/bin/solid.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecfe53c9e00d8cba244c85eb0ec0ed3b4e8ac07737bb0c6a7aa57d6c52f52c85 -size 15993675 +oid sha256:8da3208fcb4424da285159aa3d923bba941ad25a026b30ab0e58e54f4ecac80b +size 12885759 diff --git a/pkg/arvo/sys/vane/gall.hoon b/pkg/arvo/sys/vane/gall.hoon index c12ab99897..76b57ac288 100644 --- a/pkg/arvo/sys/vane/gall.hoon +++ b/pkg/arvo/sys/vane/gall.hoon @@ -55,7 +55,7 @@ ++ state $: :: state version :: - %4 + %5 :: agents by ship :: =agents @@ -1685,16 +1685,32 @@ =? all-state ?=(%3 -.all-state) (state-3-to-4 all-state) :: - ?> ?=(%4 -.all-state) + =? all-state ?=(%4 -.all-state) + (state-4-to-5 all-state) + :: + ?> ?=(%5 -.all-state) gall-payload(state all-state) :: :: +all-state: upgrade path :: - ++ all-state $%(state-0 state-1 state-2 state-3 ^state) + ++ all-state $%(state-0 state-1 state-2 state-3 state-4 ^state) + :: + ++ state-4-to-5 + |= =state-4 + ^- ^state + %= state-4 + - %5 + outstanding.agents ~ + == + :: + ++ state-4 + $: %4 + =agents + == :: ++ state-3-to-4 |= =state-3 - ^- ^state + ^- state-4 %= state-3 - %4 outstanding.agents ~