apache/cassandra · error · UnsupportedOperationException
Remote configuration of auth caches is disabled
Error message
Remote configuration of auth caches is disabled
What it means
Thrown by CreateViewStatement.apply when a regular table (not a view) already exists under the view's target name in the keyspace. View and table names share one namespace per keyspace, so creating an MV that would collide with an existing table is rejected to avoid ambiguity.
Source
Thrown at src/java/org/apache/cassandra/auth/AuthCache.java:266
/**
* Invalidate a key.
* @param k key to invalidate
*/
public void invalidate(K k)
{
if (cache != null)
cache.invalidate(k);
}
/**
* Time in milliseconds that a value in the cache will expire after.
* @param validityPeriod in milliseconds
*/
public synchronized void setValidity(int validityPeriod)
{
if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");
setValidityDelegate.accept(validityPeriod);
cache = initCache(cache);
}
public int getValidity()
{
return getValidityDelegate.getAsInt();
}
/**
* Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)
* @param updateInterval in milliseconds
*/
public synchronized void setUpdateInterval(int updateInterval)
{
if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Choose a different name for the materialized view.
- Drop or rename the existing table if it is truly obsolete (after backing up data).
- Add IF NOT EXISTS only if the existing object is acceptable to keep.
- Check keyspace contents with 'DESCRIBE TABLES' to see the conflicting object.
Example fix
// before CREATE MATERIALIZED VIEW ks.summary AS SELECT ...; // after CREATE MATERIALIZED VIEW ks.summary_mv AS SELECT ...;
Defensive patterns
Strategy: validation
Validate before calling
boolean nameTaken = session.execute(
"SELECT table_name FROM system_schema.tables WHERE keyspace_name = ? AND table_name = ?", ks, viewName).one() != null;
if (nameTaken) chooseDifferentViewName(); Try / catch
try {
session.execute(createMvStmt);
} catch (InvalidQueryException e) {
if (e.getMessage().contains("a table with the same name already exists")) { /* pick new name or drop table */ }
else throw e;
} Prevention
- Use a naming convention distinguishing views from tables (e.g. *_mv suffix).
- Reserve view names in schema documentation to avoid table-name reuse.
- Check keyspace contents before deploying new objects.
When it happens
Trigger: Executing 'CREATE MATERIALIZED VIEW ks.name AS ...' where keyspace.hasTable(viewName) is true and no IF NOT EXISTS semantics resolve the conflict.
Common situations: Reusing a legacy table's name for a new view; re-running migration scripts where a table with that name was already created; collisions between view names and pre-existing denormalized tables.
Understand the failure class
Background: "already exists" / EEXIST / FileAlreadyExistsException: what the 'file already exists' error means and how to fix it — this error's family across 37 libraries.
Related errors
- GRANT operation is not supported by AllowAllAuthorizer
- 'Get CIDR groups for IP' operation not supported by %s
- ACCESS TO DATACENTERS operations not supported by AllowAllNe
- Cannot use ALTER TABLE on a materialized view; use ALTER MAT
- category %s not found in %s
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/600df0174893ef70.
Report an issue: GitHub.