-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gateway: post-extraction GO API cleanup #61
Comments
when looking through this yesterday, a couple notes here as well:
|
You can use selectors here if you want but I plan to rip them out next week, reification and ADL layering is far too complex for what it's worth, they have no good multithreading support and they lead stuff like #56.
I already have an issue tracking this here: #139 |
@Jorropo - i'm worried about that plan/timing. selectors are what we have available for queries back to filecoin nodes for at least 6 months - if gateways start asking for a incompatible format we don't have support for that at either the saturn or at the SP level and it will make the current gateway transition take way longer. |
@willscott: when @Jorropo says API he means "internal Go API" not "HTTP API". What happens here has no bearing on GraphSync and Selectors being available from Filecoin SPs from a Rhea/Saturn perspective. What this API is going to look like and how we can use it to make various types of network requests is still TBD. I suspect this is the kind of thing we'll need to evaluate in a PR. I wouldn't be surprised if the Gateway code's API was higher level than either IPSL or Selectors (closer to what the Gateway code actually needs) such that people can plug in whatever processing APIs they need. Given the current atmosphere around graph descriptors I don't see IPLD Selectors or IPSL being used over the wire for an HTTP API |
|
I'm happy to have Hannah involved, her feedback would certainly be welcome. Ideally any HTTP API ends up as an IPIP to the Gateway spec which is going to have broader reach and therefore broader review/feedback. FYI my recollection of the last time we discussed this was that Hannah wanted the people working on the new gateways binary to negotiate this API with Saturn and then she would negotiate the APIs at the Saturn-L1 <-> Lassie boundary. Note: this HTTP API is a separate issue and task from this one though. |
Hey! I'm not totally clear how this concerns me. The Otherwise I'm not sure how this concerns our work. Tinker with your internals as you please. I don't expect to be using this code directly in Lassie, I don't think. |
Maybe I lack context on the larger libipfs migration though? Is the idea that we might want to use this inside of Lassie? |
Yes but probably not all of it. |
What is IPSL? Please let's not address "the right way to express graph queries" as a todo item here. |
@hannahhoward a simple to use tree selection interface for new internal (go API between packages) Kubo API. That happen to be serializable and deserializable with some compiler but this wont get merged now, and maybe never. We don't need this for anything now.
I don't claim it's the right way, I just claim it's easier to use and do less (which is a positive imo), while still covering almost all uses. |
It is getting noisy, so to clarify: We want to remove its dependency on Kubo's internals and other legacy, but without rewriting the entire thing, so its easier to use in the bifrost-gateway binary. With that in mind, I've dropped the initial review in #145 (review) and filled #149 for subdomain support. TBD-HTTP-API-for-fetching-partial-DAGs will be a separate issue. Currently discussing MVP set of "predefined graph queries" for existing, real world request types with Adin. When we have something worth sharing we will ping y'all on that for sure 👍 but it will be a separate issue/notion. 🙏 |
We're currently working on extracting the Gateway code from
kubo
togo-libipfs
(ipfs/kubo#8524). After the extraction, we should improve the code, such that it is more useable. There are currently a few points that, in my opinion, make the Gateway handler harder to use than it should:NodeAPI.Block()
, we only useGet
andStat
, but we are requiring the full interface (Get
,Put
,Rm
,Stat
).NodeAPI.Dag()
, we only useGet
, but we are requiring the fullAPIDagService
interface, which contains a lot more functions.Dag().Get
function. Perhaps we could add an option to that methodOffline: true
orLocalOnly: true
orNoFetch: true
instead. This would allow us to only require the consumers of the Gateway code to provide one Node API.Things to do:
The text was updated successfully, but these errors were encountered: