[jira] [Created] (JAMES-4177) Finner grain Cassandra profiles

"Benoit Tellier (Jira)" <[email protected]> Wed, 25 Feb 2026 08:51:00 +0000 (UTC)
Newsgroups gmane.comp.jakarta.james.devel
Message-ID <[email protected]>
Benoit Tellier created JAMES-4177:
-------------------------------------

             Summary: Finner grain Cassandra profiles
                 Key: JAMES-4177
                 URL: https://issues.apache.org/jira/browse/JAMES-4177
             Project: James Server
          Issue Type: Improvement
            Reporter: Benoit Tellier


h3. Why ?

As a Cassandra operator I want more control on the consistency levels

EG:
 - I want globally to write at QUORUM but for my reads I do want to operate at LOCAL_ONE

The idea: we offer a way for the operator to trade small window of inconsistency for more performance without compromising correctness (Not loosing non replicated writes).

Also I want to be able to do this on a per collection matter - eg reading domains at LOCAL_ONE is trivially ok, so I'd want to be able to squeeze the extra perf out of it.

h3. How?

In cassandra-diver.conf define the read + write profiles defaulting to QUORUM

Each DAO would propose 2 extra profiles, read-name-of-the-dto and write-name-of-the-dto, and if undefined in the conf fallback to read / write profile. Done in the DAO constructor:

{code:java}
public String resolveProfile(CqlSession session, String profileName, String fallback) {
    Map<String, DriverExecutionProfile> profiles =
        session.getContext()
               .getConfig()
               .getProfiles();

    return profiles.containsKey(profileName) ? profileName : fallback;
}
{code}

We would supply in the conf a full list of supported profiles.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)