diff --git a/CHANGES.txt b/CHANGES.txt index 246bc49b49..b6fe049feb 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,7 @@ 1.1.6 * Improve IAuthority interface by introducing fine-grained access permissions and grant/revoke commands (CASSANDRA-4490) + * fix assumption error in CLI when updating/describing keyspace (CASSANDRA-4322) 1.1.5 diff --git a/src/java/org/apache/cassandra/cli/CliClient.java b/src/java/org/apache/cassandra/cli/CliClient.java index 8296253340..d0fb54310d 100644 --- a/src/java/org/apache/cassandra/cli/CliClient.java +++ b/src/java/org/apache/cassandra/cli/CliClient.java @@ -1068,7 +1068,7 @@ public class CliClient sessionState.out.println(mySchemaVersion); validateSchemaIsSettled(mySchemaVersion); keyspacesMap.remove(keyspaceName); - getKSMetaData(keySpace); + getKSMetaData(keyspaceName); } catch (InvalidRequestException e) { @@ -1879,15 +1879,19 @@ public class CliClient * Returns true if this.keySpace is set, false otherwise * @return boolean */ + private boolean hasKeySpace(boolean printError) + { + boolean hasKeyspace = keySpace != null; + + if (!hasKeyspace && printError) + sessionState.err.println("Not authorized to a working keyspace."); + + return hasKeyspace; + } + private boolean hasKeySpace() { - if (keySpace == null) - { - sessionState.out.println("Not authenticated to a working keyspace."); - return false; - } - - return true; + return hasKeySpace(true); } public String getKeySpace() @@ -2142,9 +2146,19 @@ public class CliClient return; int argCount = statement.getChildCount(); - - keyspacesMap.remove(keySpace); - KsDef currentKeySpace = getKSMetaData(keySpace); + + if (keySpace == null && argCount == 0) + { + sessionState.out.println("Authenticate to a Keyspace, before using `describe` or `describe `"); + return; + } + + KsDef currentKeySpace = null; + if (keySpace != null) + { + keyspacesMap.remove(keySpace); + currentKeySpace = getKSMetaData(keySpace); + } if (argCount > 1) // in case somebody changes Cli grammar throw new RuntimeException("`describe` command take maximum one argument. See `help describe;`"); @@ -2996,7 +3010,7 @@ public class CliClient public void replayAssumptions(String keyspace) { - if (!CliMain.isConnected() || !hasKeySpace()) + if (!CliMain.isConnected() || !hasKeySpace(false)) return; Map> cfAssumes = assumptions.get(keyspace);