Skip to content

Commit

Permalink
Remove dependency on Sigar in favor of OSHI
Browse files Browse the repository at this point in the history
patch by Claude Warren; reviewed by Stefan Miklosovic, Jacek Lewandowski, Michael Semb Wever for CASSANDRA-16565

Co-authored-by: Stefan Miklosovic <smiklosovic@apache.org>
  • Loading branch information
Claudenw and smiklosovic committed Jan 23, 2024
1 parent 34fa4e2 commit 5d46ff2
Show file tree
Hide file tree
Showing 26 changed files with 461 additions and 339 deletions.
47 changes: 1 addition & 46 deletions .build/build-resolver.xml
Expand Up @@ -204,8 +204,6 @@
<files dir="${build.lib}" layout="{artifactId}-{version}-{classifier}.{extension}" scopes="compile,!provide,!system"/>
</resolve>
</retry>
<mkdir dir="${local.repository}/org/apache/cassandra/deps/sigar-bin"/>
<mkdir dir="${build.lib}/sigar-bin"/>
<mkdir dir="${build.lib}/x86_64"/>
<mkdir dir="${build.lib}/aarch64"/> <!-- uname -m on arm prints aarch64 instead of aarch_64 -->

Expand Down Expand Up @@ -237,28 +235,6 @@
<file file="${local.repository}/org/apache/cassandra/deps/pure_sasl-0.6.2-py2-none-any.zip"/>
<file file="${local.repository}/org/apache/cassandra/deps/wcwidth-0.2.5-py2.py3-none-any.zip"/>
</copy>
<copy todir="${build.lib}/sigar-bin/" quiet="true">
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-amd64-freebsd-6.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-amd64-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-amd64-solaris.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ia64-hpux-11.sl"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ia64-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-pa-hpux-11.sl"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ppc-aix-5.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ppc-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ppc64-aix-5.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ppc64-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-ppc64le-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-s390x-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-sparc-solaris.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-sparc64-solaris.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-universal-macosx.dylib"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-universal64-macosx.dylib"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-x86-freebsd-5.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-x86-freebsd-6.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-x86-linux.so"/>
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-x86-solaris.so"/>
</copy>

<!-- as resolver will copy all dependencies into lib dir, and we are copying jars to lib/{x86_64|aarch64} as well, we would have duplicities -->
<delete file="${build.lib}/AmazonCorrettoCryptoProvider-2.2.0-linux-x86_64.jar" failonerror="false"/>
Expand All @@ -269,35 +245,14 @@
</target>

<target name="_resolver-dist-lib_get_files">
<mkdir dir="${local.repository}/org/apache/cassandra/deps" />
<!-- files.pythonhosted.org/packages -->
<get src="${artifact.python.pypi}/59/a0/cf4cd997e1750f0c2d91c6ea5abea218251c43c3581bcc2f118b00baf5cf/futures-2.1.6-py2.py3-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/futures-2.1.6-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
<get src="${artifact.python.pypi}/37/b2/ef1124540ee2c0b417be8d0f74667957e6aa084a3f26621aa67e2e77f3fb/pure_sasl-0.6.2-py2-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/pure_sasl-0.6.2-py2-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
<get src="${artifact.python.pypi}/59/7c/e39aca596badaf1b78e8f547c807b04dae603a433d3e7a7e04d67f2ef3e5/wcwidth-0.2.5-py2.py3-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/wcwidth-0.2.5-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>

<!-- apache/cassandra/lib -->
<get src="${lib.download.base.url}/lib/geomet-0.1.0.zip" dest="${local.repository}/org/apache/cassandra/deps/geomet-0.1.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
<get dest="${local.repository}/org/apache/cassandra/deps/sigar-bin/" quiet="true" usetimestamp="true" skipexisting="true">
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-freebsd-6.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-solaris.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ia64-hpux-11.sl"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ia64-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-pa-hpux-11.sl"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc-aix-5.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64-aix-5.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64le-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-s390x-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-sparc-solaris.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-sparc64-solaris.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-universal-macosx.dylib"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-universal64-macosx.dylib"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-freebsd-5.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-freebsd-6.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-linux.so"/>
<url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-solaris.so"/>
</get>
</target>

