Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate Thrift API #3811

Open
duarten opened this issue Oct 3, 2018 · 15 comments · May be fixed by #18453
Open

Deprecate Thrift API #3811

duarten opened this issue Oct 3, 2018 · 15 comments · May be fixed by #18453
Assignees
Milestone

Comments

@duarten
Copy link
Contributor

duarten commented Oct 3, 2018

We should deprecate the Thrift API with the goal of removing the code in some future version. The reasons for this are:

  1. Past Scylla version have Thrift support, and work correctly;
  2. We are unlikely to invest effort in making new features like SI and LWT work from Thrift;
  3. Projects like KairosDB that supported Scylla as a backend and used Thrift have since moved to CQL;
  4. Less code means faster compile times!
@glommer
Copy link
Contributor

glommer commented Oct 3, 2018

Disagree. There are some folks that are still using thrift, believe it or not. Some of them don't want to rewrite applications and would consider moving to Scylla instead of newer Cassandra.

We shouldn't deprecate things without very good reason. APIs are particularly problematic.

The "past scylla versions have thrift" is not a good argument in my view. Those past versions exist, but they are unsupported, so what good is that ?

We obviously don't have to invest more time in it, and should only fix critical bugs. But I see deprecation as the wrong thing to do.

@nyh
Copy link
Contributor

nyh commented Oct 4, 2018

