Skip to content

Commit

Permalink
Log User-Friendly Error When AutoComplete is not Available
Browse files Browse the repository at this point in the history
  • Loading branch information
nbauernfeind committed Aug 12, 2023
1 parent 7ae3a23 commit d10bea6
Showing 1 changed file with 16 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.google.rpc.Code;
import io.deephaven.base.LockFreeArrayQueue;
import io.deephaven.configuration.Configuration;
import io.deephaven.engine.context.QueryScope;
import io.deephaven.engine.table.Table;
import io.deephaven.engine.table.impl.util.RuntimeMemory;
import io.deephaven.engine.table.impl.util.RuntimeMemory.Sample;
Expand Down Expand Up @@ -58,8 +59,10 @@ public class ConsoleServiceGrpcImpl extends ConsoleServiceGrpc.ConsoleServiceImp
public static final boolean REMOTE_CONSOLE_DISABLED =
Configuration.getInstance().getBooleanWithDefault("deephaven.console.disable", false);

private static final String DISABLE_AUTOCOMPLETE_FLAG = "deephaven.console.autocomplete.disable";
public static final boolean AUTOCOMPLETE_DISABLED =
Configuration.getInstance().getBooleanWithDefault("deephaven.console.autocomplete.disable", false);
Configuration.getInstance().getBooleanWithDefault(DISABLE_AUTOCOMPLETE_FLAG, false);


public static final boolean QUIET_AUTOCOMPLETE_ERRORS =
Configuration.getInstance().getBooleanWithDefault("deephaven.console.autocomplete.quiet", true);
Expand All @@ -72,6 +75,8 @@ public class ConsoleServiceGrpcImpl extends ConsoleServiceGrpc.ConsoleServiceImp
public static final int SUBSCRIBE_TO_LOGS_BUFFER_SIZE =
Configuration.getInstance().getIntegerWithDefault(SUBSCRIBE_TO_LOGS_BUFFER_SIZE_PROP, 32768);

private static final AtomicBoolean ALREADY_WARNED_ABOUT_NO_AUTOCOMPLETE = new AtomicBoolean();

private final TicketRouter ticketRouter;
private final SessionService sessionService;
private final Provider<ScriptSession> scriptSessionProvider;
Expand Down Expand Up @@ -272,7 +277,7 @@ public void bindTableToVariable(
public StreamObserver<AutoCompleteRequest> autoCompleteStream(
@NotNull final StreamObserver<AutoCompleteResponse> responseObserver) {
final SessionState session = sessionService.getCurrentSession();
if (AUTOCOMPLETE_DISABLED) {
if (AUTOCOMPLETE_DISABLED || ALREADY_WARNED_ABOUT_NO_AUTOCOMPLETE.get()) {
return new NoopAutoCompleteObserver(session, responseObserver);
}
if (PythonDeephavenSession.SCRIPT_TYPE.equals(scriptSessionProvider.get().scriptType())) {
Expand All @@ -283,7 +288,15 @@ public StreamObserver<AutoCompleteRequest> autoCompleteStream(
"from deephaven_internal.auto_completer import jedi_settings ; jedi_settings.set_scope(globals())");
settings[0] = (PyObject) scriptSession.getVariable("jedi_settings");
} catch (Exception err) {
log.error().append("Error trying to enable jedi autocomplete").append(err).endl();
if (err instanceof QueryScope.MissingVariableException) {
if (!ALREADY_WARNED_ABOUT_NO_AUTOCOMPLETE.getAndSet(true)) {
log.error().append("Autocomplete package not found; disabling autocomplete.").endl();
log.error().append("Add the jvm flag '-D").append(DISABLE_AUTOCOMPLETE_FLAG)
.append("=true' to disable this message.").endl();
}
} else {
log.error().append("Error trying to enable jedi autocomplete").append(err).endl();
}
}
boolean canJedi = settings[0] != null && settings[0].call("can_jedi").getBooleanValue();
log.info().append(canJedi ? "Using jedi for python autocomplete"
Expand Down

0 comments on commit d10bea6

Please sign in to comment.