Hi Stefan,

First of all, many thanks for responding to my email.
Let me explain my journey so far with this. I could not find any
documentation for this, so it is good to have someone to discuss this :)

The program which I had earlier for version 3.9 did the following:
3.9:
*Config.setClientMode(true);*

Porting to 3.11, I used the following:
*DatabaseDescriptor.clientInitialization();*

Now with 4.0, when I use *DatabaseDescriptor.clientInitialization()*, it
throws up an error leading something as follows:
Caused by: java.lang.NullPointerException
        at
org.apache.cassandra.config.DatabaseDescriptor.getMaxMutationSize(DatabaseDescriptor.java:1959)
        at org.apache.cassandra.db.IMutation.<clinit>(IMutation.java:29)
        ... 3 more

Then I tried
        *DatabaseDescriptor.daemonInitialization()*
with system property, -Dcassandra.config=file:///path/to/cassandra.yaml

After this, it errored out for property *cassandra.storagedir* not set. I
set this to a dummy value,
*System.setProperty("cassandra.storagedir","/tmp");*

With this, I was able to run the standalone program without errors but I
was not able to read mutations from user tables.
After loading Schema using *Schema.instance.load(keyspace), I was able to
read mutations from the commit logs*.

I looked at the code that you've implemented, I have some questions:
1) For Cassandra 3 and Cassandra 4, you have used
*DatabaseDescriptor.toolInitialization()*
        May I ask if external applications should always use
* DatabaseDescriptor.toolInitialization()* ?

2) In your code, keyspace metadata (table metadata and column metadata) is
not constructed and loaded into the Schema instance.
     You are using *Schema.instance.loadFromDisk(false)*
      Is this the preferred way to load the schema?

I will try out your approach and get back soon.

Again, many thanks.

Best regards
Sanal

On Wed, May 4, 2022 at 2:44 PM Stefan Miklosovic <
stefan.mikloso...@instaclustr.com> wrote:

> Hi Sanal,
>
> I have recently updated a project called Debezium and its Cassandra
> connector to work with Cassandra 4 (1)
>
> The implementation of CommitLogReadHandler is here (2)
>
> (1) https://github.com/debezium/debezium-connector-cassandra
> (2)
> https://github.com/debezium/debezium-connector-cassandra/blob/main/cassandra-4/src/main/java/io/debezium/connector/cassandra/Cassandra4CommitLogReadHandlerImpl.java
>
> Feel free to reach me privately or here on ML if you have any specific
> questions.
>
> Regards
>
> Stefan
>
> On Wed, 4 May 2022 at 01:40, Sanal Vasudevan <get2sa...@gmail.com> wrote:
> >
> > Hi Folks,
> >
> > I have a standalone Java application that implements the interface
> CommitLogReadHandler to read cassandra commit log files generated by
> Cassandra 3.11.
> > I recently tried to use this to read the commit logs generated by
> Cassandra 4, but it does not work.
> > Has anyone tried to implement CommitLogReadHandler for Cassandra 4 or is
> there a better way to read/parse Cassandra 4 commit logs?
> > Any help would be appreciated.
> >
> > Thanks!
> >
> > Best regards
> > Sanal
>


-- 
Sanal Vasudevan Nair

Reply via email to