Replace console logging to route through problem reporter

This commit is contained in:
Dave Bartolomeo
2022-08-12 16:43:21 -04:00
parent 99756ae63b
commit 841f1d3310
4 changed files with 20 additions and 4 deletions

View File

@@ -76,15 +76,15 @@ function getMainHash(event: InLayer | ComputeRecursive): string {
/**
* Sum arrays a and b element-wise. The shorter array is padded with 0s if the arrays are not the same length.
*/
function pointwiseSum(a: Int32Array, b: Int32Array): Int32Array {
function pointwiseSum(a: Int32Array, b: Int32Array, problemReporter: EvaluationLogProblemReporter): Int32Array {
function reportIfInconsistent(ai: number, bi: number) {
if (ai === -1 && bi !== -1) {
console.warn(
problemReporter.log(
`Operation was not evaluated in the first pipeline, but it was evaluated in the accumulated pipeline (with tuple count ${bi}).`
);
}
if (ai !== -1 && bi === -1) {
console.warn(
problemReporter.log(
`Operation was evaluated in the first pipeline (with tuple count ${ai}), but it was not evaluated in the accumulated pipeline.`
);
}
@@ -436,7 +436,8 @@ class JoinOrderScanner implements EvaluationLogScanner {
// Pointwise sum the tuple counts
const newTupleCounts = pointwiseSum(
bucket.tupleCounts,
new Int32Array(run.counts)
new Int32Array(run.counts),
this.problemReporter
);
const newResultSizes = bucket.resultSize + resultSizes!;
// Pointwise sum the deltas.

View File

@@ -5,6 +5,7 @@ import { QueryHistoryInfo } from '../query-results';
import { EvaluationLogProblemReporter, EvaluationLogScannerSet } from './log-scanner';
import { PipelineInfo, SummarySymbols } from './summary-parser';
import * as fs from 'fs-extra';
import { logger } from '../logging';
/**
* Compute the key used to find a predicate in the summary symbols.
@@ -39,6 +40,10 @@ class ProblemReporter implements EvaluationLogProblemReporter {
this.diagnostics.push(new Diagnostic(range, message, DiagnosticSeverity.Error));
}
}
public log(message: string): void {
void logger.log(message);
}
}
export class LogScannerService extends DisposableObject {

View File

@@ -15,6 +15,12 @@ export interface EvaluationLogProblemReporter {
* @param message The problem message.
*/
reportProblem(predicateName: string, raHash: string, iteration: number, message: string): void;
/**
* Log a message about a problem in the implementation of the scanner. These will typically be
* displayed separate from any problems reported via `reportProblem()`.
*/
log(message: string): void;
}
/**

View File

@@ -22,6 +22,10 @@ class TestProblemReporter implements EvaluationLogProblemReporter {
message
});
}
public log(message: string): void {
console.log(message);
}
}
describe('log scanners', function() {