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

OAK-10768: query-spi: deprecate use of slf4j.event.Level in QueryInde… #1426

Merged
merged 7 commits into from
May 10, 2024
Expand Up @@ -555,25 +555,25 @@ private void logAdditionalMessages() {
for (SelectorImpl s : selectors) {
if (s.getExecutionPlan() != null &&
s.getExecutionPlan().getIndexPlan() != null) {
s.getExecutionPlan().getIndexPlan().getAdditionalMessages().forEach((level, list) -> {
s.getExecutionPlan().getIndexPlan().getAdditionalLogMessages().forEach((level, list) -> {
switch (level) {
case TRACE: for (String msg : list) {
case "TRACE": for (String msg : list) {
LOG.trace(msg);
}
break;
case DEBUG: for (String msg : list) {
case "DEBUG": for (String msg : list) {
LOG.debug(msg);
}
break;
case INFO: for (String msg : list) {
case "INFO": for (String msg : list) {
LOG.info(msg);
}
break;
case WARN: for (String msg : list) {
case "WARN": for (String msg : list) {
LOG.warn(msg);
}
break;
case ERROR: for (String msg : list) {
case "ERROR": for (String msg : list) {
LOG.error(msg);
}
break;
mbaedke marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
Expand Up @@ -361,12 +361,26 @@ default boolean logWarningForPathFilterMismatch() {
* This method can be used for communicating any messages which should be logged if this plan is selected for execution.
* The messages are returned as a map whose key indicates log level and value is a list of messages against that
* log level.

* @deprecated use {@link #getAdditionalLogMessages()} instead
* @return map containing log messages.
*/
@Deprecated(forRemoval = true)
mbaedke marked this conversation as resolved.
Show resolved Hide resolved
default Map<Level, List<String>> getAdditionalMessages() {
return Collections.emptyMap();
}

/**
* This method can be used for communicating any messages which should be logged if this plan is selected for execution.
* The messages are returned as a map whose key indicates log level and value is a list of messages against that
* log level.

* @return map containing log messages.
*/
default Map<String, List<String>> getAdditionalLogMessages() {
return Collections.emptyMap();
}

/**
* A builder for index plans.
*/
Expand Down Expand Up @@ -415,8 +429,20 @@ public Builder setDelayed(boolean isDelayed) {
return this;
}

public Builder addAdditionalMessage(Level level, String s) {
this.additionalMessages.compute(level, (k,v) -> {
public Builder addAdditionalMessage(String level, String s) {
mbaedke marked this conversation as resolved.
Show resolved Hide resolved
Level logLevel;
switch (level) {
case "TRACE":
case "DEBUG":
case "INFO":
case "WARN":
case "ERROR":
logLevel = Level.valueOf(level);
mbaedke marked this conversation as resolved.
Show resolved Hide resolved
break;
default:
throw new IllegalArgumentException("unsupported log level: " + level);
}
this.additionalMessages.compute(logLevel, (k,v) -> {
if (v == null) {
v = new ArrayList<>();
}
Expand Down
Expand Up @@ -18,7 +18,7 @@
/**
* This package contains oak query index related classes.
*/
@Version("1.8.0")
@Version("2.0.0")
mbaedke marked this conversation as resolved.
Show resolved Hide resolved
package org.apache.jackrabbit.oak.spi.query;

import org.osgi.annotation.versioning.Version;
Expand Up @@ -58,7 +58,6 @@
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.event.Level;

import static org.apache.jackrabbit.guava.common.collect.Lists.newArrayList;
import static org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithCapacity;
Expand Down Expand Up @@ -307,13 +306,13 @@ private IndexPlan.Builder getPlanBuilder() {

if (queryFilterPattern != null) {
if (ft != null && !queryFilterPattern.matcher(ft.toString()).find()) {
plan.addAdditionalMessage(Level.WARN, "Potentially improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
plan.addAdditionalMessage("WARN", "Potentially improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
+ queryFilterPattern + " to search for value '" + ft + "'");
}
for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
// Ignore properties beginning with ";" like :indexTag / :indexName etx
if (!pr.propertyName.startsWith(":") && !queryFilterPattern.matcher(pr.toString()).find()) {
plan.addAdditionalMessage(Level.WARN, "Potentially improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
plan.addAdditionalMessage("WARN", "Potentially improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
+ queryFilterPattern + " to search for value '" + pr + "'");
}
}
Expand Down