diff --git a/shotover-proxy/src/codec/cassandra.rs b/shotover-proxy/src/codec/cassandra.rs index e36e2f279..515988b90 100644 --- a/shotover-proxy/src/codec/cassandra.rs +++ b/shotover-proxy/src/codec/cassandra.rs @@ -6,6 +6,7 @@ use anyhow::{anyhow, Result}; use bytes::{Buf, BufMut, BytesMut}; use cassandra_protocol::compression::Compression; use cassandra_protocol::frame::message_error::{ErrorBody, ErrorType}; +use cassandra_protocol::frame::message_supported::BodyResSupported; use cassandra_protocol::frame::{ CheckEnvelopeSizeError, Envelope as RawCassandraFrame, Opcode, Version, }; @@ -80,6 +81,16 @@ impl Decoder for CassandraCodec { return Err(reject_compression(frame.stream_id, compression)); } } + + if let CassandraOperation::Supported(BodyResSupported { data }) = + &mut frame.operation + { + if let Some(value) = data.get_mut("COMPRESSION") { + *value = vec![]; + } + + message.invalidate_cache(); + } } if let Ok(Metadata::Cassandra(CassandraMetadata { diff --git a/shotover-proxy/src/transforms/mod.rs b/shotover-proxy/src/transforms/mod.rs index 0640bf8a5..39d4d4006 100644 --- a/shotover-proxy/src/transforms/mod.rs +++ b/shotover-proxy/src/transforms/mod.rs @@ -1,10 +1,11 @@ -use self::cassandra::sink_cluster::CassandraSinkClusterBuilder; use crate::error::ChainResponse; use crate::message::Messages; -use crate::transforms::cassandra::peers_rewrite::CassandraPeersRewrite; -use crate::transforms::cassandra::peers_rewrite::CassandraPeersRewriteConfig; -use crate::transforms::cassandra::sink_cluster::CassandraSinkCluster; -use crate::transforms::cassandra::sink_cluster::CassandraSinkClusterConfig; +use crate::transforms::cassandra::peers_rewrite::{ + CassandraPeersRewrite, CassandraPeersRewriteConfig, +}; +use crate::transforms::cassandra::sink_cluster::{ + CassandraSinkCluster, CassandraSinkClusterBuilder, CassandraSinkClusterConfig, +}; use crate::transforms::cassandra::sink_single::{CassandraSinkSingle, CassandraSinkSingleConfig}; use crate::transforms::chain::{TransformChain, TransformChainBuilder}; use crate::transforms::coalesce::{Coalesce, CoalesceConfig}; diff --git a/test-helpers/src/connection/cassandra.rs b/test-helpers/src/connection/cassandra.rs index 5689db22f..394c3f5e0 100644 --- a/test-helpers/src/connection/cassandra.rs +++ b/test-helpers/src/connection/cassandra.rs @@ -179,6 +179,7 @@ impl CassandraConnection { ) .user("cassandra", "cassandra") .default_consistency(Consistency::One) + .compression(Some(scylla::transport::Compression::Snappy)) .build() .await .unwrap();