From f49a413409a5af3c60b73ac6d7d89a97cb368d46 Mon Sep 17 00:00:00 2001 From: Bret McGuire Date: Tue, 8 Aug 2023 14:37:46 -0500 Subject: [PATCH] cassandra.h, changelog and documentation updates for 2.17.0 (#552) --- CHANGELOG.md | 18 +++- Jenkinsfile | 14 +-- README.md | 76 ++++++++------ appveyor.yml | 22 +--- include/cassandra.h | 2 +- topics/building/README.md | 50 +++------ topics/installation/README.md | 185 ++++++---------------------------- 7 files changed, 118 insertions(+), 249 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a86a3d0..1fe207330 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +2.17.0 +=========== +* [CPP-942] Add docs on possibility of MITM attacks with cass_cluster_set_use_hostname_resolution() +* [CPP-955] Unable to use different memory allocators and profilers when using the cassandra driver +* [CPP-957] Update build/test platforms +* [CPP-919] CMake 3.16 deprecation warnings + +Community +-------- +* [PR #522] Iterate over all certificates in a trusted cert BIO, not just the first (kw217) +* [PR #528] Add support for newer versions of LibreSSL (gahr) +* [PR #525] Allow users to request TLS client-side enforcement (FalacerSelene) + 2.16.2 =========== @@ -5,7 +18,10 @@ Bug Fixes -------- * [CPP-946] Core dump on unclean event loop shutdown * [PR #513] Fix SNI events -* [PR #518] Replace deprecated function for OpenSSL >= 3.0 + +Community +-------- +* [PR #518] Replace deprecated function for OpenSSL >= 3.0 (pjgeorg) 2.16.1 =========== diff --git a/Jenkinsfile b/Jenkinsfile index 6223df9f3..9e18094db 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -263,7 +263,7 @@ def testDriverInstallation() { } def deployDriver() { - withCredentials([usernameColonPassword(credentialsId: 'drivers-artifactory-upload-username-encrypted-password', variable: 'ARTIFACTORY_CREDENTIALS'), + withCredentials([usernameColonPassword(credentialsId: 'cpp-drivers-artifactory-upload-username-encrypted-password', variable: 'ARTIFACTORY_CREDENTIALS'), string(credentialsId: 'artifactory-base-url', variable: 'ARTIFACTORY_BASE_URL')]) { sh label: 'Deploy driver to Artifactory', script: '''#!/bin/bash -le . ${DRIVER_BUILD_SCRIPT} @@ -406,9 +406,9 @@ pipeline { choice( name: 'ADHOC_BUILD_AND_EXECUTE_TESTS_SERVER_VERSION', choices: [ - '3.0', // Previous Apache Cassandra® - '3.11', // Current Apache Cassandra® - '4.0', // Development Apache Cassandra® + '3.0', // Previous Apache Cassandra + '3.11', // Current Apache Cassandra + '4.0', // Development Apache Cassandra 'dse-5.1.35', // Legacy DataStax Enterprise 'dse-6.8.30', // Development DataStax Enterprise 'ALL'], @@ -728,9 +728,9 @@ pipeline { axes { axis { name 'SERVER_VERSION' - values '3.0', // Previous Apache Cassandra® - '3.11', // Current Apache Cassandra® - '4.0', // Development Apache Cassandra® + values '3.0', // Previous Apache Cassandra + '3.11', // Current Apache Cassandra + '4.0', // Development Apache Cassandra 'dse-5.1.35', // Legacy DataStax Enterprise 'dse-6.8.30' // Development DataStax Enterprise } diff --git a/README.md b/README.md index dd5d2e783..66f899aa5 100644 --- a/README.md +++ b/README.md @@ -10,22 +10,28 @@ products: ## Getting the Driver -Binary versions of the driver, available for multiple operating systems and -multiple architectures, can be obtained from our [download server]. The -source code is made available via [GitHub]. - -Packages for the driver's dependencies, libuv (1.x), OpenSSL, and zlib are also -provided under the `dependencies` directory for each platform (if applicable). -__Note__: CentOS and Ubuntu use the version of OpenSSL and zlib provided with the -distribution: - -* [CentOS 6][centos-6-dependencies] -* [CentOS 7][centos-7-dependencies] -* [CentOS 8][centos-8-dependencies] -* [Ubuntu 14.04][ubuntu-14-04-dependencies] -* [Ubuntu 16.04][ubuntu-16-04-dependencies] -* [Ubuntu 18.04][ubuntu-18-04-dependencies] -* [Windows][windows-dependencies] +The source code is made available via [GitHub]. Additionally binary versions of +the driver (for multiple operating systems and multiple architectures) can be +obtained from our [Artifactory server]. Binaries are available for the following +operating systems: + +* CentOS 7 +* Rocky Linux 8.8 +* Rocky Linux 9.2 +* Ubuntu 20.04 +* Ubuntu 22.04 +* Windows + +The driver depends on the following libraries: + +* libuv (1.x) +* OpenSSL +* zlib + +The version of OpenSSL and zlib provided with each Linux distribution above can be used +to build the driver. A version of libuv > 1.x is provided for CentOS 7 and Rocky +Linux; this can be found under the `dependencies` directory for each platform. +Packages for all three dependencies are provided for Windows distributions. ## Upgrading @@ -41,7 +47,7 @@ Linking changes will be required when migrating to this driver. Replace `-ldse` No changes will be required when upgrading to this driver. There will be new driver dependencies when using any of the binary versions obtained from our -[download server] as [Kerberos] is utilized in the [DSE features] of this +[Artifactory server] as [Kerberos] is utilized in the [DSE features] of this driver. See the [installation] section for more information on obtaining the dependencies for a specific platform. @@ -85,11 +91,22 @@ dependencies for a specific platform. ## Compatibility This driver works exclusively with the Cassandra Query Language v3 (CQL3) and -Cassandra's native protocol. The current version works with: +Cassandra's native protocol. The current version works with the following +server versions: + +* Apache Cassandra® versions 3.0.x, 3.11.x and 4.0.x +* DSE versions 6.8.x and 5.1.x + +Both 32-bit (x86) and 64-bit (x64) architectures are supported + +We build and test the driver on the following platforms: -* Apache Cassandra® versions 2.1, 2.2 and 3.0+ -* Architectures: 32-bit (x86) and 64-bit (x64) -* Compilers: GCC 4.1.2+, Clang 3.4+, and MSVC 2010/2012/2013/2015/2017/2019 +* CentOS 7 w/ gcc 4.8.5 +* Rocky Linux 8.8 w/ gcc 8.5.0 +* Rocky Linux 9.2 w/ gcc 11.3.1 +* Ubuntu 20.04 w/ gcc 9.4.0 +* Ubuntu 22.04 w/ gcc 11.3.0 +* Microsoft Visual Studio 2013, 2015, 2017 and 2019 A complete compatibility matrix for both Apache Cassandra® and DataStax Enterprise can be found [here][cpp-driver-compatability-matrix]. @@ -105,8 +122,8 @@ __Disclaimer__: DataStax products do not support big-endian systems. ## Getting Help -* JIRA: https://datastax-oss.atlassian.net/browse/CPP -* Mailing List: https://groups.google.com/a/lists.datastax.com/forum/#!forum/cpp-driver-user +* JIRA: [jira] +* Mailing List: [mailing list] ## Examples @@ -207,20 +224,15 @@ specific language governing permissions and limitations under the License. [Apache Cassandra®]: http://cassandra.apache.org [DataStax Enterprise]: http://www.datastax.com/products/datastax-enterprise [Examples]: examples/ -[download server]: http://downloads.datastax.com/cpp-driver/ +[Artifactory server]: https://datastax.jfrog.io/artifactory/cpp-php-drivers/cpp-driver/builds [GitHub]: https://github.com/datastax/cpp-driver -[cpp-driver-compatability-matrix]: https://docs.datastax.com/en/developer/driver-matrix/doc/cppDrivers.html#cpp-drivers +[cpp-driver-compatability-matrix]: https://docs.datastax.com/en/driver-matrix/docs/cpp-drivers.html [Home]: http://docs.datastax.com/en/developer/cpp-driver/latest [API]: http://docs.datastax.com/en/developer/cpp-driver/latest/api [Getting Started]: http://docs.datastax.com/en/developer/cpp-driver/latest/topics [Building]: http://docs.datastax.com/en/developer/cpp-driver/latest/topics/building -[centos-6-dependencies]: http://downloads.datastax.com/cpp-driver/centos/6/dependencies -[centos-7-dependencies]: http://downloads.datastax.com/cpp-driver/centos/7/dependencies -[centos-8-dependencies]: http://downloads.datastax.com/cpp-driver/centos/8/dependencies -[ubuntu-14-04-dependencies]: http://downloads.datastax.com/cpp-driver/ubuntu/14.04/dependencies -[ubuntu-16-04-dependencies]: http://downloads.datastax.com/cpp-driver/ubuntu/16.04/dependencies -[ubuntu-18-04-dependencies]: http://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies -[windows-dependencies]: http://downloads.datastax.com/cpp-driver/windows/dependencies +[jira]: https://datastax-oss.atlassian.net/browse/CPP +[mailing list]: https://groups.google.com/a/lists.datastax.com/forum/#!forum/cpp-driver-user [DataStax Astra]: https://astra.datastax.com [Kerberos]: https://web.mit.edu/kerberos diff --git a/appveyor.yml b/appveyor.yml index 5fc6044aa..a0b05b29a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,11 +30,11 @@ hosts: cpp-driver.hostname.: 127.254.254.254 environment: ARTIFACTORY_BASE_URI: - secure: JgzXEe8SETmb1jGeufZM87ov61t4gvBp/Gq0Q9lCfi41fMgV2z/21SiCobd+twf2aV5Wm+hqBLLdDwukT4UmqSWhfyq7S0CbHmaGzTXG3PE= + secure: 5bD6WmK8IFF9jHmEJ75NqryMijhEtC6eRKhA+fYbSFTwCwc9qOAdB1Lpt8CCiaNfD65i3M0rqQYLj3DL3hGTMrBMTqZnVWer5IvowlEWps8= ARTIFACTORY_USERNAME: - secure: PLLc0JCL9I7y8zw8p9meQhxXGAbyWCjyWO17xKOsyxE= + secure: o2wIBhhU3l2RmYrB+bWAq21iSZahJxHhJKoWKsjadTI= ARTIFACTORY_PASSWORD: - secure: h28bN22Py3CZPqrWoZWEjIFnpes+kslusCKP1mRYdUqBEf+OO1kFEQTZ9DGD7tuCSIIRDI3Mf9LX8zgUdmdlZA== + secure: npn828fxSYtJ4i/yeONCL7Oc2He42Ti/ohofbykRyBTlQCzIRIUYvh7iO6yqea3uAqjAMc9OtQzjy3CqH8/Vgkdk22lT/ceCfSJIpEtZwrg= APPVEYOR_IGNORE_COMMIT_FILTERING_ON_TAG: true DRIVER_TYPE: CASS LIBSSH2_VERSION: 1.9.0 @@ -43,22 +43,6 @@ environment: OPENSSL_1_1_VERSION: 1.1.1d ZLIB_VERSION: 1.2.11 matrix: - - CMAKE_GENERATOR: Visual Studio 10 2010 - OPENSSL_MAJOR_MINOR: 1.0 - VISUAL_STUDIO_INTERNAL_VERSION: 100 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 -# - CMAKE_GENERATOR: Visual Studio 10 2010 -# OPENSSL_MAJOR_MINOR: 1.1 -# VISUAL_STUDIO_INTERNAL_VERSION: 100 -# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - - CMAKE_GENERATOR: Visual Studio 11 2012 - OPENSSL_MAJOR_MINOR: 1.0 - VISUAL_STUDIO_INTERNAL_VERSION: 110 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 -# - CMAKE_GENERATOR: Visual Studio 11 2012 -# OPENSSL_MAJOR_MINOR: 1.1 -# VISUAL_STUDIO_INTERNAL_VERSION: 110 -# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - CMAKE_GENERATOR: Visual Studio 12 2013 OPENSSL_MAJOR_MINOR: 1.0 VISUAL_STUDIO_INTERNAL_VERSION: 120 diff --git a/include/cassandra.h b/include/cassandra.h index bb8c20c34..bbe9c6c1c 100644 --- a/include/cassandra.h +++ b/include/cassandra.h @@ -54,7 +54,7 @@ #define CASS_VERSION_MAJOR 2 #define CASS_VERSION_MINOR 17 #define CASS_VERSION_PATCH 0 -#define CASS_VERSION_SUFFIX "rc1" +#define CASS_VERSION_SUFFIX "" #ifdef __cplusplus extern "C" { diff --git a/topics/building/README.md b/topics/building/README.md index 125278150..69fe9a89f 100644 --- a/topics/building/README.md +++ b/topics/building/README.md @@ -4,13 +4,12 @@ The DataStax C/C++ Driver for Apache Cassandra and DataStax Products will build on most standard Unix-like and Microsoft Windows platforms. Packages are available for the following platforms: -* [CentOS 6][cpp-driver-centos6] -* [CentOS 7][cpp-driver-centos7] -* [CentOS 8][cpp-driver-centos8] -* [Ubuntu 14.04 LTS][cpp-driver-ubuntu14-04] -* [Ubuntu 16.04 LTS][cpp-driver-ubuntu16-04] -* [Ubuntu 18.04 LTS][cpp-driver-ubuntu18-04] -* [Windows][cpp-driver-windows] +* CentOS 7 +* Rocky Linux 8.8 +* Rocky Linux 9.2 +* Ubuntu 20.04 +* Ubuntu 22.04 +* Windows __NOTE__: The build procedures only need to be performed for driver development or if your system doesn't have packages available for download and @@ -19,13 +18,13 @@ __NOTE__: The build procedures only need to be performed for driver development ## Compatibility * Architectures: 32-bit (x86) and 64-bit (x64) -* Compilers: GCC 4.1.2+ Clang 3.4+, and MSVC 2010/2012/2013/2015/2017/2019 +* Compilers: GCC 4.8.5+ Clang 3.4+, and MSVC 2013/2015/2017/2019 ## Dependencies The C/C++ driver depends on the following software: -* [CMake] v2.6.4+ +* [CMake] v2.8.12+ * [libuv] 1.x * Kerberos v5 ([Heimdal] or [MIT]) \* * [OpenSSL] v1.0.x or v1.1.x \*\* @@ -101,16 +100,12 @@ libuv v1.x should be used in order to ensure all features of the C/C++ driver are available. When using a package manager for your operating system make sure you install v1.x; if available. -##### CentOS/RHEL and Ubuntu packages +##### CentOS, Rocky and Ubuntu packages -Packages are available from our [download server]: - -* [CentOS 6][libuv-centos6] -* [CentOS 7][libuv-centos7] -* [CentOS 8][libuv-centos8] -* [Ubuntu 14.04 LTS][libuv-ubuntu14-04] -* [Ubuntu 16.04 LTS][libuv-ubuntu16-04] -* [Ubuntu 18.04 LTS][libuv-ubuntu18-04] +Packages are available from our [Artifactory server]. Select the driver version, +build and platform and then look for the `dependencies` directory. Note that the +version of libuv available on Ubuntu can be used when building the driver. As a +result we only provide packages for CentOS and Rocky. ##### Mac OS (Brew) @@ -255,7 +250,7 @@ cmake -DCASS_BUILD_UNIT_TESTS=On .. ## Windows -The driver is known to build with Visual Studio 2010, 2012, 2013, 2015, 2017, and 2019. +The driver is known to build with Visual Studio 2013, 2015, 2017, and 2019. ### Obtaining build dependencies @@ -278,8 +273,6 @@ First you will need to open a "Command Prompt" to execute the CMake commands. #### Building the C/C++ driver Supported generators are: -* Visual Studio 10 2010 -* Visual Studio 11 2012 * Visual Studio 12 2013 * Visual Studio 14 2015 * Visual Studio 15 2017 @@ -329,20 +322,7 @@ cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_INTEGRATION_TESTS=On .. cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_UNIT_TESTS=On .. ``` -[download server]: http://downloads.datastax.com -[cpp-driver-centos6]: http://downloads.datastax.com/cpp-driver/centos/6/cassandra -[cpp-driver-centos7]: http://downloads.datastax.com/cpp-driver/centos/7/cassandra -[cpp-driver-centos8]: http://downloads.datastax.com/cpp-driver/centos/8/cassandra -[cpp-driver-ubuntu14-04]: http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra -[cpp-driver-ubuntu16-04]: http://downloads.datastax.com/cpp-driver/ubuntu/16.04/cassandra -[cpp-driver-ubuntu18-04]: http://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra -[cpp-driver-windows]: http://downloads.datastax.com/cpp-driver/windows/cassandra -[libuv-centos6]: http://downloads.datastax.com/cpp-driver/centos/6/dependencies/libuv -[libuv-centos7]: http://downloads.datastax.com/cpp-driver/centos/7/dependencies/libuv -[libuv-centos8]: http://downloads.datastax.com/cpp-driver/centos/8/dependencies/libuv -[libuv-ubuntu14-04]: http://downloads.datastax.com/cpp-driver/ubuntu/14.04/dependencies/libuv -[libuv-ubuntu16-04]: http://downloads.datastax.com/cpp-driver/ubuntu/16.04/dependencies/libuv -[libuv-ubuntu18-04]: http://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv +[Artifactory server]: https://datastax.jfrog.io/artifactory/cpp-php-drivers/cpp-driver/builds [Homebrew]: https://brew.sh [Bison]: http://gnuwin32.sourceforge.net/downlinks/bison.php [CMake]: http://www.cmake.org/download diff --git a/topics/installation/README.md b/topics/installation/README.md index 2bd6b058c..e50697e79 100644 --- a/topics/installation/README.md +++ b/topics/installation/README.md @@ -2,66 +2,17 @@ ## Packages -Pre-built packages are available for CentOS 6/7/8, Ubuntu 14.04/16.04/18.04 and -Windows 7 SP1 and above. +Pre-built packages are available for CentOS 7, Ubuntu 20.04/22.04, +Rocky Linux 8 and 9 and Windows. All packages are available from our +[Artifactory server]. ### CentOS - - - - - - - - - - - - - - - - - - - - - - -
VersionURL
CentOS 6http://downloads.datastax.com/cpp-driver/centos/6/cassandra
CentOS 7http://downloads.datastax.com/cpp-driver/centos/7/cassandra
CentOS 8http://downloads.datastax.com/cpp-driver/centos/8/cassandra
- -#### Dependencies - CentOS doesn't have up-to-date versions of libuv so we provide current packages. +These packages can be found in the `dependencies` directory under each driver +version in Artifactory. - - - - - - - - - - - - - - - - - - - - - - -
VersionURL
CentOS 6http://downloads.datastax.com/cpp-driver/centos/6/dependencies
CentOS 7http://downloads.datastax.com/cpp-driver/centos/7/dependencies
CentOS 8http://downloads.datastax.com/cpp-driver/centos/8/dependencies
- -#### To Install - -Install dependencies: +First install dependencies: ```bash yum install openssl krb5 zlib @@ -70,7 +21,7 @@ rpm -Uvh libuv-.rpm Note: Replace `` with the release version of the package. -Install the runtime library: +Then install the runtime library: ```bash rpm -Uvh cassandra-cpp-driver-.rpm @@ -84,70 +35,31 @@ rpm -Uvh cassandra-cpp-driver-devel-.rpm rpm -Uvh cassandra-cpp-driver-debuginfo-.rpm ``` -### Ubuntu +### Rocky Linux - - - - - - - - - - - - - - - - - - - - - - -
VersionURL
Ubuntu 14.04http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra
Ubuntu 16.04http://downloads.datastax.com/cpp-driver/ubuntu/16.04/cassandra
Ubuntu 18.04http://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra
- -#### Dependencies - -Ubuntu doesn't have up-to-date versions of libuv so we provide current packages. - - - - - - - - - - - - - - - - - - - - - - - -
VersionURL
Ubuntu 14.04http://downloads.datastax.com/cpp-driver/ubuntu/14.04/dependencies
Ubuntu 16.04http://downloads.datastax.com/cpp-driver/ubuntu/16.04/dependencies
Ubuntu 18.04http://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies
- -#### To Install - -Install dependencies: +Rocky Linux also doesn't have up-to-date versions of libuv so packages are available +for this platform as well. + +To install dependencies: ```bash -apt-get install libssl libkrb5 zlib1g -dpkg -i libuv_.deb +yum install openssl krb5 zlib +rpm -Uvh libuv-.rpm ``` -Note: Replace `` with the release version of the package. +Then install the runtime library (and optionally the development package and debug +symbols) as described above. + +### Ubuntu + +Newer versions of Ubuntu include workable versions of all dependencies; you do not +need to download anything from Artifactory. + +To install dependencies: + +```bash +apt-get install libssl libkrb5 zlib1g libuv1 +``` Install the runtime library: @@ -165,51 +77,15 @@ dpkg -i cassandra-cpp-driver-dbg_.deb ### Windows - - - - - - - - - - - - - - -
VersionURL
Windowshttp://downloads.datastax.com/cpp-driver/windows/cassandra
- -#### Dependencies - We provide packages (`.zip` files) for all the dependencies (except for Kerberos) on Windows because they can be difficult to install/build. - - - - - - - - - - - - - - -
VersionURL
Windowshttp://downloads.datastax.com/cpp-driver/windows/dependencies
- -#### To Install - -First, you will need to download and install [Kerberos] for Windows. - -Unzip the packages (from http://downloads.datastax.com) and add the include and +Unzip the packages obtained from Artifactory and add the include and library directories to your project's `Additional Include Directories` and `Additional Dependencies` configuration properties. +You will also need to download and install [Kerberos] for Windows. + ## Building If pre-built packages are not available for your platform or architecture you @@ -217,4 +93,5 @@ will need to build the driver from source. Directions for building and installing the DataStax C/C++ Driver for Apache Cassandra and DataStax Products can be found [here](/topics/building/). +[Artifactory server]: https://datastax.jfrog.io/artifactory/cpp-php-drivers/cpp-driver/builds [Kerberos]: https://web.mit.edu/kerberos