</project>
4 changes: 2 additions & 2 deletions .build/cassandra-deps-template.xml
Expand Up @@ -244,8 +244,8 @@
<!-- end of chronicle-queue -->

<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
Expand Down
18 changes: 13 additions & 5 deletions .build/parent-pom-template.xml
Expand Up @@ -993,13 +993,21 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>6.4.8</version>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-bom</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-parent</artifactId>
</exclusion>
</exclusions>
</dependency>
Expand Down
1 change: 1 addition & 0 deletions CHANGES.txt
@@ -1,4 +1,5 @@
5.1
* Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565)
* Simplify the bind marker and Term logic (CASSANDRA-18813)
* Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688)
* Standardize nodetool tablestats formatting of data units (CASSANDRA-19104)
Expand Down
3 changes: 0 additions & 3 deletions bin/cassandra.in.sh
Expand Up @@ -81,9 +81,6 @@ fi
# set JVM javaagent opts to avoid warnings/errors
JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.4.0.jar"

# Added sigar-bin to the java.library.path CASSANDRA-7838
JAVA_OPTS="$JAVA_OPTS:-Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin"

platform=$(uname -m)
if [ -d "$CASSANDRA_HOME"/lib/"$platform" ]; then
for jar in "$CASSANDRA_HOME"/lib/"$platform"/*.jar ; do
Expand Down
5 changes: 0 additions & 5 deletions conf/cassandra-env.sh
Expand Up @@ -271,11 +271,6 @@ JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/
#MX4J_ADDRESS="127.0.0.1"
#MX4J_PORT="8081"

# Cassandra uses SIGAR to capture OS metrics CASSANDRA-7838
# for SIGAR we have to set the java.library.path
# to the location of the native libraries.
JVM_OPTS="$JVM_OPTS -Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin"

if [ "x$MX4J_ADDRESS" != "x" ]; then
if [[ "$MX4J_ADDRESS" == \-Dmx4jaddress* ]]; then
# Backward compatible with the older style #13578
Expand Down
1 change: 0 additions & 1 deletion debian/cassandra.install
Expand Up @@ -30,6 +30,5 @@ tools/bin/hash_password usr/bin
tools/bin/sstablepartitions usr/bin
lib/*.jar usr/share/cassandra/lib
lib/*.zip usr/share/cassandra/lib
lib/sigar-bin/* usr/share/cassandra/lib/sigar-bin
lib/x86_64/* usr/share/cassandra/lib/x86_64
lib/aarch64/* usr/share/cassandra/lib/aarch64
3 changes: 0 additions & 3 deletions ide/idea/workspace.xml
Expand Up @@ -149,7 +149,6 @@
-Dcassandra.logdir=$PROJECT_DIR$/data/logs
-Dcassandra.reads.thresholds.coordinator.defensive_checks_enabled=true
-Dcassandra.storagedir=$PROJECT_DIR$/data
-Djava.library.path=$PROJECT_DIR$/lib/sigar-bin
-Dlogback.configurationFile=file://$PROJECT_DIR$/conf/logback.xml
-XX:HeapDumpPath=build/test
-ea" />
Expand Down Expand Up @@ -194,7 +193,6 @@
-Dcassandra.tolerate_sstable_size=true
-Dcassandra.use_nix_recursive_delete=true
-Dinvalid-legacy-sstable-root=$PROJECT_DIR$/test/data/invalid-legacy-sstables
-Djava.library.path=$PROJECT_DIR$/lib/sigar-bin
-Dlegacy-sstable-root=$PROJECT_DIR$/test/data/legacy-sstables
-Dlogback.configurationFile=file://$PROJECT_DIR$/test/conf/logback-test.xml
-Dmigration-sstable-root=$PROJECT_DIR$/test/data/migration-sstables
Expand Down Expand Up @@ -231,7 +229,6 @@
-Dcassandra.reads.thresholds.coordinator.defensive_checks_enabled=true
-Dcassandra.storagedir=$PROJECT_DIR$/data
-Dcassandra.triggers_dir=$PROJECT_DIR$/conf/triggers
-Djava.library.path=$PROJECT_DIR$/lib/sigar-bin
-Dlogback.configurationFile=file://$PROJECT_DIR$/conf/logback.xml
-XX:HeapDumpPath=build/test
-Xmx1G
Expand Down

0 comments on commit 5d46ff2

Please sign in to comment.