Skip to content

Commit 6109651

Browse files
Revert "Accept missing blocks without failing data transfer (#291)" (#294)
This reverts commit b442027. (still contains tracing improvements and module dep updates) Co-authored-by: Jiaying Wang <[email protected]>
1 parent eb62ceb commit 6109651

16 files changed

+3
-428
lines changed

channelmonitor/channelmonitor_test.go

-4
Original file line numberDiff line numberDiff line change
@@ -614,10 +614,6 @@ func (m *mockChannelState) ReceivedCidsTotal() int64 {
614614
panic("implement me")
615615
}
616616

617-
func (m *mockChannelState) MissingCids() []cid.Cid {
618-
panic("implement me")
619-
}
620-
621617
func (m *mockChannelState) QueuedCidsTotal() int64 {
622618
panic("implement me")
623619
}

channels/channel_state.go

-8
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ type channelState struct {
6161
// stages tracks the timeline of events related to a data transfer, for
6262
// traceability purposes.
6363
stages *datatransfer.ChannelStages
64-
65-
// missingCids are the set of CIDS that were missing and skipped over in the data transfer
66-
missingCids []cid.Cid
6764
}
6865

6966
// EmptyChannelState is the zero value for channel state, meaning not present
@@ -195,10 +192,6 @@ func (c channelState) OtherPeer() peer.ID {
195192
return c.sender
196193
}
197194

198-
func (c channelState) MissingCids() []cid.Cid {
199-
return c.missingCids
200-
}
201-
202195
// Stages returns the current ChannelStages object, or an empty object.
203196
// It is unsafe for the caller to modify the return value, and changes may not
204197
// be persisted. It should be treated as immutable.
@@ -237,7 +230,6 @@ func fromInternalChannelState(c internal.ChannelState, voucherDecoder DecoderByT
237230
voucherResultDecoder: voucherResultDecoder,
238231
voucherDecoder: voucherDecoder,
239232
stages: c.Stages,
240-
missingCids: c.MissingCids,
241233
}
242234
}
243235

channels/channels.go

-5
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,6 @@ func (c *Channels) ReceiveDataError(chid datatransfer.ChannelID, err error) erro
354354
return c.send(chid, datatransfer.ReceiveDataError, err)
355355
}
356356

357-
// CIDMissing indicates the sender is missing a section of the graph in the response
358-
func (c *Channels) CIDMissing(chid datatransfer.ChannelID, cid cid.Cid) error {
359-
return c.send(chid, datatransfer.CIDMissing, cid)
360-
}
361-
362357
// HasChannel returns true if the given channel id is being tracked
363358
func (c *Channels) HasChannel(chid datatransfer.ChannelID) (bool, error) {
364359
return c.stateMachines.Has(chid)

channels/channels_fsm.go

-29
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package channels
22

33
import (
4-
"github.com/ipfs/go-cid"
54
logging "github.com/ipfs/go-log/v2"
65
cbg "github.com/whyrusleeping/cbor-gen"
76

@@ -110,24 +109,6 @@ var ChannelEvents = fsm.Events{
110109
chst.AddLog("")
111110
return nil
112111
}),
113-
114-
fsm.Event(datatransfer.CIDMissing).FromMany(transferringStates...).ToJustRecord().
115-
Action(func(chst *internal.ChannelState, missing cid.Cid) error {
116-
// TODO: find a more efficient way to do this
117-
var found bool
118-
for _, c := range chst.MissingCids {
119-
if c.Equals(missing) {
120-
found = true
121-
break
122-
}
123-
}
124-
if !found {
125-
chst.MissingCids = append(chst.MissingCids, missing)
126-
}
127-
chst.AddLog("")
128-
return nil
129-
}),
130-
131112
fsm.Event(datatransfer.Disconnected).FromAny().ToNoChange().Action(func(chst *internal.ChannelState, err error) error {
132113
chst.Message = err.Error()
133114
chst.AddLog("data transfer disconnected: %s", chst.Message)
@@ -250,12 +231,6 @@ var ChannelEvents = fsm.Events{
250231
return nil
251232
}),
252233

253-
fsm.Event(datatransfer.CleanupCompletePartial).
254-
From(datatransfer.Completing).To(datatransfer.PartiallyCompleted).Action(func(chst *internal.ChannelState) error {
255-
chst.AddLog("")
256-
return nil
257-
}),
258-
259234
// will kickoff state handlers for channels that were cleaning up
260235
fsm.Event(datatransfer.CompleteCleanupOnRestart).FromAny().ToNoChange().Action(func(chst *internal.ChannelState) error {
261236
chst.AddLog("")
@@ -278,9 +253,6 @@ func cleanupConnection(ctx fsm.Context, env ChannelEnvironment, channel internal
278253
}
279254
env.CleanupChannel(datatransfer.ChannelID{ID: channel.TransferID, Initiator: channel.Initiator, Responder: channel.Responder})
280255
env.Unprotect(otherParty, datatransfer.ChannelID{ID: channel.TransferID, Initiator: channel.Initiator, Responder: channel.Responder}.String())
281-
if channel.Status == datatransfer.Completing && len(channel.MissingCids) > 0 {
282-
return ctx.Trigger(datatransfer.CleanupCompletePartial)
283-
}
284256
return ctx.Trigger(datatransfer.CleanupComplete)
285257
}
286258

@@ -296,7 +268,6 @@ var ChannelFinalityStates = []fsm.StateKey{
296268
datatransfer.Cancelled,
297269
datatransfer.Completed,
298270
datatransfer.Failed,
299-
datatransfer.PartiallyCompleted,
300271
}
301272

302273
// IsChannelTerminated returns true if the channel is in a finality state

channels/channels_test.go

-30
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"testing"
77
"time"
88

9-
"github.com/ipfs/go-cid"
109
"github.com/ipfs/go-datastore"
1110
dss "github.com/ipfs/go-datastore/sync"
1211
basicnode "github.com/ipld/go-ipld-prime/node/basic"
@@ -222,35 +221,6 @@ func TestChannels(t *testing.T) {
222221
require.Equal(t, uint64(100), state.Sent())
223222
})
224223

225-
t.Run("missing cids", func(t *testing.T) {
226-
ds := dss.MutexWrap(datastore.NewMapDatastore())
227-
228-
channelList, err := channels.New(ds, notifier, decoderByType, decoderByType, &fakeEnv{}, peers[0])
229-
require.NoError(t, err)
230-
err = channelList.Start(ctx)
231-
require.NoError(t, err)
232-
233-
_, err = channelList.CreateNew(peers[0], tid1, cids[0], selector, fv1, peers[0], peers[0], peers[1])
234-
require.NoError(t, err)
235-
state := checkEvent(ctx, t, received, datatransfer.Open)
236-
require.Equal(t, datatransfer.Requested, state.Status())
237-
238-
err = channelList.CIDMissing(datatransfer.ChannelID{Initiator: peers[0], Responder: peers[1], ID: tid1}, cids[0])
239-
require.NoError(t, err)
240-
state = checkEvent(ctx, t, received, datatransfer.CIDMissing)
241-
require.Equal(t, []cid.Cid{cids[0]}, state.MissingCids())
242-
243-
err = channelList.CIDMissing(datatransfer.ChannelID{Initiator: peers[0], Responder: peers[1], ID: tid1}, cids[1])
244-
require.NoError(t, err)
245-
state = checkEvent(ctx, t, received, datatransfer.CIDMissing)
246-
require.Equal(t, []cid.Cid{cids[0], cids[1]}, state.MissingCids())
247-
248-
err = channelList.CIDMissing(datatransfer.ChannelID{Initiator: peers[0], Responder: peers[1], ID: tid1}, cids[0])
249-
require.NoError(t, err)
250-
state = checkEvent(ctx, t, received, datatransfer.CIDMissing)
251-
require.Equal(t, []cid.Cid{cids[0], cids[1]}, state.MissingCids())
252-
})
253-
254224
t.Run("pause/resume", func(t *testing.T) {
255225
state, err := channelList.GetByID(ctx, datatransfer.ChannelID{Initiator: peers[0], Responder: peers[1], ID: tid1})
256226
require.NoError(t, err)

channels/internal/internalchannel.go

-3
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ type ChannelState struct {
7373
//
7474
// EXPERIMENTAL; subject to change.
7575
Stages *datatransfer.ChannelStages
76-
77-
// MissingCids are the set of CIDS that were missing and skipped over in the data transfer
78-
MissingCids []cid.Cid
7976
}
8077

8178
// AddLog takes an fmt string with arguments, and adds the formatted string to

channels/internal/internalchannel_cbor_gen.go

+1-54
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

events.go

-9
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,6 @@ const (
110110

111111
// Opened is fired when a request for data is sent from this node to a peer
112112
Opened
113-
114-
// CIDMissing is fired when the sender is missing a section of the graph in the response
115-
CIDMissing
116-
117-
// CleanupCompletePartial causes a completing request to transition to a PartiallyCompleted state
118-
// rather than a full Completed state
119-
CleanupCompletePartial
120113
)
121114

122115
// Events are human readable names for data transfer events
@@ -151,8 +144,6 @@ var Events = map[EventCode]string{
151144
ReceiveDataError: "ReceiveDataError",
152145
TransferRequestQueued: "TransferRequestQueued",
153146
RequestCancelled: "RequestCancelled",
154-
CIDMissing: "CIDMissing",
155-
CleanupCompletePartial: "CleanupCompletePartial",
156147
}
157148

158149
// Event is a struct containing information about a data transfer event

impl/events.go

-4
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,6 @@ func (m *manager) OnContextAugment(chid datatransfer.ChannelID) func(context.Con
337337
}
338338
}
339339

340-
func (m *manager) OnLinkMissing(chid datatransfer.ChannelID, link ipld.Link) error {
341-
return m.channels.CIDMissing(chid, link.(cidlink.Link).Cid)
342-
}
343-
344340
func (m *manager) receiveRestartRequest(chid datatransfer.ChannelID, incoming datatransfer.Request) (datatransfer.Response, error) {
345341
log.Infof("channel %s: received restart request", chid)
346342

0 commit comments

Comments
 (0)