-
Notifications
You must be signed in to change notification settings - Fork 2
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
IT does not assert that replica bundles are indexed #6647
Comments
Spike for design |
Currently, AnVIL replica bundles aren't recorded anywhere in ElasticSearch. There are no contributions because replica bundles don't emit any contributions, and there are no replicas because we don't emit replicas for AnVIL bundles (since they're synthetic) and other replicas don't include any information on what bundle(s) they originated from. |
During the most recent reindex for
|
The current integration test already covers the possibility of indexing failures for replica bundles because it will fail if there are any messages in the fail queue. The current test also is not effective at testing whether the indexing was truly "complete", as it has no means of verifying that all expected non-bundle entities are present. So, as currently written, I'd argue that the omission of replica bundles from |
The easiest way to include replica bundles in the |
If we continue to adhere to the tenet that replica bundles never emit contributions, then they'll need to record their existence via replicas instead. We could add a |
Perhaps a better idea would be emit special "stub" replicas for bundles, with no content or hub IDs, that would only be read during the IT. The changes to the indexer would be smaller and more localized in this case, and I would expect the performance impact to be smaller as well. But these replicas would serve no purpose once the IT is finished. |
Technically, I don't think that statement is true. I found no code in the IT that looks at the fail queues. Luckily, it takes a while for a notification to make its way into the fail queue, so the IT will detect a stall before it does. But this all depends on the queue configuration, the number of attempts and the specific timeouts used in the the IT. We should add code that actually fails the IT with messages in the fail queues. We should also double check that the IT clears the fail queues before queuing more notifications. I think it does but the assignee should check. Most importantly, the code that validates the verbatim manifest formats is very permissive: it accepts any manifest with more than one replica. We should assert that each unfiltered verbatim manifest contains a replica for every file in every bundle that we index. This would be good enough coverage for now. For extra points, we may also be able to require that there is at least one orphan but I'm not sure. We do know the table names of the replica bundles (from their FQID) so we should be able to infer if there were non-schema orphans. Then again, the tables could be empty. |
Spike to review response. |
I mistakenly thought that the indexer would count messages in the fail queues when deciding whether indexing had completed or not, in the same way that it checks for messages in the notifications and tallies queues. Since this is not the case, Hannes is correct that the IT does not directly check the fail queues.
The IT does not purge the fail queues. On non-stable deployments, only the notifications and tallies are purged. On stable deployments, no queues are purged. See
I believe the code will accept a manifest with exactly one replica. But the point stands.
As written, this is both impossible to implement and the wrong expected behavior. We expect orphaned files to be missing from unfiltered manifests (because they are not filtered by a dataset field), and supplementary bundles contain files that are not observable in the index, and thus cannot be used for the expected value in the test. However, these points largely cancel out, so the suggested improvement will work if we check only for non-orphaned files.
We do not emit replica bundles for empty tables, so I think this should work. |
The condition is here: Line 484 in 315adce
We'll deal with this in a separate issue: #6781
It currently requires at least one replica, right? IOW, it would accept a manifest with two replicas. Same for pfb: Line 1062 in a045398
An unfiltered manifest does contain orphans. The condition whether to include orphans changed from the initial implementation (if filtered field is implicit hub ID) to whether the filtered fields are a subset of the implicit hub fields. But yes, the IT doesn't know the set of orphans in the sources it indexes, so it can only expect a replica for each hit in
Agreed. |
No description provided.
The text was updated successfully, but these errors were encountered: