G-catalog-B 5: distribution and gitea look at every open transfer at the idle watch's start
A transfer whose idle key ended while the bundle was down was never dropped. Both hand mesh-sdk's FollowIdle their open transfers, which it gives Expired once the watch is taken. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
@@ -501,7 +501,7 @@ func main() {
|
||||
Transfers: parts.BusTransfers[holder.Opening](holder.TransfersState), Cap: parts.BusCap(holder.IncomingObjects), Idle: parts.BusArm(holder.IdleState)}
|
||||
v := &holder.Verbs{Holder: h, Catalog: store, Holds: kept[holder.Hold]{state: "holds", key: holder.Hold.Key}, Mirrors: mirrors{}}
|
||||
go followMirrors(v)
|
||||
go parts.FollowIdle(holder.IdleState, h.Expired, func(id string, dropped bool, err error) {
|
||||
go parts.FollowIdle(holder.IdleState, parts.IDs(h.Transfers), h.Expired, func(id string, dropped bool, err error) {
|
||||
if err != nil {
|
||||
logf("%v", err)
|
||||
return
|
||||
|
||||
@@ -51,9 +51,17 @@ func incomingTool(typ, seat string, holder func() (*packageseats.Holder, error))
|
||||
}
|
||||
}
|
||||
|
||||
// followIdle drops a transfer when its idle key ends (packageseats.Holder.Expired): the bus's marker is the event.
|
||||
// followIdle drops a transfer when its idle key ends (packageseats.Holder.Expired): the bus's marker is the event; at the
|
||||
// watch's start every open transfer is looked at too, so one that ended while the bundle was down is dropped.
|
||||
func followIdle(holder func() (*packageseats.Holder, error)) {
|
||||
parts.FollowIdle(packageseats.IdleState, func(id string) (bool, error) {
|
||||
open := func() ([]string, error) {
|
||||
h, err := holder()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("the holder cannot be made: %w", err)
|
||||
}
|
||||
return parts.IDs(h.Transfers)()
|
||||
}
|
||||
parts.FollowIdle(packageseats.IdleState, open, func(id string) (bool, error) {
|
||||
h, err := holder()
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("transfer %s's idle bound ended, but the holder cannot be made: %w", id, err)
|
||||
|
||||
Reference in New Issue
Block a user