@glommer please note that Cassandra dropped Thrift support in 4.0 (see https://issues.apache.org/jira/browse/CASSANDRA-11115) in a move that has been planned for two years with out too much opposition. So users who insist on continuing to using thrift would need to do more than "consider" to use Scylla instead of newer Cassandra - because newer Cassandra will not support it at all.
Personally, I think we should keep Thrift for a while longer, but mark it deprecated and definitely not recommended for new projects, and we don't need to support anything more in it than we already do.

@arganzheng
Copy link

Without Thrift API, how can we insert record without define every column before we can insert it.

@nyh
Copy link
Contributor

nyh commented Mar 29, 2021

After #8336, the Thrift protocol is no longer enabled by default. But it's still not officially deprecated.

@mykaul
Copy link
Contributor

mykaul commented Dec 11, 2022

It's almost 2023, perhaps it's the year of deprecation of Thrift!

@DoronArazii
Copy link

@mykaul is it planned for 5.2?
Which team has the commitment?

@mykaul
Copy link
Contributor

mykaul commented Jan 24, 2023

@mykaul is it planned for 5.2? Which team has the commitment?

No critical, I assume @eliransin , could be postponed to 5.3.

@nyh
Copy link
Contributor

nyh commented Feb 15, 2023

Issues #1478 and #9911, which asked to improve testing of Thrift but never done - were closed recently.
Not having good tests is yet another reason to drop Thrift support.

@eliransin
Copy link
Contributor

@mykaul , I am not sure about the decision. Should we deprecate thrift? If so, maybe in order to deprecate thrift in 5.3 we should at least start by issuing a warning that it is going to be deprecated in 5.2 and the actually deprecate it in 5.3?

@mykaul
Copy link
Contributor

mykaul commented Feb 19, 2023

@mykaul , I am not sure about the decision. Should we deprecate thrift? If so, maybe in order to deprecate thrift in 5.3 we should at least start by issuing a warning that it is going to be deprecated in 5.2 and the actually deprecate it in 5.3?

We can issue a warning, including in the release notes, in 5.2, and do it in 5.3.

@nyh
Copy link
Contributor

nyh commented Feb 19, 2023

I think that dropping Thrift is not really a technical decision - technically Thrift is bad and not needed and not tested enough (the issues to fix that we. I think it's a product/business decision:

  • Do we know of users who use Thrift or want to use it? How many such users?
  • Is our unique Thrift support (which Cassandra no longer supports since 4.0) attracting users to Scylla?

@eliransin for two years now (since ccc75bf) Thrift is disabled in Scylla by default and needs to be enabled manually with the start_rpc configuration option. This means we can indeed warn users when Scylla starts with that option enabled - warn that this option will be going away soon (?).

The documentation that I wrote (docs/dev/protocols.md) already un-recommends using Thrift for three years already:

The Apache Thrift protocol was early Cassandra's client protocol, until it was superceded in Cassandra 1.2 with the binary CQL protocol. Thrift was still nominally supported by both Cassandra and Scylla for many years, but was recently dropped in Cassandra (version 4.0) and is likely to be dropped by Scylla in the future as well, so it is not recommended for new applications.

Maybe we needed similar statements in other places in the documentation as well. CC @tzach @annastuchlik

@DoronArazii DoronArazii modified the milestones: 5.3, 5.4 Jun 6, 2023
@DoronArazii DoronArazii modified the milestones: 5.4, Backlog Aug 6, 2023
annastuchlik added a commit to annastuchlik/scylladb that referenced this issue Sep 28, 2023
This commit adds the information that Thrift is
deprecated (both in ScyllaDB and Cassandra) to
the Cassandra compatibility page.

Refs: scylladb#3811
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 28, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 28, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 28, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 28, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 29, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
cassandra-cli was removed in Cassandra 2.2.0. and it was replaced by
cqlsh in newer releases. actually, scylla-tools does not build or
package this command line tool at all. so let's drop the related helpers
for accessing this tool. in a following-up change, we will drop the
thrift related APIs.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue Apr 29, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylla-ccm that referenced this issue Apr 29, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
fruch pushed a commit to scylladb/scylla-ccm that referenced this issue Apr 30, 2024
cassandra-cli was removed in Cassandra 2.2.0. and it was replaced by
cqlsh in newer releases. actually, scylla-tools does not build or
package this command line tool at all. so let's drop the related helpers
for accessing this tool. in a following-up change, we will drop the
thrift related APIs.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
fruch pushed a commit to scylladb/scylla-ccm that referenced this issue Apr 30, 2024
thrift was deprecated in both ScyllaDB and Cassandra. so there is
no need to pass it around. to be compatible with existing users of
the ccmlib, the thrift related parameters are preserved in public
intefaces, but they are not passed down anymore. in some places,
we enforce that the host on which thrift protocol is served should
be identical to that of binary. and actually, scylla always use
the same host address for both thrift and binary protocols. so we
replace the address like `self.network_interfaces['thrift'][0]`
with `self.network_interfaces['binary'][0]`.

Refs scylladb/scylladb#3811
Refs scylladb/scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 5, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 5, 2024
…e_client_key()

since we've dropped the thift support, the `client_type` is always
`cql`, there is no need to differentiate different clients anymore.
so, we change `make_client_key()` so that it only return the IP address
and port.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 5, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 5, 2024
…e_client_key()

since we've dropped the thift support, the `client_type` is always
`cql`, there is no need to differentiate different clients anymore.
so, we change `make_client_key()` so that it only return the IP address
and port.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 5, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
…e_client_key()

since we've dropped the thift support, the `client_type` is always
`cql`, there is no need to differentiate different clients anymore.
so, we change `make_client_key()` so that it only return the IP address
and port.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
@tchaikov tchaikov self-assigned this May 6, 2024
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
thrift support was deprecated since ScyllaDB 5.2

> Thrift API - legacy ScyllaDB (and Apache Cassandra) API is
> deprecated and will be removed in followup release. Thrift has
> been disabled by default.

so let's drop it. in this change,

* thrift protocol support is dropped
* all references to thrift support in document are dropped
* the "thrift_version" column in system.local table is
  preserved for backward compatibility, as we could load
  from an existing system.local table which still contains
  this clolumn, so we need to write this column as well.
* "/storage_service/rpc_server" is only preserved for
  backward compatibility with java-based nodetool.

Fixes scylladb#3811
Fixes scylladb#18416
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
…e_client_key()

since we've dropped the thift support, the `client_type` is always
`cql`, there is no need to differentiate different clients anymore.
so, we change `make_client_key()` so that it only return the IP address
and port.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
tchaikov added a commit to tchaikov/scylladb that referenced this issue May 6, 2024
so we don't create new sstables with this unused column, but we
can still open old sstables of this table which was created with
the old schema.

Refs scylladb#3811
Refs scylladb#18416

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.