How to run Spring Data Cassandra 2.2.1 with Cassandra 2.1.9?

380 views Asked by At

I've developed a new application with Spring Data Cassandra 2.2.1 and want to run it against a Cassandra 2.1.9 server (old, I know). But we get the error

com.datastax.driver.core.exceptions.UnsupportedProtocolVersionException: Host does not support protocol version V4 but V3

The Spring Data Cassandra manual claims that Spring Data 2.2.1 needs at least Cassandra 2.1, so this should work but it doesn't. The only cassandra-specific dependency we include is org.springframework.boot:spring-boot-starter-data-cassandra

How can I get this to work?

1

There are 1 answers

0
Martin Schröder On

Turns out you can configure the protocol version the driver uses. The default with Spring Boot Cassandra 2.2.1 and com.datastax.driver.core 3.7.2 is V4, i.e. at least Cassandra 2.2.0.

To configure it:

@Configuration
@EnableCassandraRepositories
public class CassandraConfig extends AbstractCassandraConfiguration {
  @Value("${cassandra.protocolVersion}")
  private Integer protocolVersion;
  @NotNull
  @Override
  public ProtocolVersion getProtocolVersion() {
    return ProtocolVersion.fromInt(protocolVersion);
  }
}

And e.g. in your application.yml for Cassandra 2.1.9:

cassandra.protocolVersion: 3