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

  1. Choose a different name for the materialized view.
  2. Drop or rename the existing table if it is truly obsolete (after backing up data).
  3. Add IF NOT EXISTS only if the existing object is acceptable to keep.
  4. 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

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


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/600df0174893ef70. Report an issue: GitHub.