capistrant commented on code in PR #19903:
URL: https://github.com/apache/druid/pull/19903#discussion_r3731444549
##########
server/src/main/java/org/apache/druid/server/coordinator/rules/ProjectionPartialLoadMatcher.java:
##########
@@ -33,12 +34,23 @@
/**
* Base for {@link PartialLoadMatcher} implementations that decide which of a
segment's V10 projections to load.
* Subclasses supply the resolution policy via {@link
#resolveProjectionNames(DataSegment)}; this base handles
- * fingerprint computation and wraps the result into the {@code
partialProjection} load-spec wire form consumed
- * by the historical-side {@link PartialProjectionLoadSpec}.
+ * fingerprint computation and wraps the result into the {@code
partialProjection} load spec consumed by the
+ * historical-side {@link PartialProjectionLoadSpec}.
* <p>
* The fingerprint is a hash of what projections are partially loaded on a
segment by this rule; the data node will
* include this value in the segment announcement so that it can be used as a
lightweight value to compare against
* to handle things like rule change so that we can ensure that the 'right'
partial load is in place from run to run.
+ * <p>
+ * <b>Projection matchers always apply.</b> When none of the configured
projections are present on a segment, the
+ * matcher resolves to a {@link PartialBaseTableLoadSpec} (every row, no
projections) instead of going opaque. A
+ * projection is precomputation that is always recoverable from the base
table, so the base table is a correct
+ * substitute for one the segment doesn't carry, and it is strictly less data
than every bundle on the segment. This
+ * is the ordinary state of affairs mid-rollout, when a new projection is
being reindexed in and only some segments
+ * carry it yet.
Review Comment:
I think I take this all back after considering that it is going to be
clearly defined behavior. projections rules will be created because the
operator expects the projection to exist (at least eventually in the case of
adding with compaction), and they don't want to just not see data because it
wasn't created yet when the alternative is a non-projection query that gives
back good results, albeit more slowly.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]