Commit b294755
[Feature] UUIDs, protocol versioning, v2 protocol w/ dag-cbor messaging (#332)
* feat(net): initial dag-cbor protocol support
also added first roundtrip benchmark
* feat(requestid): use uuids for requestids
Ref: ipfs/go-graphsync#278
Closes: ipfs/go-graphsync#279
Closes: ipfs/go-graphsync#281
* fix(requestmanager): make collect test requests with uuids sortable
* fix(requestid): print requestids as string uuids in logs
* fix(requestid): use string as base type for RequestId
* chore(requestid): wrap requestid string in a struct
* feat(libp2p): add v1.0.0 network compatibility
* chore(net): resolve most cbor + uuid merge problems
* feat(net): to/from ipld bindnode types, more cbor protoc improvements
* feat(net): introduce 2.0.0 protocol for dag-cbor
* fix(net): more bindnode dag-cbor protocol fixes
Not quite working yet, still need some upstream fixes and no extensions work
has been attempted yet.
* chore(metadata): convert metadata to bindnode
* chore(net,extensions): wire up IPLD extensions, expose as Node instead of []byte
* Extensions now working with new dag-cbor network protocol
* dag-cbor network protocol still not default, most tests are still exercising
the existing v1 protocol
* Metadata now using bindnode instead of cbor-gen
* []byte for deferred extensions decoding is now replaced with datamodel.Node
everywhere. Internal extensions now using some form of go-ipld-prime
decode to convert them to local types (metadata using bindnode, others using
direct inspection).
* V1 protocol also using dag-cbor decode of extensions data and exporting the
bytes - this may be a breaking change for exising extensions - need to check
whether this should be done differently. Maybe a try-decode and if it fails
export a wrapped Bytes Node?
* fix(src): fix imports
* fix(mod): clean up go.mod
* fix(net): refactor message version format code to separate packages
* feat(net): activate v2 network as default
* fix(src): build error
* chore: remove GraphSyncMessage#Loggable
Ref: ipfs/go-graphsync#332 (comment)
* chore: remove intermediate v1.1 pb protocol message type
v1.1.0 was introduced to start the transition to UUID RequestIDs. That
change has since been combined with the switch to DAG-CBOR messaging format
for a v2.0.0 protocol. Thus, this interim v1.1.0 format is no longer needed
and has not been used at all in a released version of go-graphsync.
Fixes: filecoin-project/lightning-planning#14
* fix: clarify comments re dag-cbor extension data
As per dission in ipfs/go-graphsync#338, we are going
to be erroring on extension data that is not properly dag-cbor encoded from now
on
* feat: new LinkMetadata iface, integrate metadata into Response type (#342)
* feat(metadata): new LinkMetadata iface, integrate metadata into Response type
* LinkMetadata wrapper around existing metadata type to allow for easier
backward-compat upgrade path
* integrate metadata directly into GraphSyncResponse type, moving it from an
optional extension
* still deal with metadata as an extension for now—further work for v2 protocol
will move it into the core message schema
Ref: ipfs/go-graphsync#335
* feat(metadata): move metadata to core protocol, only use extension in v1 proto
* fix(metadata): bindnode expects Go enum strings to be at the type level
* fix(metadata): minor fixes, tidy up naming
* fix(metadata): make gofmt and staticcheck happy
* fix(metadata): docs and minor tweaks after review
Co-authored-by: Daniel Martí <mvdan@mvdan.cc>
* fix: avoid double-encode for extension size estimation
Closes: filecoin-project/lightning-planning#15
* feat(requesttype): introduce RequestType enum to replace cancel&update bools (#352)
Closes: ipfs/go-graphsync#345
* fix(metadata): extend round-trip tests to byte representation (#350)
* feat!(messagev2): tweak dag-cbor message schema (#354)
* feat!(messagev2): tweak dag-cbor message schema
For:
1. Efficiency: compacting the noisy structures into tuples representations and
making top-level components of a message optional.
2. Migrations: providing a secondary mechanism to lean on for versioning if we
want a gentler upgrade path than libp2p protocol versioning.
Closes: ipfs/go-graphsync#351
* fix(messagev2): adjust schema per feedback
* feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID (#355)
* feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID
Closes: ipfs/go-graphsync#349
* fixup! feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID
* fixup! feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID
when using error type T, use *T with As, rather than **T
* fixup! feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID
* fixup! feat(graphsync): unify req & resp Pause, Unpause & Cancel by RequestID
Co-authored-by: Daniel Martí <mvdan@mvdan.cc>
* feat: SendUpdates() API to send only extension data to via existing request
* fix(responsemanager): send update while completing
If request has finished selector traversal but is still sending blocks,
I think it should be possible to send updates. As a side effect, this
fixes our race.
Logically, this makes sense, cause our external indicator that we're
done (completed response listener) has not been called.
* fix(requestmanager): revert change to pointer type
* Refactor async loading for simplicity and correctness (#356)
* feat(reconciledloader): first working version of reconciled loader
* feat(traversalrecorder): add better recorder for traversals
* feat(reconciledloader): pipe reconciled loader through code
style(lint): fix static checks
* Update requestmanager/reconciledloader/injest.go
Co-authored-by: Rod Vagg <rod@vagg.org>
* feat(reconciledloader): respond to PR comments
Co-authored-by: Rod Vagg <rod@vagg.org>
* fix(requestmanager): update test for rebase
Co-authored-by: Daniel Martí <mvdan@mvdan.cc>
Co-authored-by: hannahhoward <hannah@hannahhoward.net>1 parent 564683c commit b294755
1 file changed
Lines changed: 5 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
| 95 | + | |
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
104 | | - | |
| 104 | + | |
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
114 | | - | |
| 114 | + | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| |||
0 commit comments