Skip to content
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

[ESQL] Dependency Injection for the Warnings Collector #108927

Merged
merged 3 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,11 +120,11 @@ private TypeSpec type() {
private MethodSpec ctor() {
MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC);
builder.addParameter(SOURCE, "source");
builder.addStatement("this.warnings = new Warnings(source)");
processFunction.args.stream().forEach(a -> a.implementCtor(builder));

builder.addParameter(DRIVER_CONTEXT, "driverContext");
builder.addStatement("this.driverContext = driverContext");
builder.addStatement("this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source)");
return builder.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,10 @@ private MethodSpec ctor() {
}
builder.addParameter(EXPRESSION_EVALUATOR, "field");
builder.addStatement("super(driverContext, field)");
builder.addParameter(DRIVER_CONTEXT, "driverContext");
if (warnExceptions.isEmpty() == false) {
builder.addStatement("this.warnings = new Warnings(source)");
builder.addStatement("this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source)");
}
builder.addParameter(DRIVER_CONTEXT, "driverContext");
return builder.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.SubscribableListener;
import org.elasticsearch.common.breaker.CircuitBreaker;
import org.elasticsearch.common.breaker.NoopCircuitBreaker;
import org.elasticsearch.common.util.BigArrays;
import org.elasticsearch.compute.data.BlockFactory;
import org.elasticsearch.core.Releasable;
Expand Down Expand Up @@ -57,11 +58,26 @@ public class DriverContext {

private final AsyncActions asyncActions = new AsyncActions();

private final WarningsMode warningsMode;

public DriverContext(BigArrays bigArrays, BlockFactory blockFactory) {
this(bigArrays, blockFactory, WarningsMode.COLLECT);
}

private DriverContext(BigArrays bigArrays, BlockFactory blockFactory, WarningsMode warningsMode) {
Objects.requireNonNull(bigArrays);
Objects.requireNonNull(blockFactory);
this.bigArrays = bigArrays;
this.blockFactory = blockFactory;
this.warningsMode = warningsMode;
}

public static DriverContext getLocalDriver() {
return new DriverContext(
BigArrays.NON_RECYCLING_INSTANCE,
// TODO maybe this should have a small fixed limit?
new BlockFactory(new NoopCircuitBreaker(CircuitBreaker.REQUEST), BigArrays.NON_RECYCLING_INSTANCE)
);
}

public BigArrays bigArrays() {
Expand Down Expand Up @@ -159,6 +175,22 @@ public void removeAsyncAction() {
asyncActions.removeInstance();
}

/**
* Evaluators should use this function to decide their warning behavior.
* @return an appropriate {@link WarningsMode}
*/
public WarningsMode warningsMode() {
return warningsMode;
}

/**
* Indicates the behavior Evaluators of this context should use for reporting warnings
*/
public enum WarningsMode {
COLLECT,
IGNORE
}

private static class AsyncActions {
private final SubscribableListener<Void> completion = new SubscribableListener<>();
private final AtomicBoolean finished = new AtomicBoolean();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public final class NotEvaluator implements EvalOperator.ExpressionEvaluator {

public NotEvaluator(Source source, EvalOperator.ExpressionEvaluator v,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.v = v;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class GreatestBooleanEvaluator implements EvalOperator.ExpressionEv

public GreatestBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public final class GreatestBytesRefEvaluator implements EvalOperator.ExpressionE

public GreatestBytesRefEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class GreatestDoubleEvaluator implements EvalOperator.ExpressionEva

public GreatestDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class GreatestIntEvaluator implements EvalOperator.ExpressionEvalua

public GreatestIntEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class GreatestLongEvaluator implements EvalOperator.ExpressionEvalu

public GreatestLongEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class LeastBooleanEvaluator implements EvalOperator.ExpressionEvalu

public LeastBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public final class LeastBytesRefEvaluator implements EvalOperator.ExpressionEval

public LeastBytesRefEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class LeastDoubleEvaluator implements EvalOperator.ExpressionEvalua

public LeastDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class LeastIntEvaluator implements EvalOperator.ExpressionEvaluator

public LeastIntEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ public final class LeastLongEvaluator implements EvalOperator.ExpressionEvaluato

public LeastLongEvaluator(Source source, EvalOperator.ExpressionEvaluator[] values,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.values = values;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public final class FromBase64Evaluator implements EvalOperator.ExpressionEvaluat

public FromBase64Evaluator(Source source, EvalOperator.ExpressionEvaluator field,
BytesRefBuilder oScratch, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.field = field;
this.oScratch = oScratch;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ public final class ToBase64Evaluator implements EvalOperator.ExpressionEvaluator

public ToBase64Evaluator(Source source, EvalOperator.ExpressionEvaluator field,
BytesRefBuilder oScratch, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.field = field;
this.oScratch = oScratch;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ public final class DateDiffConstantEvaluator implements EvalOperator.ExpressionE
public DateDiffConstantEvaluator(Source source, DateDiff.Part datePartFieldUnit,
EvalOperator.ExpressionEvaluator startTimestamp,
EvalOperator.ExpressionEvaluator endTimestamp, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.datePartFieldUnit = datePartFieldUnit;
this.startTimestamp = startTimestamp;
this.endTimestamp = endTimestamp;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ public final class DateDiffEvaluator implements EvalOperator.ExpressionEvaluator
public DateDiffEvaluator(Source source, EvalOperator.ExpressionEvaluator unit,
EvalOperator.ExpressionEvaluator startTimestamp,
EvalOperator.ExpressionEvaluator endTimestamp, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.unit = unit;
this.startTimestamp = startTimestamp;
this.endTimestamp = endTimestamp;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ public final class DateExtractConstantEvaluator implements EvalOperator.Expressi

public DateExtractConstantEvaluator(Source source, EvalOperator.ExpressionEvaluator value,
ChronoField chronoField, ZoneId zone, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.value = value;
this.chronoField = chronoField;
this.zone = zone;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public final class DateExtractEvaluator implements EvalOperator.ExpressionEvalua

public DateExtractEvaluator(Source source, EvalOperator.ExpressionEvaluator value,
EvalOperator.ExpressionEvaluator chronoField, ZoneId zone, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.value = value;
this.chronoField = chronoField;
this.zone = zone;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public final class DateFormatConstantEvaluator implements EvalOperator.Expressio

public DateFormatConstantEvaluator(Source source, EvalOperator.ExpressionEvaluator val,
DateFormatter formatter, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.val = val;
this.formatter = formatter;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public final class DateFormatEvaluator implements EvalOperator.ExpressionEvaluat

public DateFormatEvaluator(Source source, EvalOperator.ExpressionEvaluator val,
EvalOperator.ExpressionEvaluator formatter, Locale locale, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.val = val;
this.formatter = formatter;
this.locale = locale;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public final class DateParseConstantEvaluator implements EvalOperator.Expression

public DateParseConstantEvaluator(Source source, EvalOperator.ExpressionEvaluator val,
DateFormatter formatter, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.val = val;
this.formatter = formatter;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ public final class DateParseEvaluator implements EvalOperator.ExpressionEvaluato

public DateParseEvaluator(Source source, EvalOperator.ExpressionEvaluator val,
EvalOperator.ExpressionEvaluator formatter, ZoneId zoneId, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.val = val;
this.formatter = formatter;
this.zoneId = zoneId;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ public final class DateTruncEvaluator implements EvalOperator.ExpressionEvaluato

public DateTruncEvaluator(Source source, EvalOperator.ExpressionEvaluator fieldVal,
Rounding.Prepared rounding, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.fieldVal = fieldVal;
this.rounding = rounding;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ public final class NowEvaluator implements EvalOperator.ExpressionEvaluator {
private final DriverContext driverContext;

public NowEvaluator(Source source, long now, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.now = now;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ public final class CIDRMatchEvaluator implements EvalOperator.ExpressionEvaluato

public CIDRMatchEvaluator(Source source, EvalOperator.ExpressionEvaluator ip,
EvalOperator.ExpressionEvaluator[] cidrs, DriverContext driverContext) {
this.warnings = new Warnings(source);
this.ip = ip;
this.cidrs = cidrs;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public final class AbsDoubleEvaluator implements EvalOperator.ExpressionEvaluato

public AbsDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator fieldVal,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.fieldVal = fieldVal;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public final class AbsIntEvaluator implements EvalOperator.ExpressionEvaluator {

public AbsIntEvaluator(Source source, EvalOperator.ExpressionEvaluator fieldVal,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.fieldVal = fieldVal;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public final class AbsLongEvaluator implements EvalOperator.ExpressionEvaluator

public AbsLongEvaluator(Source source, EvalOperator.ExpressionEvaluator fieldVal,
DriverContext driverContext) {
this.warnings = new Warnings(source);
this.fieldVal = fieldVal;
this.driverContext = driverContext;
this.warnings = Warnings.createWarnings(driverContext.warningsMode(), source);
}

@Override
Expand Down
Loading