Closed bedeho closed 3 years ago
Tue, Sep 1st
Mon, Sep 7th
1. Review Babylon network release plan, and resolve key questions
We will need input from Mokhtar on how to do effective integration testing of the query node. We were concerned that running it as part of the overall testing framework would be a hassle, for example in terms of running time. Having standalone integration tets just for the query node would allow us to have a prebuilt node and only run certain queries. But then it does feel like a lot to have both network and node integration tests.
We decided against including any of the new advanced work, such as typed mappings or manifest files. First off, there is just the uncertainty around feasibility and timeline. Secondly, as emphasized by Dmitrii, we may need to refactor the entire Hydra framework to be more robust, with an architecture similar to Subscan/Polkascan. We will revisit this later.
Metin will start working on the schemas and mappings, as Arsen has been delayed, and Dmitrii will try to work on Hydra itself.
There was a polkadotjs version incompatibility issue which made it hard to smoothly populate the indexer database. The only easy way to resolve is to have access to a newer versions of Polkdotjs from what Dmitrii and Metin can gather. Dmitrii will try to experiment with a new version and synching against the new Joystream node for the imminent Alexandria release, and we will seek advice from Mokhtar as well.
We identified the need to introduce a status/progress API for the integration tests, at least for the generated node, the indexer could also be useful in the future. This API should provide events+reads that expose how many blocks have been processed or fetched, respectively.
Tue, Sep 7th
What is required to make the query node part of network testing infrastructure?
How can we turn off running irrelevant scenarios when working on PRs that are focused only on query node?
How can we avoid rebuilding full node & runtime when working on PRs that are focused only on query node?
What is the current status of the indexer issued with Polkadotjs
@mnaamani can solve all query node related requirements so long as we have query node in docker image, which we do. Ansible can be used to run with correct prebuilt assets and limit scenarios by looking at either labels or commit message. This can all be handled by Mokhtar
@dzhelezov found that with polakdotjs 1.31 he was able to run indexer against Kusama and at that quickly. He believes this now works is because of this new feature https://github.com/polkadot-js/api/pull/2535. However, we need to confirm whether this version of polkadotjs is compatible with our current Substrate version. He will ask around to figure out that compatibility. If that is compatible, we can just keep using this version for Hydra/query node exclusively, no other part of the Joystream code base needs to upgrade. If this is not compatible, then we need to consider alternatives for the indexer that are not based on polkadotjs high level APIs.
Mon, Sep 14th
What is our status on the release so far?
We have had some contradictory mental models, at least it appeared, on how exactly the architecture of the processor & indexer should be, summarized in this question issue from Bedeho: https://github.com/Joystream/hydra/issues/24#issuecomment-691445871
The difference in the model was that Dmitrii was foreseeing lots of distinct processors within the Joystream API, while I was thinking there was just one. Distinct processors, generating distinct APIs, which then can be stitched together at a top-level API, is sort of in GraphQL spirit, however, it wasn't clear that the underlying Joystream Runtime data model. and final AP actually could work with this sort of segmentation, and it appeared to cause many complexities. We do however need to look out for ways of making the schemas manageable to work with, even if there is one monolithic query state.
The estimation went reasonably well for both Dmitrii & Metin, however, there was some significant uncertainty about some parts of the work for both.
Can we run the indexers sooner rather than running everything later? There are still lurking bugs and issues showing up with the Kusama network, and we are better off trying to get a node running as soon as possible.
How will Arsen (@iorveth) & Mokhtar (@mnaamani ) contribute to various Hydra & query node tasks in Babylon?
We will only have a single monolithic processor and query stage for the query node, this impacts some of Dmitrii's tasks, which he will update.
We will attempt to get an indexer running as soon as possible, and we will try to have a long-running indexer talking to a simple Babylon full node as soon as we can, just producing semi-empty blocks.
Mokhtar will assist in updating Polakdotjs joystream types library as soon as possible, as Lezsek will not be back for at least a week. It's not clear how much of the query-node integration testing scenarios he will write, but he may contribute once he is done with his main task of integrating the query node in the testing infrastructure itself. To begin with, all tasks are assigned to Dmitrii.
Dmitrii will add a separate task about writing integration tests just for the Hydra indexer.
Arsen will work with Metin to write the query-node when he is done with a working runtime, as he is very knowledgeable about the content directory, but initially, all tasks are assigned to Metin.
Mon, Sep 21th
Arsen and Metin will focus on writing mappings the next week, but it's unclear how much progress can be made.
Dmitrii will focus on completing the integraiton of the indexer and processor, and then commence with first Hydra integration test on indexer with template chain.
We will postpone a proper fix of the API issue until after Babylon is out.
We should do the builders program ASAP, Dmitrii will look into what is required to apply, and the timeline and commitments required of the program. We should also apply to other funding sources, but this requires harmonizing requests guided by an underlying plan and vision for what we want to do. This planning could take a little more time. Bedeho is happy to spend time on this, but needs some calendar space to get started.
This is a complex topic, we should schedule explicit time for it later. It does not appear to be a rush, as any plan depends on what we are doing anyway, which is make Hydra better for anyone to use.
TBD Core Hydra features Priority: 1
TBD Pre-integration tests (w/o mappings logic) Priority: 2
TBD Infrastructure tasks: Priority: 3
Wed, Sep 30th
Dmitrii explained the role of the Redis message broker, which is as a queue between the indexer node and the indexer API server. The API will provide a GraphQL subscription which alerts client when a new block has been fetched, and the client would at this point fetch the block using a separate query.
There is a limitation in Warthog preventing the completion of the approach described in the prior point, but it is expected that this will be addressed by the Warthog maintainer with a small fix soon, however, if that was to fall through we can rely on the already working polling based approach in the processor.
Metin is working on mappings, of which we expect 25 or so to be needed, and it takes about 2-3 hours per small group (2-3) of related events. Arsen has not started contributing on the mapper side yet.
We discussed how type safe mappings would be implemented, and how to deal with the fact that the Polkadot/Joystream types are distinct from the Warthog data model types, and also how to deal with the fact that recovering extrinsic parameters when processing events can be quite hard, and its not clear how to make type safe mappings in such cases. The conclusion here was that we need transaction handlers to sidestep this entirely.
We briefly discussed when a working chain for Babylon with relevant transactions.
How should query deployment and hosting be handled?
Metin will write mappers segmented into a pre-handler, which takes SubstrateEvents
, and a core handler, which takes static types. This distinction will allow us to make a clean transition later when we only have core handlers.
Dmitrii will update the project board to reflect a focus on the following: proceed to focus on Hydra integration tests using a Substrate template chain with very plain transactions, such as transfers, validation, etc. Whenever the Warthog issue is resolved, he will shift focus and complete that work.
We cannot introduce transaction handlers for Babylon, its too risky.
Mon, Oct 5th
@entities
should have an ID
field with clear deterministic semantics, explained as inline comments, which mappers will enforce, and app developers can read in docs. Minor changes are required in Warthog schema generation code would be required.Mon, Oct 12th
This was an impromptu meeting to discuss a single urgent issue of mismatching expectations between testing and hydra/query node teams. There was no sufficient time to properly do a team call today.
Tue, Oct 13th
This was an impromptu meeting to discuss a single urgent issue of mismatching expectations between testing and hydra/query node teams. There was no sufficient time to properly do a team call today.
Tue, Oct 13th
This was an impromptu meeting to discuss a single urgent issue of mismatching expectations between testing and hydra/query node teams. There was no sufficient time to properly do a team call today.
Tue, 27th Oct
This was a weekly meeting to discuss progress on Hydra
transaction
type.Mon, 2nd Nov
This was a weekly meeting to discuss progress on Hydra.
Mon, 2nd Nov
This was a weekly meeting to discuss progress on Hydra.
Mon, 16th Nov
This was a weekly meeting to discuss progress on Hydra.
channel.title
to channel.handle
in the schemas and CLI.MediaLocation
typing.Closing this now, as we are basically done with everyhting for Babylon and v2.
Mon, Aug 24th
Agenda
I think Arsen can start as soon as he is ready, even if these are not done, but let me know if you think that would be counter-productive.