diff --git a/.gitignore b/.gitignore index e69de29..e9c0590 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/cassandra-3.9.tar.gz diff --git a/cassandra-3.9-airline0.7.patch b/cassandra-3.9-airline0.7.patch new file mode 100644 index 0000000..ef9005a --- /dev/null +++ b/cassandra-3.9-airline0.7.patch @@ -0,0 +1,1263 @@ +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Assassinate.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Assassinate.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Assassinate.java 2016-10-17 13:11:26.286759742 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Assassinate.java 2016-10-17 10:58:46.171126948 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.net.UnknownHostException; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/BootstrapResume.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/BootstrapResume.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/BootstrapResume.java 2016-10-17 13:11:26.289759772 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/BootstrapResume.java 2016-10-17 10:58:46.171126948 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.io.IOError; + import java.io.IOException; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CfHistograms.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CfHistograms.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CfHistograms.java 2016-10-17 13:11:26.289759772 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CfHistograms.java 2016-10-17 10:58:46.171126948 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + /** + * @deprecated use TableHistograms +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CfStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CfStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CfStats.java 2016-10-17 13:11:26.289759772 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CfStats.java 2016-10-17 10:58:46.171126948 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + /** + * @deprecated use TableStats +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Cleanup.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Cleanup.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Cleanup.java 2016-10-17 13:11:26.289759772 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Cleanup.java 2016-10-17 10:58:46.171126948 +0200 +@@ -17,14 +17,14 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; + + import org.apache.cassandra.config.Schema; +-import io.airlift.command.Option; ++import io.airlift.airline.Option; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ClearSnapshot.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ClearSnapshot.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ClearSnapshot.java 2016-10-17 13:11:26.289759772 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ClearSnapshot.java 2016-10-17 10:58:46.171126948 +0200 +@@ -20,9 +20,9 @@ + import static com.google.common.collect.Iterables.toArray; + import static org.apache.commons.lang3.StringUtils.EMPTY; + import static org.apache.commons.lang3.StringUtils.join; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.io.IOException; + import java.util.ArrayList; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CompactionHistory.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CompactionHistory.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CompactionHistory.java 2016-10-17 13:11:26.290759781 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CompactionHistory.java 2016-10-17 10:58:46.172126957 +0200 +@@ -26,7 +26,7 @@ + import java.util.Set; + import javax.management.openmbean.TabularData; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java 2016-10-17 13:11:26.290759781 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java 2016-10-17 10:58:46.172126957 +0200 +@@ -22,8 +22,8 @@ + import java.util.Map; + import java.util.Map.Entry; + +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import org.apache.cassandra.db.compaction.CompactionManagerMBean; + import org.apache.cassandra.db.compaction.OperationType; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Compact.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Compact.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Compact.java 2016-10-17 13:11:26.290759781 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Compact.java 2016-10-17 10:58:46.172126957 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Decommission.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Decommission.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Decommission.java 2016-10-17 13:11:26.290759781 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Decommission.java 2016-10-17 10:58:46.172126957 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DescribeCluster.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DescribeCluster.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DescribeCluster.java 2016-10-17 13:11:26.290759781 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DescribeCluster.java 2016-10-17 10:58:46.172126957 +0200 +@@ -18,7 +18,7 @@ + package org.apache.cassandra.tools.nodetool; + + import static java.lang.String.format; +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.util.List; + import java.util.Map; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DescribeRing.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DescribeRing.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DescribeRing.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DescribeRing.java 2016-10-17 10:58:46.172126957 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.io.IOException; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableAutoCompaction.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableAutoCompaction.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableAutoCompaction.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableAutoCompaction.java 2016-10-17 10:58:46.172126957 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.io.IOException; + import java.util.ArrayList; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableBackup.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableBackup.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableBackup.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableBackup.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableBinary.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableBinary.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableBinary.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableBinary.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableGossip.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableGossip.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableGossip.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableGossip.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableHandoff.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableHandoff.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableHandoff.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableHandoff.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableHintsForDC.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableHintsForDC.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableHintsForDC.java 2016-10-17 13:11:26.291759791 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableHintsForDC.java 2016-10-17 10:58:46.173126965 +0200 +@@ -20,8 +20,8 @@ + import java.util.ArrayList; + import java.util.List; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableThrift.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableThrift.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/DisableThrift.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/DisableThrift.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Drain.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Drain.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Drain.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Drain.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.io.IOException; + import java.util.concurrent.ExecutionException; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableAutoCompaction.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableAutoCompaction.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableAutoCompaction.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableAutoCompaction.java 2016-10-17 10:58:46.173126965 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.io.IOException; + import java.util.ArrayList; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableBackup.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableBackup.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableBackup.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableBackup.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableBinary.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableBinary.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableBinary.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableBinary.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableGossip.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableGossip.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableGossip.java 2016-10-17 13:11:26.292759801 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableGossip.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableHandoff.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableHandoff.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableHandoff.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableHandoff.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableHintsForDC.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableHintsForDC.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableHintsForDC.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableHintsForDC.java 2016-10-17 10:58:46.174126974 +0200 +@@ -20,8 +20,8 @@ + import java.util.ArrayList; + import java.util.List; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableThrift.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableThrift.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/EnableThrift.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/EnableThrift.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/FailureDetectorInfo.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/FailureDetectorInfo.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/FailureDetectorInfo.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/FailureDetectorInfo.java 2016-10-17 10:58:46.174126974 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.util.List; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Flush.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Flush.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Flush.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Flush.java 2016-10-17 10:58:46.175126982 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GcStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GcStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GcStats.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GcStats.java 2016-10-17 10:58:46.175126982 +0200 +@@ -20,7 +20,7 @@ + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + @Command(name = "gcstats", description = "Print GC Statistics") + public class GcStats extends NodeToolCmd +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThreshold.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThreshold.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThreshold.java 2016-10-17 13:11:26.293759811 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThreshold.java 2016-10-17 10:58:46.175126982 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThroughput.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetCompactionThroughput.java 2016-10-17 10:58:46.175126982 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetEndpoints.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetEndpoints.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetEndpoints.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetEndpoints.java 2016-10-17 10:58:46.175126982 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.net.InetAddress; + import java.util.ArrayList; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java 2016-10-17 10:58:46.175126982 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetLoggingLevels.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetLoggingLevels.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetLoggingLevels.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetLoggingLevels.java 2016-10-17 10:58:46.175126982 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.util.Map; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetSSTables.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetSSTables.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetSSTables.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetSSTables.java 2016-10-17 13:13:11.617792304 +0200 +@@ -18,13 +18,13 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; + +-import io.airlift.command.Option; ++import io.airlift.airline.Option; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; + +@@ -53,4 +53,4 @@ + System.out.println(sstable); + } + } +-} +\ No newline at end of file ++} +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetStreamThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetStreamThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetStreamThroughput.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetStreamThroughput.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetTimeout.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetTimeout.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetTimeout.java 2016-10-17 13:11:26.294759821 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetTimeout.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetTraceProbability.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetTraceProbability.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GetTraceProbability.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GetTraceProbability.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GossipInfo.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GossipInfo.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/GossipInfo.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/GossipInfo.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Info.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Info.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Info.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Info.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.lang.management.MemoryUsage; + import java.util.Iterator; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateCounterCache.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateCounterCache.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateCounterCache.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateCounterCache.java 2016-10-17 10:58:46.176126991 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateKeyCache.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateKeyCache.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateKeyCache.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateKeyCache.java 2016-10-17 10:58:46.177126999 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateRowCache.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateRowCache.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/InvalidateRowCache.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/InvalidateRowCache.java 2016-10-17 10:58:46.177126999 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Join.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Join.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Join.java 2016-10-17 13:11:26.295759830 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Join.java 2016-10-17 10:58:46.177126999 +0200 +@@ -18,7 +18,7 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkState; +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.io.IOException; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ListSnapshots.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ListSnapshots.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ListSnapshots.java 2016-10-17 13:11:26.296759840 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ListSnapshots.java 2016-10-17 10:58:46.177126999 +0200 +@@ -22,7 +22,7 @@ + import java.util.Set; + import javax.management.openmbean.TabularData; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.io.util.FileUtils; + import org.apache.cassandra.tools.NodeProbe; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Move.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Move.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Move.java 2016-10-17 13:11:26.296759840 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Move.java 2016-10-17 10:58:46.177126999 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.io.IOException; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/NetStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/NetStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/NetStats.java 2016-10-17 13:11:26.296759840 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/NetStats.java 2016-10-17 10:58:46.177126999 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.Set; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/PauseHandoff.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/PauseHandoff.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/PauseHandoff.java 2016-10-17 13:11:26.296759840 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/PauseHandoff.java 2016-10-17 10:58:46.177126999 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ProxyHistograms.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ProxyHistograms.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ProxyHistograms.java 2016-10-17 13:11:26.297759850 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ProxyHistograms.java 2016-10-17 10:58:46.177126999 +0200 +@@ -18,7 +18,7 @@ + package org.apache.cassandra.tools.nodetool; + + import static java.lang.String.format; +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RangeKeySample.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RangeKeySample.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RangeKeySample.java 2016-10-17 13:11:26.297759850 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RangeKeySample.java 2016-10-17 10:58:46.178127007 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.util.List; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RebuildIndex.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RebuildIndex.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RebuildIndex.java 2016-10-17 13:11:26.298759860 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RebuildIndex.java 2016-10-17 10:58:46.178127007 +0200 +@@ -19,8 +19,8 @@ + + import static com.google.common.base.Preconditions.checkArgument; + import static com.google.common.collect.Iterables.toArray; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Rebuild.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Rebuild.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Rebuild.java 2016-10-17 13:11:26.298759860 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Rebuild.java 2016-10-17 10:52:30.337742600 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +@@ -52,4 +52,4 @@ + + probe.rebuild(sourceDataCenterName, keyspace, tokens); + } +-} +\ No newline at end of file ++} +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Refresh.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Refresh.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Refresh.java 2016-10-17 13:11:26.298759860 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Refresh.java 2016-10-17 10:58:46.178127007 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RefreshSizeEstimates.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RefreshSizeEstimates.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RefreshSizeEstimates.java 2016-10-17 13:11:26.299759870 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RefreshSizeEstimates.java 2016-10-17 10:58:46.178127007 +0200 +@@ -18,7 +18,7 @@ + + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ReloadTriggers.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ReloadTriggers.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ReloadTriggers.java 2016-10-17 13:11:26.299759870 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ReloadTriggers.java 2016-10-17 10:58:46.178127007 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RelocateSSTables.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RelocateSSTables.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RelocateSSTables.java 2016-10-17 13:11:26.299759870 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RelocateSSTables.java 2016-10-17 10:58:46.178127007 +0200 +@@ -20,9 +20,9 @@ + import java.util.ArrayList; + import java.util.List; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RemoveNode.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RemoveNode.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/RemoveNode.java 2016-10-17 13:11:26.300759879 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/RemoveNode.java 2016-10-17 10:58:46.179127016 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Repair.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Repair.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Repair.java 2016-10-17 13:11:26.300759879 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Repair.java 2016-10-17 10:58:46.179127016 +0200 +@@ -19,9 +19,9 @@ + + import static com.google.common.collect.Lists.newArrayList; + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.HashMap; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ReplayBatchlog.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ReplayBatchlog.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ReplayBatchlog.java 2016-10-17 13:11:26.300759879 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ReplayBatchlog.java 2016-10-17 10:58:46.179127016 +0200 +@@ -21,7 +21,7 @@ + import java.io.IOError; + import java.io.IOException; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ResetLocalSchema.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ResetLocalSchema.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ResetLocalSchema.java 2016-10-17 13:11:26.300759879 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ResetLocalSchema.java 2016-10-17 10:58:46.179127016 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.io.IOException; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ResumeHandoff.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ResumeHandoff.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ResumeHandoff.java 2016-10-17 13:11:26.300759879 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ResumeHandoff.java 2016-10-17 10:58:46.179127016 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Ring.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Ring.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Ring.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Ring.java 2016-10-17 10:58:46.179127016 +0200 +@@ -18,9 +18,9 @@ + package org.apache.cassandra.tools.nodetool; + + import static java.lang.String.format; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.net.InetAddress; + import java.net.UnknownHostException; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Scrub.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Scrub.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Scrub.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Scrub.java 2016-10-17 10:58:46.179127016 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCacheCapacity.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCacheCapacity.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCacheCapacity.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCacheCapacity.java 2016-10-17 10:58:46.180127024 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCacheKeysToSave.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCacheKeysToSave.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCacheKeysToSave.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCacheKeysToSave.java 2016-10-17 10:58:46.180127024 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThreshold.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThreshold.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThreshold.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThreshold.java 2016-10-17 10:58:46.180127024 +0200 +@@ -19,8 +19,8 @@ + + import static com.google.common.base.Preconditions.checkArgument; + import static java.lang.Integer.parseInt; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThroughput.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetCompactionThroughput.java 2016-10-17 10:58:46.180127024 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetHintedHandoffThrottleInKB.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetHintedHandoffThrottleInKB.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetHintedHandoffThrottleInKB.java 2016-10-17 13:11:26.301759889 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetHintedHandoffThrottleInKB.java 2016-10-17 10:58:46.180127024 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java 2016-10-17 10:58:46.180127024 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetLoggingLevel.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetLoggingLevel.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetLoggingLevel.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetLoggingLevel.java 2016-10-17 10:58:46.180127024 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetStreamThroughput.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetStreamThroughput.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetStreamThroughput.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetStreamThroughput.java 2016-10-17 10:58:46.181127033 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetTimeout.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetTimeout.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetTimeout.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetTimeout.java 2016-10-17 10:58:46.181127033 +0200 +@@ -17,8 +17,8 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetTraceProbability.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetTraceProbability.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/SetTraceProbability.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/SetTraceProbability.java 2016-10-17 10:58:46.181127033 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static com.google.common.base.Preconditions.checkArgument; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Snapshot.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Snapshot.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Snapshot.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Snapshot.java 2016-10-17 10:58:46.181127033 +0200 +@@ -19,9 +19,9 @@ + + import static com.google.common.collect.Iterables.toArray; + import static org.apache.commons.lang3.StringUtils.join; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.io.IOException; + import java.util.ArrayList; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusBackup.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusBackup.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusBackup.java 2016-10-17 13:11:26.302759899 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusBackup.java 2016-10-17 10:58:46.181127033 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusBinary.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusBinary.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusBinary.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusBinary.java 2016-10-17 10:58:46.181127033 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusGossip.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusGossip.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusGossip.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusGossip.java 2016-10-17 10:58:46.182127041 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusHandoff.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusHandoff.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusHandoff.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusHandoff.java 2016-10-17 10:58:46.182127041 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Status.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Status.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Status.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Status.java 2016-10-17 10:58:46.183127050 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.net.InetAddress; + import java.net.UnknownHostException; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusThrift.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusThrift.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StatusThrift.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StatusThrift.java 2016-10-17 10:58:46.183127050 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StopDaemon.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StopDaemon.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/StopDaemon.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/StopDaemon.java 2016-10-17 10:58:46.183127050 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Stop.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Stop.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Stop.java 2016-10-17 13:11:26.303759909 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Stop.java 2016-10-17 10:58:46.184127058 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import org.apache.cassandra.db.compaction.OperationType; + import org.apache.cassandra.tools.NodeProbe; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TableHistograms.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TableHistograms.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TableHistograms.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TableHistograms.java 2016-10-17 10:58:46.184127058 +0200 +@@ -19,8 +19,8 @@ + + import static com.google.common.base.Preconditions.checkArgument; + import static java.lang.String.format; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TableStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TableStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TableStats.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TableStats.java 2016-10-17 10:55:04.295160059 +0200 +@@ -21,9 +21,9 @@ + import javax.management.InstanceNotFoundException; + + import com.google.common.collect.ArrayListMultimap; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import org.apache.cassandra.db.ColumnFamilyStoreMBean; + import org.apache.cassandra.io.util.FileUtils; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TopPartitions.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TopPartitions.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TopPartitions.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TopPartitions.java 2016-10-17 10:58:46.185127067 +0200 +@@ -19,9 +19,9 @@ + + import static com.google.common.base.Preconditions.checkArgument; + import static org.apache.commons.lang3.StringUtils.join; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.Collections; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TpStats.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TpStats.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TpStats.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TpStats.java 2016-10-17 10:58:46.185127067 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import java.util.Map; + +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TruncateHints.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TruncateHints.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/TruncateHints.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/TruncateHints.java 2016-10-17 10:58:46.186127075 +0200 +@@ -18,8 +18,8 @@ + package org.apache.cassandra.tools.nodetool; + + import static org.apache.commons.lang3.StringUtils.EMPTY; +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java 2016-10-17 10:58:46.186127075 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Verify.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Verify.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Verify.java 2016-10-17 13:11:26.304759919 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Verify.java 2016-10-17 10:58:46.186127075 +0200 +@@ -17,9 +17,9 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; +-import io.airlift.command.Option; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; ++import io.airlift.airline.Option; + + import java.util.ArrayList; + import java.util.List; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Version.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Version.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/Version.java 2016-10-17 13:11:26.305759928 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/Version.java 2016-10-17 10:58:46.186127075 +0200 +@@ -17,7 +17,7 @@ + */ + package org.apache.cassandra.tools.nodetool; + +-import io.airlift.command.Command; ++import io.airlift.airline.Command; + + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ViewBuildStatus.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ViewBuildStatus.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/nodetool/ViewBuildStatus.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/nodetool/ViewBuildStatus.java 2016-10-17 13:13:41.405084309 +0200 +@@ -22,8 +22,8 @@ + import java.util.List; + import java.util.Map; + +-import io.airlift.command.Arguments; +-import io.airlift.command.Command; ++import io.airlift.airline.Arguments; ++import io.airlift.airline.Command; + import org.apache.cassandra.tools.NodeProbe; + import org.apache.cassandra.tools.NodeTool; + import org.apache.cassandra.tools.nodetool.formatter.TableBuilder; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/NodeTool.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/NodeTool.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/tools/NodeTool.java 2016-10-17 13:11:26.305759928 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/tools/NodeTool.java 2016-10-17 10:58:46.186127075 +0200 +@@ -28,7 +28,7 @@ + import com.google.common.base.Throwables; + import com.google.common.collect.*; + +-import io.airlift.command.*; ++import io.airlift.airline.*; + + import org.apache.cassandra.locator.EndpointSnitchInfoMBean; + import org.apache.cassandra.tools.nodetool.*; diff --git a/cassandra-3.9-build.patch b/cassandra-3.9-build.patch new file mode 100644 index 0000000..9591f73 --- /dev/null +++ b/cassandra-3.9-build.patch @@ -0,0 +1,185 @@ +diff -urN cassandra-cassandra-3.9/build.xml cassandra-cassandra-3.9new/build.xml +--- cassandra-cassandra-3.9/build.xml 2016-11-30 11:59:19.400942783 +0100 ++++ cassandra-cassandra-3.9new/build.xml 2016-12-01 10:49:05.383549756 +0100 +@@ -17,7 +17,7 @@ + ~ specific language governing permissions and limitations + ~ under the License. + --> +- + + +@@ -76,7 +76,7 @@ + + + +- ++ + + +@@ -173,7 +173,8 @@ + windowtitle="${ant.project.name} API" classpathref="cassandra.classpath" + bottom="Copyright &copy; ${YEAR} The Apache Software Foundation" + useexternalfile="yes" +- maxmemory="256m"> ++ maxmemory="256m" ++ encoding="utf-8"> + + + +@@ -224,7 +225,7 @@ + + Building Grammar ${build.src.antlr}/Cql.g ... + + +@@ -267,7 +268,7 @@ + grammar files + --> + +- ++ + + + +@@ -383,9 +384,8 @@ + + + +- +- +- ++ ++ + + + +@@ -398,7 +398,7 @@ + + + +- ++ + + + +@@ -430,7 +430,7 @@ + + + +- ++ + + + +@@ -446,8 +446,7 @@ + + + +- +- ++ + + + +@@ -489,11 +488,11 @@ + version="${version}"/> + + +- ++ + + + +- ++ + + + +@@ -515,7 +514,7 @@ + artifactId="cassandra-parent" + version="${version}"/> + +- ++ + + + +@@ -577,7 +576,7 @@ + + + +- ++ + + + +@@ -593,11 +592,11 @@ + + + +- ++ + + + +- ++ + + + +@@ -632,8 +631,7 @@ + + + +- +- ++ + + + +@@ -799,10 +797,10 @@ + The build target builds all the .class files + --> + ++ depends="build-project" description="Compile Cassandra classes"/> + + +- + + +@@ -873,7 +871,7 @@ + The jar target makes cassandra.jar output. + --> + + + +@@ -913,8 +911,6 @@ + + +- + + + +@@ -947,7 +943,7 @@ + + + +- ++ + + + diff --git a/cassandra-3.9-hppc.patch b/cassandra-3.9-hppc.patch new file mode 100644 index 0000000..65e9fba --- /dev/null +++ b/cassandra-3.9-hppc.patch @@ -0,0 +1,210 @@ +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java 2016-10-17 13:43:49.832944178 +0200 +@@ -33,7 +33,7 @@ + import com.google.common.annotations.VisibleForTesting; + + import com.carrotsearch.hppc.IntObjectMap; +-import com.carrotsearch.hppc.IntObjectOpenHashMap; ++import com.carrotsearch.hppc.IntObjectHashMap; + + public class StandardAnalyzer extends AbstractAnalyzer + { +@@ -48,7 +48,7 @@ + KATAKANA(12), + HANGUL(13); + +- private static final IntObjectMap TOKENS = new IntObjectOpenHashMap<>(); ++ private static final IntObjectMap TOKENS = new IntObjectHashMap<>(); + + static + { +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/DynamicTokenTreeBuilder.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/DynamicTokenTreeBuilder.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/DynamicTokenTreeBuilder.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/DynamicTokenTreeBuilder.java 2016-10-17 13:43:49.833944186 +0200 +@@ -23,7 +23,7 @@ + import org.apache.cassandra.utils.AbstractIterator; + import org.apache.cassandra.utils.Pair; + +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + import com.carrotsearch.hppc.cursors.LongCursor; + +@@ -49,7 +49,7 @@ + { + LongSet found = tokens.get(token); + if (found == null) +- tokens.put(token, (found = new LongOpenHashSet(2))); ++ tokens.put(token, (found = new LongHashSet(2))); + + found.add(keyPosition); + } +@@ -70,7 +70,7 @@ + { + LongSet found = tokens.get(newEntry.getKey()); + if (found == null) +- tokens.put(newEntry.getKey(), (found = new LongOpenHashSet(4))); ++ tokens.put(newEntry.getKey(), (found = new LongHashSet(4))); + + for (LongCursor offset : newEntry.getValue()) + found.add(offset.value); +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java 2016-10-17 13:43:49.833944186 +0200 +@@ -189,7 +189,7 @@ + minKey = (minKey == null || keyComparator.compare(minKey, key.getKey()) > 0) ? key.getKey() : minKey; + maxKey = (maxKey == null || keyComparator.compare(maxKey, key.getKey()) < 0) ? key.getKey() : maxKey; + +- // 60 ((boolean(1)*4) + (long(8)*4) + 24) bytes for the LongOpenHashSet created when the keyPosition was added ++ // 60 ((boolean(1)*4) + (long(8)*4) + 24) bytes for the LongHashSet created when the keyPosition was added + // + 40 bytes for the TreeMap.Entry + 8 bytes for the token (key). + // in the case of hash collision for the token we may overestimate but this is extremely rare + estimatedBytes += 60 + 40 + 8; +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java 2016-10-17 13:43:49.834944194 +0200 +@@ -27,7 +27,7 @@ + import org.apache.cassandra.index.sasi.utils.RangeIterator; + import org.apache.cassandra.utils.MergeIterator; + +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + import com.google.common.annotations.VisibleForTesting; + import com.google.common.base.Function; +@@ -410,7 +410,7 @@ + + public LongSet getOffsets() + { +- LongSet offsets = new LongOpenHashSet(4); ++ LongSet offsets = new LongHashSet(4); + for (TokenInfo i : info) + { + for (long offset : i.fetchOffsets()) +@@ -520,4 +520,4 @@ + return index < offsets.length ? keyFetcher.apply(offsets[index++]) : endOfData(); + } + } +-} +\ No newline at end of file ++} +diff -ur cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java 2016-10-17 13:43:49.834944194 +0200 +@@ -29,7 +29,7 @@ + import org.apache.cassandra.index.sasi.utils.CombinedValue; + import org.apache.cassandra.index.sasi.utils.RangeIterator; + +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + import com.google.common.collect.PeekingIterator; + +@@ -95,7 +95,7 @@ + + public LongSet getOffsets() + { +- LongSet offsets = new LongOpenHashSet(4); ++ LongSet offsets = new LongHashSet(4); + for (DecoratedKey key : keys) + offsets.add((long) key.getToken().getTokenValue()); + +@@ -126,4 +126,4 @@ + return keys.iterator(); + } + } +-} +\ No newline at end of file ++} +diff -ur cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java +--- cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java 2016-10-17 13:43:49.836944211 +0200 +@@ -43,7 +43,7 @@ + import junit.framework.Assert; + import org.junit.Test; + import org.apache.commons.lang3.builder.HashCodeBuilder; +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + import com.carrotsearch.hppc.cursors.LongCursor; + import com.google.common.base.Function; +@@ -52,12 +52,12 @@ + { + private static final Function KEY_CONVERTER = new KeyConverter(); + +- static LongSet singleOffset = new LongOpenHashSet() {{ add(1); }}; +- static LongSet bigSingleOffset = new LongOpenHashSet() {{ add(2147521562L); }}; +- static LongSet shortPackableCollision = new LongOpenHashSet() {{ add(2L); add(3L); }}; // can pack two shorts +- static LongSet intPackableCollision = new LongOpenHashSet() {{ add(6L); add(((long) Short.MAX_VALUE) + 1); }}; // can pack int & short +- static LongSet multiCollision = new LongOpenHashSet() {{ add(3L); add(4L); add(5L); }}; // can't pack +- static LongSet unpackableCollision = new LongOpenHashSet() {{ add(((long) Short.MAX_VALUE) + 1); add(((long) Short.MAX_VALUE) + 2); }}; // can't pack ++ static LongSet singleOffset = new LongHashSet() {{ add(1); }}; ++ static LongSet bigSingleOffset = new LongHashSet() {{ add(2147521562L); }}; ++ static LongSet shortPackableCollision = new LongHashSet() {{ add(2L); add(3L); }}; // can pack two shorts ++ static LongSet intPackableCollision = new LongHashSet() {{ add(6L); add(((long) Short.MAX_VALUE) + 1); }}; // can pack int & short ++ static LongSet multiCollision = new LongHashSet() {{ add(3L); add(4L); add(5L); }}; // can't pack ++ static LongSet unpackableCollision = new LongHashSet() {{ add(((long) Short.MAX_VALUE) + 1); add(((long) Short.MAX_VALUE) + 2); }}; // can't pack + + final static SortedMap simpleTokenMap = new TreeMap() + {{ +@@ -591,7 +591,7 @@ + + private static LongSet convert(long... values) + { +- LongSet result = new LongOpenHashSet(values.length); ++ LongSet result = new LongHashSet(values.length); + for (long v : values) + result.add(v); + +@@ -622,7 +622,7 @@ + {{ + for (long i = minToken; i <= maxToken; i++) + { +- LongSet offsetSet = new LongOpenHashSet(); ++ LongSet offsetSet = new LongHashSet(); + offsetSet.add(i); + put(i, offsetSet); + } +diff -ur cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java +--- cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java 2016-10-17 13:43:49.836944211 +0200 +@@ -23,7 +23,7 @@ + import java.util.Iterator; + import java.util.List; + +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + import org.apache.cassandra.db.DecoratedKey; + import org.apache.cassandra.index.sasi.disk.Token; +@@ -84,7 +84,7 @@ + @Override + public LongSet getOffsets() + { +- return new LongOpenHashSet(4); ++ return new LongHashSet(4); + } + + @Override +diff -ur cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java +--- cassandra-cassandra-3.9/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java 2016-10-17 13:43:49.837944219 +0200 +@@ -27,7 +27,7 @@ + import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator.BounceIntersectionIterator; + import org.apache.cassandra.io.util.FileUtils; + +-import com.carrotsearch.hppc.LongOpenHashSet; ++import com.carrotsearch.hppc.LongHashSet; + import com.carrotsearch.hppc.LongSet; + + import org.junit.Assert; +@@ -311,7 +311,7 @@ + for (int i = 0; i < ranges.length; i++) + { + int rangeSize = random.nextInt(16, 512); +- LongSet range = new LongOpenHashSet(rangeSize); ++ LongSet range = new LongHashSet(rangeSize); + + for (int j = 0; j < rangeSize; j++) + range.add(random.nextLong(0, 100)); diff --git a/cassandra-3.9-remove-primitive.patch b/cassandra-3.9-remove-primitive.patch new file mode 100644 index 0000000..78d0462 --- /dev/null +++ b/cassandra-3.9-remove-primitive.patch @@ -0,0 +1,896 @@ +diff -urN cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java 2016-11-30 08:37:41.971647524 +0100 +@@ -24,10 +24,10 @@ + import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; + import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; + import org.apache.cassandra.db.marshal.AbstractType; ++import org.apache.cassandra.utils.LongTimSort; + import org.apache.cassandra.utils.Pair; + + import com.google.common.base.Charsets; +-import net.mintern.primitive.Primitive; + + public class SuffixSA extends SA + { +@@ -81,7 +81,7 @@ + isComplete = false; + } + +- Primitive.sort(suffixes, (a, b) -> { ++ LongTimSort.sort(suffixes, (a, b) -> { + Term aTerm = terms.get((int) (a >>> 32)); + Term bTerm = terms.get((int) (b >>> 32)); + return comparator.compare(aTerm.getSuffix(clearCompleteBit(a) - aTerm.getPosition()), +diff -urN cassandra-cassandra-3.9/src/java/org/apache/cassandra/utils/LongTimSort.java cassandra-cassandra-3.9new/src/java/org/apache/cassandra/utils/LongTimSort.java +--- cassandra-cassandra-3.9/src/java/org/apache/cassandra/utils/LongTimSort.java 1970-01-01 01:00:00.000000000 +0100 ++++ cassandra-cassandra-3.9new/src/java/org/apache/cassandra/utils/LongTimSort.java 2016-11-30 08:38:50.000276815 +0100 +@@ -0,0 +1,868 @@ ++/* ++ * Copyright (C) 2008 The Android Open Source Project ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++/* ++ * This file originates from https://android.googlesource.com/platform/libcore/+/gingerbread/luni/src/main/java/java/util/TimSort.java ++ * and has been modified to sort primitive long arrays instead of object arrays. ++ */ ++//package java.util; ++ ++package org.apache.cassandra.utils; ++ ++import java.util.Arrays; ++ ++/** ++ * A stable, adaptive, iterative mergesort that requires far fewer than ++ * n lg(n) comparisons when running on partially sorted arrays, while ++ * offering performance comparable to a traditional mergesort when run ++ * on random arrays. Like all proper mergesorts, this sort is stable and ++ * runs O(n log n) time (worst case). In the worst case, this sort requires ++ * temporary storage space for n/2 object references; in the best case, ++ * it requires only a small constant amount of space. ++ * ++ * This implementation was adapted from Tim Peters's list sort for ++ * Python, which is described in detail here: ++ * ++ * http://svn.python.org/projects/python/trunk/Objects/listsort.txt ++ * ++ * Tim's C code may be found here: ++ * ++ * http://svn.python.org/projects/python/trunk/Objects/listobject.c ++ * ++ * The underlying techniques are described in this paper (and may have ++ * even earlier origins): ++ * ++ * "Optimistic Sorting and Information Theoretic Complexity" ++ * Peter McIlroy ++ * SODA (Fourth Annual ACM-SIAM Symposium on Discrete Algorithms), ++ * pp 467-474, Austin, Texas, 25-27 January 1993. ++ * ++ * While the API to this class consists solely of static methods, it is ++ * (privately) instantiable; a TimSort instance holds the state of an ongoing ++ * sort, assuming the input array is large enough to warrant the full-blown ++ * TimSort. Small arrays are sorted in place, using a binary insertion sort. ++ */ ++public final class LongTimSort { ++ /** ++ * This is the minimum sized sequence that will be merged. Shorter ++ * sequences will be lengthened by calling binarySort. If the entire ++ * array is less than this length, no merges will be performed. ++ * ++ * This constant should be a power of two. It was 64 in Tim Peter's C ++ * implementation, but 32 was empirically determined to work better in ++ * this implementation. In the unlikely event that you set this constant ++ * to be a number that's not a power of two, you'll need to change the ++ * {@link #minRunLength} computation. ++ * ++ * If you decrease this constant, you must change the stackLen ++ * computation in the TimSort constructor, or you risk an ++ * ArrayOutOfBounds exception. See listsort.txt for a discussion ++ * of the minimum stack length required as a function of the length ++ * of the array being sorted and the minimum merge sequence length. ++ */ ++ private static final int MIN_MERGE = 32; ++ /** ++ * The array being sorted. ++ */ ++ private final long[] a; ++ /** ++ * The comparator for this sort. ++ */ ++ private final LongComparator c; ++ /** ++ * When we get into galloping mode, we stay there until both runs win less ++ * often than MIN_GALLOP consecutive times. ++ */ ++ private static final int MIN_GALLOP = 7; ++ /** ++ * This controls when we get *into* galloping mode. It is initialized ++ * to MIN_GALLOP. The mergeLo and mergeHi methods nudge it higher for ++ * random data, and lower for highly structured data. ++ */ ++ private int minGallop = MIN_GALLOP; ++ /** ++ * Maximum initial size of tmp array, which is used for merging. The array ++ * can grow to accommodate demand. ++ * ++ * Unlike Tim's original C version, we do not allocate this much storage ++ * when sorting smaller arrays. This change was required for performance. ++ */ ++ private static final int INITIAL_TMP_STORAGE_LENGTH = 256; ++ /** ++ * Temp storage for merges. ++ */ ++ private long[] tmp; ++ /** ++ * A stack of pending runs yet to be merged. Run i starts at ++ * address base[i] and extends for len[i] elements. It's always ++ * true (so long as the indices are in bounds) that: ++ * ++ * runBase[i] + runLen[i] == runBase[i + 1] ++ * ++ * so we could cut the storage for this, but it's a minor amount, ++ * and keeping all the info explicit simplifies the code. ++ */ ++ private int stackSize = 0; // Number of pending runs on stack ++ private final int[] runBase; ++ private final int[] runLen; ++ /** ++ * Asserts have been placed in if-statements for performace. To enable them, ++ * set this field to true and enable them in VM with a command line flag. ++ * If you modify this class, please do test the asserts! ++ */ ++ private static final boolean DEBUG = false; ++ /** ++ * Creates a TimSort instance to maintain the state of an ongoing sort. ++ * ++ * @param a the array to be sorted ++ * @param c the comparator to determine the order of the sort ++ */ ++ private LongTimSort(long[] a, LongComparator c) { ++ this.a = a; ++ this.c = c; ++ // Allocate temp storage (which may be increased later if necessary) ++ int len = a.length; ++ @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) ++ long[] newArray = new long[len < 2 * INITIAL_TMP_STORAGE_LENGTH ? ++ len >>> 1 : INITIAL_TMP_STORAGE_LENGTH]; ++ tmp = newArray; ++ /* ++ * Allocate runs-to-be-merged stack (which cannot be expanded). The ++ * stack length requirements are described in listsort.txt. The C ++ * version always uses the same stack length (85), but this was ++ * measured to be too expensive when sorting "mid-sized" arrays (e.g., ++ * 100 elements) in Java. Therefore, we use smaller (but sufficiently ++ * large) stack lengths for smaller arrays. The "magic numbers" in the ++ * computation below must be changed if MIN_MERGE is decreased. See ++ * the MIN_MERGE declaration above for more information. ++ */ ++ int stackLen = (len < 120 ? 5 : ++ len < 1542 ? 10 : ++ len < 119151 ? 19 : 40); ++ runBase = new int[stackLen]; ++ runLen = new int[stackLen]; ++ } ++ /* ++ * The next two methods (which are package private and static) constitute ++ * the entire API of this class. Each of these methods obeys the contract ++ * of the public method with the same signature in java.util.Arrays. ++ */ ++ public static void sort(long[] a, LongComparator c) { ++ sort(a, 0, a.length, c); ++ } ++ public static void sort(long[] a, int lo, int hi, LongComparator c) { ++ if (c == null) { ++ Arrays.sort(a, lo, hi); ++ return; ++ } ++ rangeCheck(a.length, lo, hi); ++ int nRemaining = hi - lo; ++ if (nRemaining < 2) ++ return; // Arrays of size 0 and 1 are always sorted ++ // If array is small, do a "mini-TimSort" with no merges ++ if (nRemaining < MIN_MERGE) { ++ int initRunLen = countRunAndMakeAscending(a, lo, hi, c); ++ binarySort(a, lo, hi, lo + initRunLen, c); ++ return; ++ } ++ /** ++ * March over the array once, left to right, finding natural runs, ++ * extending short natural runs to minRun elements, and merging runs ++ * to maintain stack invariant. ++ */ ++ LongTimSort ts = new LongTimSort(a, c); ++ int minRun = minRunLength(nRemaining); ++ do { ++ // Identify next run ++ int runLen = countRunAndMakeAscending(a, lo, hi, c); ++ // If run is short, extend to min(minRun, nRemaining) ++ if (runLen < minRun) { ++ int force = nRemaining <= minRun ? nRemaining : minRun; ++ binarySort(a, lo, lo + force, lo + runLen, c); ++ runLen = force; ++ } ++ // Push run onto pending-run stack, and maybe merge ++ ts.pushRun(lo, runLen); ++ ts.mergeCollapse(); ++ // Advance to find next run ++ lo += runLen; ++ nRemaining -= runLen; ++ } while (nRemaining != 0); ++ // Merge all remaining runs to complete sort ++ if (DEBUG) assert lo == hi; ++ ts.mergeForceCollapse(); ++ if (DEBUG) assert ts.stackSize == 1; ++ } ++ /** ++ * Sorts the specified portion of the specified array using a binary ++ * insertion sort. This is the best method for sorting small numbers ++ * of elements. It requires O(n log n) compares, but O(n^2) data ++ * movement (worst case). ++ * ++ * If the initial part of the specified range is already sorted, ++ * this method can take advantage of it: the method assumes that the ++ * elements from index {@code lo}, inclusive, to {@code start}, ++ * exclusive are already sorted. ++ * ++ * @param a the array in which a range is to be sorted ++ * @param lo the index of the first element in the range to be sorted ++ * @param hi the index after the last element in the range to be sorted ++ * @param start the index of the first element in the range that is ++ * not already known to be sorted (@code lo <= start <= hi} ++ * @param c comparator to used for the sort ++ */ ++ @SuppressWarnings("fallthrough") ++ private static void binarySort(long[] a, int lo, int hi, int start, ++ LongComparator c) { ++ if (DEBUG) assert lo <= start && start <= hi; ++ if (start == lo) ++ start++; ++ for ( ; start < hi; start++) { ++ long pivot = a[start]; ++ // Set left (and right) to the index where a[start] (pivot) belongs ++ int left = lo; ++ int right = start; ++ if (DEBUG) assert left <= right; ++ /* ++ * Invariants: ++ * pivot >= all in [lo, left). ++ * pivot < all in [right, start). ++ */ ++ while (left < right) { ++ int mid = (left + right) >>> 1; ++ if (c.compare(pivot, a[mid]) < 0) ++ right = mid; ++ else ++ left = mid + 1; ++ } ++ if (DEBUG) assert left == right; ++ /* ++ * The invariants still hold: pivot >= all in [lo, left) and ++ * pivot < all in [left, start), so pivot belongs at left. Note ++ * that if there are elements equal to pivot, left points to the ++ * first slot after them -- that's why this sort is stable. ++ * Slide elements over to make room to make room for pivot. ++ */ ++ int n = start - left; // The number of elements to move ++ // Switch is just an optimization for arraycopy in default case ++ switch(n) { ++ case 2: a[left + 2] = a[left + 1]; ++ case 1: a[left + 1] = a[left]; ++ break; ++ default: System.arraycopy(a, left, a, left + 1, n); ++ } ++ a[left] = pivot; ++ } ++ } ++ /** ++ * Returns the length of the run beginning at the specified position in ++ * the specified array and reverses the run if it is descending (ensuring ++ * that the run will always be ascending when the method returns). ++ * ++ * A run is the longest ascending sequence with: ++ * ++ * a[lo] <= a[lo + 1] <= a[lo + 2] <= ... ++ * ++ * or the longest descending sequence with: ++ * ++ * a[lo] > a[lo + 1] > a[lo + 2] > ... ++ * ++ * For its intended use in a stable mergesort, the strictness of the ++ * definition of "descending" is needed so that the call can safely ++ * reverse a descending sequence without violating stability. ++ * ++ * @param a the array in which a run is to be counted and possibly reversed ++ * @param lo index of the first element in the run ++ * @param hi index after the last element that may be contained in the run. ++ It is required that @code{lo < hi}. ++ * @param c the comparator to used for the sort ++ * @return the length of the run beginning at the specified position in ++ * the specified array ++ */ ++ private static int countRunAndMakeAscending(long[] a, int lo, int hi, ++ LongComparator c) { ++ if (DEBUG) assert lo < hi; ++ int runHi = lo + 1; ++ if (runHi == hi) ++ return 1; ++ // Find end of run, and reverse range if descending ++ if (c.compare(a[runHi++], a[lo]) < 0) { // Descending ++ while(runHi < hi && c.compare(a[runHi], a[runHi - 1]) < 0) ++ runHi++; ++ reverseRange(a, lo, runHi); ++ } else { // Ascending ++ while (runHi < hi && c.compare(a[runHi], a[runHi - 1]) >= 0) ++ runHi++; ++ } ++ return runHi - lo; ++ } ++ /** ++ * Reverse the specified range of the specified array. ++ * ++ * @param a the array in which a range is to be reversed ++ * @param lo the index of the first element in the range to be reversed ++ * @param hi the index after the last element in the range to be reversed ++ */ ++ private static void reverseRange(long[] a, int lo, int hi) { ++ hi--; ++ while (lo < hi) { ++ long t = a[lo]; ++ a[lo++] = a[hi]; ++ a[hi--] = t; ++ } ++ } ++ /** ++ * Returns the minimum acceptable run length for an array of the specified ++ * length. Natural runs shorter than this will be extended with ++ * {@link #binarySort}. ++ * ++ * Roughly speaking, the computation is: ++ * ++ * If n < MIN_MERGE, return n (it's too small to bother with fancy stuff). ++ * Else if n is an exact power of 2, return MIN_MERGE/2. ++ * Else return an int k, MIN_MERGE/2 <= k <= MIN_MERGE, such that n/k ++ * is close to, but strictly less than, an exact power of 2. ++ * ++ * For the rationale, see listsort.txt. ++ * ++ * @param n the length of the array to be sorted ++ * @return the length of the minimum run to be merged ++ */ ++ private static int minRunLength(int n) { ++ if (DEBUG) assert n >= 0; ++ int r = 0; // Becomes 1 if any 1 bits are shifted off ++ while (n >= MIN_MERGE) { ++ r |= (n & 1); ++ n >>= 1; ++ } ++ return n + r; ++ } ++ /** ++ * Pushes the specified run onto the pending-run stack. ++ * ++ * @param runBase index of the first element in the run ++ * @param runLen the number of elements in the run ++ */ ++ private void pushRun(int runBase, int runLen) { ++ this.runBase[stackSize] = runBase; ++ this.runLen[stackSize] = runLen; ++ stackSize++; ++ } ++ /** ++ * Examines the stack of runs waiting to be merged and merges adjacent runs ++ * until the stack invariants are reestablished: ++ * ++ * 1. runLen[i - 3] > runLen[i - 2] + runLen[i - 1] ++ * 2. runLen[i - 2] > runLen[i - 1] ++ * ++ * This method is called each time a new run is pushed onto the stack, ++ * so the invariants are guaranteed to hold for i < stackSize upon ++ * entry to the method. ++ */ ++ private void mergeCollapse() { ++ while (stackSize > 1) { ++ int n = stackSize - 2; ++ if (n > 0 && runLen[n-1] <= runLen[n] + runLen[n+1]) { ++ if (runLen[n - 1] < runLen[n + 1]) ++ n--; ++ mergeAt(n); ++ } else if (runLen[n] <= runLen[n + 1]) { ++ mergeAt(n); ++ } else { ++ break; // Invariant is established ++ } ++ } ++ } ++ /** ++ * Merges all runs on the stack until only one remains. This method is ++ * called once, to complete the sort. ++ */ ++ private void mergeForceCollapse() { ++ while (stackSize > 1) { ++ int n = stackSize - 2; ++ if (n > 0 && runLen[n - 1] < runLen[n + 1]) ++ n--; ++ mergeAt(n); ++ } ++ } ++ /** ++ * Merges the two runs at stack indices i and i+1. Run i must be ++ * the penultimate or antepenultimate run on the stack. In other words, ++ * i must be equal to stackSize-2 or stackSize-3. ++ * ++ * @param i stack index of the first of the two runs to merge ++ */ ++ private void mergeAt(int i) { ++ if (DEBUG) assert stackSize >= 2; ++ if (DEBUG) assert i >= 0; ++ if (DEBUG) assert i == stackSize - 2 || i == stackSize - 3; ++ int base1 = runBase[i]; ++ int len1 = runLen[i]; ++ int base2 = runBase[i + 1]; ++ int len2 = runLen[i + 1]; ++ if (DEBUG) assert len1 > 0 && len2 > 0; ++ if (DEBUG) assert base1 + len1 == base2; ++ /* ++ * Record the length of the combined runs; if i is the 3rd-last ++ * run now, also slide over the last run (which isn't involved ++ * in this merge). The current run (i+1) goes away in any case. ++ */ ++ runLen[i] = len1 + len2; ++ if (i == stackSize - 3) { ++ runBase[i + 1] = runBase[i + 2]; ++ runLen[i + 1] = runLen[i + 2]; ++ } ++ stackSize--; ++ /* ++ * Find where the first element of run2 goes in run1. Prior elements ++ * in run1 can be ignored (because they're already in place). ++ */ ++ int k = gallopRight(a[base2], a, base1, len1, 0, c); ++ if (DEBUG) assert k >= 0; ++ base1 += k; ++ len1 -= k; ++ if (len1 == 0) ++ return; ++ /* ++ * Find where the last element of run1 goes in run2. Subsequent elements ++ * in run2 can be ignored (because they're already in place). ++ */ ++ len2 = gallopLeft(a[base1 + len1 - 1], a, base2, len2, len2 - 1, c); ++ if (DEBUG) assert len2 >= 0; ++ if (len2 == 0) ++ return; ++ // Merge remaining runs, using tmp array with min(len1, len2) elements ++ if (len1 <= len2) ++ mergeLo(base1, len1, base2, len2); ++ else ++ mergeHi(base1, len1, base2, len2); ++ } ++ /** ++ * Locates the position at which to insert the specified key into the ++ * specified sorted range; if the range contains an element equal to key, ++ * returns the index of the leftmost equal element. ++ * ++ * @param key the key whose insertion point to search for ++ * @param a the array in which to search ++ * @param base the index of the first element in the range ++ * @param len the length of the range; must be > 0 ++ * @param hint the index at which to begin the search, 0 <= hint < n. ++ * The closer hint is to the result, the faster this method will run. ++ * @param c the comparator used to order the range, and to search ++ * @return the int k, 0 <= k <= n such that a[b + k - 1] < key <= a[b + k], ++ * pretending that a[b - 1] is minus infinity and a[b + n] is infinity. ++ * In other words, key belongs at index b + k; or in other words, ++ * the first k elements of a should precede key, and the last n - k ++ * should follow it. ++ */ ++ private static int gallopLeft(long key, long[] a, int base, int len, int hint, ++ LongComparator c) { ++ if (DEBUG) assert len > 0 && hint >= 0 && hint < len; ++ int lastOfs = 0; ++ int ofs = 1; ++ if (c.compare(key, a[base + hint]) > 0) { ++ // Gallop right until a[base+hint+lastOfs] < key <= a[base+hint+ofs] ++ int maxOfs = len - hint; ++ while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) > 0) { ++ lastOfs = ofs; ++ ofs = (ofs << 1) + 1; ++ if (ofs <= 0) // int overflow ++ ofs = maxOfs; ++ } ++ if (ofs > maxOfs) ++ ofs = maxOfs; ++ // Make offsets relative to base ++ lastOfs += hint; ++ ofs += hint; ++ } else { // key <= a[base + hint] ++ // Gallop left until a[base+hint-ofs] < key <= a[base+hint-lastOfs] ++ final int maxOfs = hint + 1; ++ while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) <= 0) { ++ lastOfs = ofs; ++ ofs = (ofs << 1) + 1; ++ if (ofs <= 0) // int overflow ++ ofs = maxOfs; ++ } ++ if (ofs > maxOfs) ++ ofs = maxOfs; ++ // Make offsets relative to base ++ int tmp = lastOfs; ++ lastOfs = hint - ofs; ++ ofs = hint - tmp; ++ } ++ if (DEBUG) assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; ++ /* ++ * Now a[base+lastOfs] < key <= a[base+ofs], so key belongs somewhere ++ * to the right of lastOfs but no farther right than ofs. Do a binary ++ * search, with invariant a[base + lastOfs - 1] < key <= a[base + ofs]. ++ */ ++ lastOfs++; ++ while (lastOfs < ofs) { ++ int m = lastOfs + ((ofs - lastOfs) >>> 1); ++ if (c.compare(key, a[base + m]) > 0) ++ lastOfs = m + 1; // a[base + m] < key ++ else ++ ofs = m; // key <= a[base + m] ++ } ++ if (DEBUG) assert lastOfs == ofs; // so a[base + ofs - 1] < key <= a[base + ofs] ++ return ofs; ++ } ++ /** ++ * Like gallopLeft, except that if the range contains an element equal to ++ * key, gallopRight returns the index after the rightmost equal element. ++ * ++ * @param key the key whose insertion point to search for ++ * @param a the array in which to search ++ * @param base the index of the first element in the range ++ * @param len the length of the range; must be > 0 ++ * @param hint the index at which to begin the search, 0 <= hint < n. ++ * The closer hint is to the result, the faster this method will run. ++ * @param c the comparator used to order the range, and to search ++ * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] ++ */ ++ private static int gallopRight(long key, long[] a, int base, int len, ++ int hint, LongComparator c) { ++ if (DEBUG) assert len > 0 && hint >= 0 && hint < len; ++ int ofs = 1; ++ int lastOfs = 0; ++ if (c.compare(key, a[base + hint]) < 0) { ++ // Gallop left until a[b+hint - ofs] <= key < a[b+hint - lastOfs] ++ int maxOfs = hint + 1; ++ while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) < 0) { ++ lastOfs = ofs; ++ ofs = (ofs << 1) + 1; ++ if (ofs <= 0) // int overflow ++ ofs = maxOfs; ++ } ++ if (ofs > maxOfs) ++ ofs = maxOfs; ++ // Make offsets relative to b ++ int tmp = lastOfs; ++ lastOfs = hint - ofs; ++ ofs = hint - tmp; ++ } else { // a[b + hint] <= key ++ // Gallop right until a[b+hint + lastOfs] <= key < a[b+hint + ofs] ++ int maxOfs = len - hint; ++ while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) >= 0) { ++ lastOfs = ofs; ++ ofs = (ofs << 1) + 1; ++ if (ofs <= 0) // int overflow ++ ofs = maxOfs; ++ } ++ if (ofs > maxOfs) ++ ofs = maxOfs; ++ // Make offsets relative to b ++ lastOfs += hint; ++ ofs += hint; ++ } ++ if (DEBUG) assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; ++ /* ++ * Now a[b + lastOfs] <= key < a[b + ofs], so key belongs somewhere to ++ * the right of lastOfs but no farther right than ofs. Do a binary ++ * search, with invariant a[b + lastOfs - 1] <= key < a[b + ofs]. ++ */ ++ lastOfs++; ++ while (lastOfs < ofs) { ++ int m = lastOfs + ((ofs - lastOfs) >>> 1); ++ if (c.compare(key, a[base + m]) < 0) ++ ofs = m; // key < a[b + m] ++ else ++ lastOfs = m + 1; // a[b + m] <= key ++ } ++ if (DEBUG) assert lastOfs == ofs; // so a[b + ofs - 1] <= key < a[b + ofs] ++ return ofs; ++ } ++ /** ++ * Merges two adjacent runs in place, in a stable fashion. The first ++ * element of the first run must be greater than the first element of the ++ * second run (a[base1] > a[base2]), and the last element of the first run ++ * (a[base1 + len1-1]) must be greater than all elements of the second run. ++ * ++ * For performance, this method should be called only when len1 <= len2; ++ * its twin, mergeHi should be called if len1 >= len2. (Either method ++ * may be called if len1 == len2.) ++ * ++ * @param base1 index of first element in first run to be merged ++ * @param len1 length of first run to be merged (must be > 0) ++ * @param base2 index of first element in second run to be merged ++ * (must be aBase + aLen) ++ * @param len2 length of second run to be merged (must be > 0) ++ */ ++ private void mergeLo(int base1, int len1, int base2, int len2) { ++ if (DEBUG) assert len1 > 0 && len2 > 0 && base1 + len1 == base2; ++ // Copy first run into temp array ++ long[] a = this.a; // For performance ++ long[] tmp = ensureCapacity(len1); ++ System.arraycopy(a, base1, tmp, 0, len1); ++ int cursor1 = 0; // Indexes into tmp array ++ int cursor2 = base2; // Indexes int a ++ int dest = base1; // Indexes int a ++ // Move first element of second run and deal with degenerate cases ++ a[dest++] = a[cursor2++]; ++ if (--len2 == 0) { ++ System.arraycopy(tmp, cursor1, a, dest, len1); ++ return; ++ } ++ if (len1 == 1) { ++ System.arraycopy(a, cursor2, a, dest, len2); ++ a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge ++ return; ++ } ++ LongComparator c = this.c; // Use local variable for performance ++ int minGallop = this.minGallop; // " " " " " ++ outer: ++ while (true) { ++ int count1 = 0; // Number of times in a row that first run won ++ int count2 = 0; // Number of times in a row that second run won ++ /* ++ * Do the straightforward thing until (if ever) one run starts ++ * winning consistently. ++ */ ++ do { ++ if (DEBUG) assert len1 > 1 && len2 > 0; ++ if (c.compare(a[cursor2], tmp[cursor1]) < 0) { ++ a[dest++] = a[cursor2++]; ++ count2++; ++ count1 = 0; ++ if (--len2 == 0) ++ break outer; ++ } else { ++ a[dest++] = tmp[cursor1++]; ++ count1++; ++ count2 = 0; ++ if (--len1 == 1) ++ break outer; ++ } ++ } while ((count1 | count2) < minGallop); ++ /* ++ * One run is winning so consistently that galloping may be a ++ * huge win. So try that, and continue galloping until (if ever) ++ * neither run appears to be winning consistently anymore. ++ */ ++ do { ++ if (DEBUG) assert len1 > 1 && len2 > 0; ++ count1 = gallopRight(a[cursor2], tmp, cursor1, len1, 0, c); ++ if (count1 != 0) { ++ System.arraycopy(tmp, cursor1, a, dest, count1); ++ dest += count1; ++ cursor1 += count1; ++ len1 -= count1; ++ if (len1 <= 1) // len1 == 1 || len1 == 0 ++ break outer; ++ } ++ a[dest++] = a[cursor2++]; ++ if (--len2 == 0) ++ break outer; ++ count2 = gallopLeft(tmp[cursor1], a, cursor2, len2, 0, c); ++ if (count2 != 0) { ++ System.arraycopy(a, cursor2, a, dest, count2); ++ dest += count2; ++ cursor2 += count2; ++ len2 -= count2; ++ if (len2 == 0) ++ break outer; ++ } ++ a[dest++] = tmp[cursor1++]; ++ if (--len1 == 1) ++ break outer; ++ minGallop--; ++ } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); ++ if (minGallop < 0) ++ minGallop = 0; ++ minGallop += 2; // Penalize for leaving gallop mode ++ } // End of "outer" loop ++ this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field ++ if (len1 == 1) { ++ if (DEBUG) assert len2 > 0; ++ System.arraycopy(a, cursor2, a, dest, len2); ++ a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge ++ } else if (len1 == 0) { ++ throw new IllegalArgumentException( ++ "Comparison method violates its general contract!"); ++ } else { ++ if (DEBUG) assert len2 == 0; ++ if (DEBUG) assert len1 > 1; ++ System.arraycopy(tmp, cursor1, a, dest, len1); ++ } ++ } ++ /** ++ * Like mergeLo, except that this method should be called only if ++ * len1 >= len2; mergeLo should be called if len1 <= len2. (Either method ++ * may be called if len1 == len2.) ++ * ++ * @param base1 index of first element in first run to be merged ++ * @param len1 length of first run to be merged (must be > 0) ++ * @param base2 index of first element in second run to be merged ++ * (must be aBase + aLen) ++ * @param len2 length of second run to be merged (must be > 0) ++ */ ++ private void mergeHi(int base1, int len1, int base2, int len2) { ++ if (DEBUG) assert len1 > 0 && len2 > 0 && base1 + len1 == base2; ++ // Copy second run into temp array ++ long[] a = this.a; // For performance ++ long[] tmp = ensureCapacity(len2); ++ System.arraycopy(a, base2, tmp, 0, len2); ++ int cursor1 = base1 + len1 - 1; // Indexes into a ++ int cursor2 = len2 - 1; // Indexes into tmp array ++ int dest = base2 + len2 - 1; // Indexes into a ++ // Move last element of first run and deal with degenerate cases ++ a[dest--] = a[cursor1--]; ++ if (--len1 == 0) { ++ System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); ++ return; ++ } ++ if (len2 == 1) { ++ dest -= len1; ++ cursor1 -= len1; ++ System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); ++ a[dest] = tmp[cursor2]; ++ return; ++ } ++ LongComparator c = this.c; // Use local variable for performance ++ int minGallop = this.minGallop; // " " " " " ++ outer: ++ while (true) { ++ int count1 = 0; // Number of times in a row that first run won ++ int count2 = 0; // Number of times in a row that second run won ++ /* ++ * Do the straightforward thing until (if ever) one run ++ * appears to win consistently. ++ */ ++ do { ++ if (DEBUG) assert len1 > 0 && len2 > 1; ++ if (c.compare(tmp[cursor2], a[cursor1]) < 0) { ++ a[dest--] = a[cursor1--]; ++ count1++; ++ count2 = 0; ++ if (--len1 == 0) ++ break outer; ++ } else { ++ a[dest--] = tmp[cursor2--]; ++ count2++; ++ count1 = 0; ++ if (--len2 == 1) ++ break outer; ++ } ++ } while ((count1 | count2) < minGallop); ++ /* ++ * One run is winning so consistently that galloping may be a ++ * huge win. So try that, and continue galloping until (if ever) ++ * neither run appears to be winning consistently anymore. ++ */ ++ do { ++ if (DEBUG) assert len1 > 0 && len2 > 1; ++ count1 = len1 - gallopRight(tmp[cursor2], a, base1, len1, len1 - 1, c); ++ if (count1 != 0) { ++ dest -= count1; ++ cursor1 -= count1; ++ len1 -= count1; ++ System.arraycopy(a, cursor1 + 1, a, dest + 1, count1); ++ if (len1 == 0) ++ break outer; ++ } ++ a[dest--] = tmp[cursor2--]; ++ if (--len2 == 1) ++ break outer; ++ count2 = len2 - gallopLeft(a[cursor1], tmp, 0, len2, len2 - 1, c); ++ if (count2 != 0) { ++ dest -= count2; ++ cursor2 -= count2; ++ len2 -= count2; ++ System.arraycopy(tmp, cursor2 + 1, a, dest + 1, count2); ++ if (len2 <= 1) // len2 == 1 || len2 == 0 ++ break outer; ++ } ++ a[dest--] = a[cursor1--]; ++ if (--len1 == 0) ++ break outer; ++ minGallop--; ++ } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); ++ if (minGallop < 0) ++ minGallop = 0; ++ minGallop += 2; // Penalize for leaving gallop mode ++ } // End of "outer" loop ++ this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field ++ if (len2 == 1) { ++ if (DEBUG) assert len1 > 0; ++ dest -= len1; ++ cursor1 -= len1; ++ System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); ++ a[dest] = tmp[cursor2]; // Move first elt of run2 to front of merge ++ } else if (len2 == 0) { ++ throw new IllegalArgumentException( ++ "Comparison method violates its general contract!"); ++ } else { ++ if (DEBUG) assert len1 == 0; ++ if (DEBUG) assert len2 > 0; ++ System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); ++ } ++ } ++ /** ++ * Ensures that the external array tmp has at least the specified ++ * number of elements, increasing its size if necessary. The size ++ * increases exponentially to ensure amortized linear time complexity. ++ * ++ * @param minCapacity the minimum required capacity of the tmp array ++ * @return tmp, whether or not it grew ++ */ ++ private long[] ensureCapacity(int minCapacity) { ++ if (tmp.length < minCapacity) { ++ // Compute smallest power of 2 > minCapacity ++ int newSize = minCapacity; ++ newSize |= newSize >> 1; ++ newSize |= newSize >> 2; ++ newSize |= newSize >> 4; ++ newSize |= newSize >> 8; ++ newSize |= newSize >> 16; ++ newSize++; ++ if (newSize < 0) // Not bloody likely! ++ newSize = minCapacity; ++ else ++ newSize = Math.min(newSize, a.length >>> 1); ++ @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) ++ long[] newArray = new long[newSize]; ++ tmp = newArray; ++ } ++ return tmp; ++ } ++ /** ++ * Checks that fromIndex and toIndex are in range, and throws an ++ * appropriate exception if they aren't. ++ * ++ * @param arrayLen the length of the array ++ * @param fromIndex the index of the first element of the range ++ * @param toIndex the index after the last element of the range ++ * @throws IllegalArgumentException if fromIndex > toIndex ++ * @throws ArrayIndexOutOfBoundsException if fromIndex < 0 ++ * or toIndex > arrayLen ++ */ ++ private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) { ++ if (fromIndex > toIndex) ++ throw new IllegalArgumentException("fromIndex(" + fromIndex + ++ ") > toIndex(" + toIndex+")"); ++ if (fromIndex < 0) ++ throw new ArrayIndexOutOfBoundsException(fromIndex); ++ if (toIndex > arrayLen) ++ throw new ArrayIndexOutOfBoundsException(toIndex); ++ } ++ ++ // addition to original file ++ ++ @FunctionalInterface ++ public static interface LongComparator ++ { ++ int compare(long o1, long o2); ++ } ++} diff --git a/cassandra-3.9-scripts.patch b/cassandra-3.9-scripts.patch new file mode 100644 index 0000000..48ec1ec --- /dev/null +++ b/cassandra-3.9-scripts.patch @@ -0,0 +1,175 @@ +diff -ur cassandra-cassandra-3.9/bin/cassandra cassandra-cassandra-3.9new/bin/cassandra +--- cassandra-cassandra-3.9/bin/cassandra 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/bin/cassandra 2016-10-17 11:03:56.085746811 +0200 +@@ -188,7 +188,7 @@ + props="$3" + class="$4" + cassandra_parms="-Dlogback.configurationFile=logback.xml" +- cassandra_parms="$cassandra_parms -Dcassandra.logdir=$CASSANDRA_HOME/logs" ++ cassandra_parms="$cassandra_parms -Dcassandra.logdir=/var/log/cassandra" + cassandra_parms="$cassandra_parms -Dcassandra.storagedir=$cassandra_storagedir" + + if [ "x$pidpath" != "x" ]; then +diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/bin/cassandra.in.sh +--- cassandra-cassandra-3.9/bin/cassandra.in.sh 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/bin/cassandra.in.sh 2016-10-17 11:03:56.085746811 +0200 +@@ -14,63 +14,27 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-if [ "x$CASSANDRA_HOME" = "x" ]; then +- CASSANDRA_HOME="`dirname "$0"`/.." +-fi +- + # The directory where Cassandra's configs live (required) + if [ "x$CASSANDRA_CONF" = "x" ]; then +- CASSANDRA_CONF="$CASSANDRA_HOME/conf" ++ CASSANDRA_CONF="/etc" + fi + +-# This can be the path to a jar file, or a directory containing the +-# compiled classes. NOTE: This isn't needed by the startup script, +-# it's just used here in constructing the classpath. +-cassandra_bin="$CASSANDRA_HOME/build/classes/main" +-cassandra_bin="$cassandra_bin:$CASSANDRA_HOME/build/classes/thrift" +-#cassandra_bin="$CASSANDRA_HOME/build/cassandra.jar" +- + # the default location for commitlogs, sstables, and saved caches + # if not set in cassandra.yaml +-cassandra_storagedir="$CASSANDRA_HOME/data" +- +-# JAVA_HOME can optionally be set here +-#JAVA_HOME=/usr/local/jdk6 ++cassandra_storagedir="/var/lib/cassandra" + + # The java classpath (required) +-CLASSPATH="$CASSANDRA_CONF:$cassandra_bin" ++CLASSPATH="$CASSANDRA_CONF:`build-classpath cassandra/cassandra-all`" + +-for jar in "$CASSANDRA_HOME"/lib/*.jar; do +- CLASSPATH="$CLASSPATH:$jar" +-done ++DEPS=( cassandra/cassandra-all cassandra/cassandra-thrift stringtemplate4 airline antlr3-runtime objectweb-asm/asm cassandra-java-driver/cassandra-driver-core commons-cli commons-codec commons-math3 commons-lang3 compress-lzf concurrent-trees concurrentlinkedhashmap-lru ecj guava high-scale-lib/high-scale-lib hppc jackson/jackson-core-asl jackson/jackson-mapper-asl jBCrypt jflex jna joda-time json_simple libthrift logback/logback-classic logback/logback-core lz4 metrics netty/netty-all ohc/ohc-core primitive metrics-reporter-config/reporter-config metrics-reporter-config/reporter-config-base sigar slf4j/api snakeyaml snappy-java snowball-java stream-lib disruptor-thrift-server javax.inject ) + +-# JSR223 - collect all JSR223 engines' jars +-for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do +- CLASSPATH="$CLASSPATH:$jsr223jar" ++for dep in "${DEPS[@]}"; do ++ CLASSPATH="$CLASSPATH:`build-classpath $dep`" + done +-# JSR223/JRuby - set ruby lib directory +-if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/ruby ] ; then +- export JVM_OPTS="$JVM_OPTS -Djruby.lib=$CASSANDRA_HOME/lib/jsr223/jruby" +-fi +-# JSR223/JRuby - set ruby JNI libraries root directory +-if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/jni ] ; then +- export JVM_OPTS="$JVM_OPTS -Djffi.boot.library.path=$CASSANDRA_HOME/lib/jsr223/jruby/jni" +-fi +-# JSR223/Jython - set python.home system property +-if [ -f "$CASSANDRA_HOME"/lib/jsr223/jython/jython.jar ] ; then +- export JVM_OPTS="$JVM_OPTS -Dpython.home=$CASSANDRA_HOME/lib/jsr223/jython" +-fi +-# JSR223/Scala - necessary system property +-if [ -f "$CASSANDRA_HOME"/lib/jsr223/scala/scala-compiler.jar ] ; then +- export JVM_OPTS="$JVM_OPTS -Dscala.usejavacp=true" +-fi + + # set JVM javaagent opts to avoid warnings/errors + if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \ + || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ] + then +- JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar" ++ JAVA_AGENT="$JAVA_AGENT -javaagent:`build-classpath jamm`" + fi +- +-# Added sigar-bin to the java.library.path CASSANDRA-7838 +-JAVA_OPTS="$JAVA_OPTS:-Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin" +diff -ur cassandra-cassandra-3.9/bin/cqlsh.py cassandra-cassandra-3.9new/bin/cqlsh.py +--- cassandra-cassandra-3.9/bin/cqlsh.py 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/bin/cqlsh.py 2016-10-17 11:03:56.086746819 +0200 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/usr/bin/python + # -*- mode: Python -*- + + # Licensed to the Apache Software Foundation (ASF) under one +@@ -17,18 +17,6 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-""":" +-# bash code here; finds a suitable python interpreter and execs this file. +-# prefer unqualified "python" if suitable: +-python -c 'import sys; sys.exit(not (0x020700b0 < sys.hexversion < 0x03000000))' 2>/dev/null \ +- && exec python "$0" "$@" +-for pyver in 2.7; do +- which python$pyver > /dev/null 2>&1 && exec python$pyver "$0" "$@" +-done +-echo "No appropriate python interpreter found." >&2 +-exit 1 +-":""" +- + from __future__ import with_statement + + import cmd +diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9new/conf/cassandra-env.sh +--- cassandra-cassandra-3.9/conf/cassandra-env.sh 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/conf/cassandra-env.sh 2016-10-17 11:03:56.086746819 +0200 +@@ -121,8 +121,8 @@ + ;; + esac + +-#GC log path has to be defined here because it needs to access CASSANDRA_HOME +-JVM_OPTS="$JVM_OPTS -Xloggc:${CASSANDRA_HOME}/logs/gc.log" ++#GC log path ++JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log" + + # Here we create the arguments that will get passed to the jvm when + # starting cassandra. +@@ -207,7 +207,7 @@ + JVM_OPTS="$JVM_OPTS -XX:CompileCommandFile=$CASSANDRA_CONF/hotspot_compiler" + + # add the jamm javaagent +-JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar" ++JVM_OPTS="$JVM_OPTS -javaagent:`build-classpath jamm`" + + # set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR + if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then +@@ -288,7 +288,12 @@ + # 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 [ "$JVM_ARCH" = "64-Bit" ]; then ++ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib64/sigar" ++else ++ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib/sigar" ++fi ++ + + JVM_OPTS="$JVM_OPTS $MX4J_ADDRESS" + JVM_OPTS="$JVM_OPTS $MX4J_PORT" +diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stress cassandra-cassandra-3.9new/tools/bin/cassandra-stress +--- cassandra-cassandra-3.9/tools/bin/cassandra-stress 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/tools/bin/cassandra-stress 2016-10-17 11:03:56.086746819 +0200 +@@ -49,6 +49,8 @@ + exit 1 + fi + ++CLASSPATH="$CLASSPATH:`build-classpath cassandra-stress`" ++ + "$JAVA" -server -ea -cp "$CLASSPATH" $JVM_OPTS \ + -Dcassandra.storagedir="$cassandra_storagedir" \ + -Dlogback.configurationFile=logback-tools.xml \ +diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stressd cassandra-cassandra-3.9new/tools/bin/cassandra-stressd +--- cassandra-cassandra-3.9/tools/bin/cassandra-stressd 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-cassandra-3.9new/tools/bin/cassandra-stressd 2016-10-17 11:03:56.086746819 +0200 +@@ -50,6 +50,8 @@ + exit 1 + fi + ++CLASSPATH="$CLASSPATH:`build-classpath cassandra-stress`" ++ + case "$1" in + start) + echo "Starting $DESC: " diff --git a/cassandra-3.9-slf4j.patch b/cassandra-3.9-slf4j.patch new file mode 100644 index 0000000..9d80bef --- /dev/null +++ b/cassandra-3.9-slf4j.patch @@ -0,0 +1,11 @@ +--- cassandra-cassandra-3.5/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java 2016-04-09 06:22:00.000000000 +0200 ++++ test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java 2016-05-31 16:39:22.118191738 +0200 +@@ -39,7 +39,7 @@ + { + Map>> logged = new HashMap<>(); + +- Logger mock = new SubstituteLogger(null) ++ Logger mock = new SubstituteLogger(null, null, true) + { + + @Override diff --git a/cassandra-3.9-thrift.patch b/cassandra-3.9-thrift.patch new file mode 100644 index 0000000..5f8580c --- /dev/null +++ b/cassandra-3.9-thrift.patch @@ -0,0 +1,27 @@ +--- cassandra-cassandra-3.5/src/java/org/apache/cassandra/thrift/CustomTThreadPoolServer.java 2016-04-09 06:22:00.000000000 +0200 ++++ src/java/org/apache/cassandra/thrift/CustomTThreadPoolServer.java 2016-05-31 15:19:09.777021914 +0200 +@@ -188,9 +188,9 @@ + TProtocol inputProtocol = null; + TProtocol outputProtocol = null; + SocketAddress socket = null; +- try (TTransport inputTransport = inputTransportFactory_.getTransport(client_); +- TTransport outputTransport = outputTransportFactory_.getTransport(client_)) +- { ++ TTransport inputTransport = inputTransportFactory_.getTransport(client_); ++ TTransport outputTransport = outputTransportFactory_.getTransport(client_); ++ try { + socket = ((TCustomSocket) client_).getSocket().getRemoteSocketAddress(); + ThriftSessionManager.instance.setCurrentSocket(socket); + processor = processorFactory_.getProcessor(client_); +@@ -226,7 +226,10 @@ + { + if (socket != null) + ThriftSessionManager.instance.connectionComplete(socket); +- ++ if (inputTransport != null) ++ inputTransport.close(); ++ if (outputTransport != null) ++ outputTransport.close(); + activeClients.decrementAndGet(); + } + } diff --git a/cassandra-all-3.9.pom b/cassandra-all-3.9.pom new file mode 100644 index 0000000..6885de5 --- /dev/null +++ b/cassandra-all-3.9.pom @@ -0,0 +1,811 @@ + + + 4.0.0 + + cassandra-parent + org.apache.cassandra + 3.9 + + org.apache.cassandra + cassandra-all + 3.9 + Apache Cassandra + The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. + http://cassandra.apache.org + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + alakshman + Avinash Lakshman + + + aleksey + Aleksey Yeschenko + + + amorton + Aaron Morton + + + benedict + Benedict Elliott Smith + + + benjamin + Benjamin Lerer + + + brandonwilliams + Brandon Williams + + + dbrosius + David Brosius + + + eevans + Eric Evans + + + gdusbabek + Gary Dusbabek + + + goffinet + Chris Goffinet + + + jaakko + Laine Jaakko Olavi + + + jake + T Jake Luciani + + + jasonbrown + Jason Brown + + + jbellis + Jonathan Ellis + + + jmckenzie + Josh McKenzie + + + johan + Johan Oskarsson + + + junrao + Jun Rao + + + marcuse + Marcus Eriksson + + + mishail + Mikhail Stepura + + + pmalik + Prashant Malik + + + rstupp + Robert Stupp + + + scode + Peter Schuller + + + beobal + Sam Tunnicliffe + + + slebresne + Sylvain Lebresne + + + tylerhobbs + Tyler Hobbs + + + vijay + Vijay Parthasarathy + + + xedin + Pavel Yaskevich + + + yukim + Yuki Morishita + + + + scm:git://git.apache.org/cassandra.git + scm:git://git.apache.org/cassandra.git + http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree + + + + org.xerial.snappy + snappy-java + 1.1.1.7 + + + net.jpountz.lz4 + lz4 + 1.3.0 + + + com.ning + compress-lzf + 0.8.4 + + + com.google.guava + guava + 18.0 + + + commons-cli + commons-cli + 1.1 + + + commons-codec + commons-codec + 1.2 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.apache.commons + commons-math3 + 3.2 + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + 1.4 + + + org.antlr + antlr + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.antlr + antlr-runtime + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + org.codehaus.jackson + jackson-core-asl + 1.9.2 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.boundary + high-scale-lib + 1.0.6 + + + org.yaml + snakeyaml + 1.11 + + + org.mindrot + jbcrypt + 0.3m + + + io.dropwizard.metrics + metrics-core + 3.1.0 + + + io.dropwizard.metrics + metrics-jvm + 3.1.0 + + + com.addthis.metrics + reporter-config3 + 3.0.0 + + + com.thinkaurelius.thrift + thrift-server + 0.3.7 + + + slf4j-log4j12 + org.slf4j + + + junit + junit + + + + + com.clearspring.analytics + stream + 2.5.2 + + + ch.qos.logback + logback-core + 1.1.3 + + + ch.qos.logback + logback-classic + 1.1.3 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + org.apache.cassandra + cassandra-thrift + 3.9 + + + org.apache.hadoop + hadoop-core + 1.0.3 + + + servlet-api + org.mortbay.jetty + + + commons-logging + commons-logging + + + core + org.eclipse.jdt + + + ant + ant + + + true + + + org.apache.hadoop + hadoop-minicluster + 1.0.3 + + + asm + asm + + + true + + + com.datastax.cassandra + cassandra-driver-core + 3.0.1 + shaded + + + netty-buffer + io.netty + + + netty-codec + io.netty + + + netty-handler + io.netty + + + netty-transport + io.netty + + + true + + + net.java.dev.jna + jna + 4.0.0 + + + com.github.jbellis + jamm + 0.3.0 + + + io.netty + netty-all + 4.0.39.Final + + + joda-time + joda-time + 2.4 + + + org.fusesource + sigar + 1.6.4 + + + log4j + log4j + + + + + org.eclipse.jdt.core.compiler + ecj + 4.4.2 + + + org.caffinitas.ohc + ohc-core + 0.4.3 + + + com.github.ben-manes.caffeine + caffeine + 2.2.6 + + + + + + org.xerial.snappy + snappy-java + 1.1.1.7 + + + net.jpountz.lz4 + lz4 + 1.3.0 + + + com.ning + compress-lzf + 0.8.4 + + + com.google.guava + guava + 18.0 + + + org.hdrhistogram + HdrHistogram + 2.1.9 + + + commons-cli + commons-cli + 1.1 + + + commons-codec + commons-codec + 1.2 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.apache.commons + commons-math3 + 3.2 + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + 1.4 + + + org.antlr + antlr + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.antlr + antlr-runtime + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + ch.qos.logback + logback-core + 1.1.3 + + + ch.qos.logback + logback-classic + 1.1.3 + + + org.codehaus.jackson + jackson-core-asl + 1.9.2 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.boundary + high-scale-lib + 1.0.6 + + + com.github.jbellis + jamm + 0.3.0 + + + com.thinkaurelius.thrift + thrift-server + 0.3.7 + + + slf4j-log4j12 + org.slf4j + + + junit + junit + + + + + org.yaml + snakeyaml + 1.11 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + junit + junit + 4.6 + + + org.apache.rat + apache-rat + 0.10 + + + commons-lang + commons-lang + + + + + org.apache.hadoop + hadoop-core + 1.0.3 + + + servlet-api + org.mortbay.jetty + + + commons-logging + commons-logging + + + core + org.eclipse.jdt + + + ant + ant + + + + + org.apache.hadoop + hadoop-minicluster + 1.0.3 + + + asm + asm + + + + + net.java.dev.jna + jna + 4.0.0 + + + org.jacoco + org.jacoco.agent + 0.7.5.201505241946 + + + org.jacoco + org.jacoco.ant + 0.7.5.201505241946 + + + org.jboss.byteman + byteman + 3.0.3 + + + org.jboss.byteman + byteman-submit + 3.0.3 + + + org.jboss.byteman + byteman-bmunit + 3.0.3 + + + org.openjdk.jmh + jmh-core + 1.1.1 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.1.1 + + + org.apache.cassandra + cassandra-all + 3.9 + + + org.apache.cassandra + cassandra-thrift + 3.9 + + + io.dropwizard.metrics + metrics-core + 3.1.0 + + + io.dropwizard.metrics + metrics-jvm + 3.1.0 + + + com.addthis.metrics + reporter-config3 + 3.0.0 + + + org.mindrot + jbcrypt + 0.3m + + + io.airlift + airline + 0.6 + + + io.netty + netty-all + 4.0.39.Final + + + com.google.code.findbugs + jsr305 + 2.0.2 + + + com.clearspring.analytics + stream + 2.5.2 + + + com.datastax.cassandra + cassandra-driver-core + 3.0.1 + shaded + + + netty-buffer + io.netty + + + netty-codec + io.netty + + + netty-handler + io.netty + + + netty-transport + io.netty + + + + + org.eclipse.jdt.core.compiler + ecj + 4.4.2 + + + org.caffinitas.ohc + ohc-core + 0.4.3 + + + org.caffinitas.ohc + ohc-core-j8 + 0.4.3 + + + net.ju-n.compile-command-annotations + compile-command-annotations + 1.2.0 + + + org.fusesource + sigar + 1.6.4 + + + log4j + log4j + + + + + joda-time + joda-time + 2.4 + + + com.carrotsearch + hppc + 0.5.4 + + + de.jflex + jflex + 1.6.0 + + + net.mintern + primitive + 1.0 + + + com.github.rholder + snowball-stemmer + 1.3.0.581.1 + + + com.googlecode.concurrent-trees + concurrent-trees + 2.4.0 + + + com.github.ben-manes.caffeine + caffeine + 2.2.6 + + + + diff --git a/cassandra-clientutil-3.9.pom b/cassandra-clientutil-3.9.pom new file mode 100644 index 0000000..f74051b --- /dev/null +++ b/cassandra-clientutil-3.9.pom @@ -0,0 +1,536 @@ + + + 4.0.0 + + cassandra-parent + org.apache.cassandra + 3.9 + + org.apache.cassandra + cassandra-clientutil + 3.9 + Apache Cassandra + The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. + http://cassandra.apache.org + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + alakshman + Avinash Lakshman + + + aleksey + Aleksey Yeschenko + + + amorton + Aaron Morton + + + benedict + Benedict Elliott Smith + + + benjamin + Benjamin Lerer + + + brandonwilliams + Brandon Williams + + + dbrosius + David Brosius + + + eevans + Eric Evans + + + gdusbabek + Gary Dusbabek + + + goffinet + Chris Goffinet + + + jaakko + Laine Jaakko Olavi + + + jake + T Jake Luciani + + + jasonbrown + Jason Brown + + + jbellis + Jonathan Ellis + + + jmckenzie + Josh McKenzie + + + johan + Johan Oskarsson + + + junrao + Jun Rao + + + marcuse + Marcus Eriksson + + + mishail + Mikhail Stepura + + + pmalik + Prashant Malik + + + rstupp + Robert Stupp + + + scode + Peter Schuller + + + beobal + Sam Tunnicliffe + + + slebresne + Sylvain Lebresne + + + tylerhobbs + Tyler Hobbs + + + vijay + Vijay Parthasarathy + + + xedin + Pavel Yaskevich + + + yukim + Yuki Morishita + + + + scm:git://git.apache.org/cassandra.git + scm:git://git.apache.org/cassandra.git + http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree + + + + com.google.guava + guava + 18.0 + + + + + + org.xerial.snappy + snappy-java + 1.1.1.7 + + + net.jpountz.lz4 + lz4 + 1.3.0 + + + com.ning + compress-lzf + 0.8.4 + + + com.google.guava + guava + 18.0 + + + org.hdrhistogram + HdrHistogram + 2.1.9 + + + commons-cli + commons-cli + 1.1 + + + commons-codec + commons-codec + 1.2 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.apache.commons + commons-math3 + 3.2 + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + 1.4 + + + org.antlr + antlr + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.antlr + antlr-runtime + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + ch.qos.logback + logback-core + 1.1.3 + + + ch.qos.logback + logback-classic + 1.1.3 + + + org.codehaus.jackson + jackson-core-asl + 1.9.2 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.boundary + high-scale-lib + 1.0.6 + + + com.github.jbellis + jamm + 0.3.0 + + + com.thinkaurelius.thrift + thrift-server + 0.3.7 + + + slf4j-log4j12 + org.slf4j + + + junit + junit + + + + + org.yaml + snakeyaml + 1.11 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + junit + junit + 4.6 + + + org.apache.rat + apache-rat + 0.10 + + + commons-lang + commons-lang + + + + + org.apache.hadoop + hadoop-core + 1.0.3 + + + servlet-api + org.mortbay.jetty + + + commons-logging + commons-logging + + + core + org.eclipse.jdt + + + ant + ant + + + + + org.apache.hadoop + hadoop-minicluster + 1.0.3 + + + asm + asm + + + + + net.java.dev.jna + jna + 4.0.0 + + + org.jacoco + org.jacoco.agent + 0.7.5.201505241946 + + + org.jacoco + org.jacoco.ant + 0.7.5.201505241946 + + + org.jboss.byteman + byteman + 3.0.3 + + + org.jboss.byteman + byteman-submit + 3.0.3 + + + org.jboss.byteman + byteman-bmunit + 3.0.3 + + + org.openjdk.jmh + jmh-core + 1.1.1 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.1.1 + + + org.apache.cassandra + cassandra-all + 3.9 + + + org.apache.cassandra + cassandra-thrift + 3.9 + + + io.dropwizard.metrics + metrics-core + 3.1.0 + + + io.dropwizard.metrics + metrics-jvm + 3.1.0 + + + com.addthis.metrics + reporter-config3 + 3.0.0 + + + org.mindrot + jbcrypt + 0.3m + + + io.airlift + airline + 0.6 + + + io.netty + netty-all + 4.0.39.Final + + + com.google.code.findbugs + jsr305 + 2.0.2 + + + com.clearspring.analytics + stream + 2.5.2 + + + com.datastax.cassandra + cassandra-driver-core + 3.0.1 + shaded + + + netty-buffer + io.netty + + + netty-codec + io.netty + + + netty-handler + io.netty + + + netty-transport + io.netty + + + + + org.eclipse.jdt.core.compiler + ecj + 4.4.2 + + + org.caffinitas.ohc + ohc-core + 0.4.3 + + + org.caffinitas.ohc + ohc-core-j8 + 0.4.3 + + + net.ju-n.compile-command-annotations + compile-command-annotations + 1.2.0 + + + org.fusesource + sigar + 1.6.4 + + + log4j + log4j + + + + + joda-time + joda-time + 2.4 + + + com.carrotsearch + hppc + 0.5.4 + + + de.jflex + jflex + 1.6.0 + + + net.mintern + primitive + 1.0 + + + com.github.rholder + snowball-stemmer + 1.3.0.581.1 + + + com.googlecode.concurrent-trees + concurrent-trees + 2.4.0 + + + com.github.ben-manes.caffeine + caffeine + 2.2.6 + + + + diff --git a/cassandra-parent-3.9.pom b/cassandra-parent-3.9.pom new file mode 100644 index 0000000..b07143d --- /dev/null +++ b/cassandra-parent-3.9.pom @@ -0,0 +1,525 @@ + + + 4.0.0 + org.apache.cassandra + cassandra-parent + 3.9 + pom + Apache Cassandra + The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. + http://cassandra.apache.org + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + alakshman + Avinash Lakshman + + + aleksey + Aleksey Yeschenko + + + amorton + Aaron Morton + + + benedict + Benedict Elliott Smith + + + benjamin + Benjamin Lerer + + + brandonwilliams + Brandon Williams + + + dbrosius + David Brosius + + + eevans + Eric Evans + + + gdusbabek + Gary Dusbabek + + + goffinet + Chris Goffinet + + + jaakko + Laine Jaakko Olavi + + + jake + T Jake Luciani + + + jasonbrown + Jason Brown + + + jbellis + Jonathan Ellis + + + jmckenzie + Josh McKenzie + + + johan + Johan Oskarsson + + + junrao + Jun Rao + + + marcuse + Marcus Eriksson + + + mishail + Mikhail Stepura + + + pmalik + Prashant Malik + + + rstupp + Robert Stupp + + + scode + Peter Schuller + + + beobal + Sam Tunnicliffe + + + slebresne + Sylvain Lebresne + + + tylerhobbs + Tyler Hobbs + + + vijay + Vijay Parthasarathy + + + xedin + Pavel Yaskevich + + + yukim + Yuki Morishita + + + + scm:git://git.apache.org/cassandra.git + scm:git://git.apache.org/cassandra.git + http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree + + + + + org.xerial.snappy + snappy-java + 1.1.1.7 + + + net.jpountz.lz4 + lz4 + 1.3.0 + + + com.ning + compress-lzf + 0.8.4 + + + com.google.guava + guava + 18.0 + + + org.hdrhistogram + HdrHistogram + 2.1.9 + + + commons-cli + commons-cli + 1.1 + + + commons-codec + commons-codec + 1.2 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.apache.commons + commons-math3 + 3.2 + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + 1.4 + + + org.antlr + antlr + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.antlr + antlr-runtime + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + ch.qos.logback + logback-core + 1.1.3 + + + ch.qos.logback + logback-classic + 1.1.3 + + + org.codehaus.jackson + jackson-core-asl + 1.9.2 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.boundary + high-scale-lib + 1.0.6 + + + com.github.jbellis + jamm + 0.3.0 + + + com.thinkaurelius.thrift + thrift-server + 0.3.7 + + + slf4j-log4j12 + org.slf4j + + + junit + junit + + + + + org.yaml + snakeyaml + 1.11 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + junit + junit + 4.6 + + + org.apache.rat + apache-rat + 0.10 + + + commons-lang + commons-lang + + + + + org.apache.hadoop + hadoop-core + 1.0.3 + + + servlet-api + org.mortbay.jetty + + + commons-logging + commons-logging + + + core + org.eclipse.jdt + + + ant + ant + + + + + org.apache.hadoop + hadoop-minicluster + 1.0.3 + + + asm + asm + + + + + net.java.dev.jna + jna + 4.0.0 + + + org.jacoco + org.jacoco.agent + 0.7.5.201505241946 + + + org.jacoco + org.jacoco.ant + 0.7.5.201505241946 + + + org.jboss.byteman + byteman + 3.0.3 + + + org.jboss.byteman + byteman-submit + 3.0.3 + + + org.jboss.byteman + byteman-bmunit + 3.0.3 + + + org.openjdk.jmh + jmh-core + 1.1.1 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.1.1 + + + org.apache.cassandra + cassandra-all + 3.9 + + + org.apache.cassandra + cassandra-thrift + 3.9 + + + io.dropwizard.metrics + metrics-core + 3.1.0 + + + io.dropwizard.metrics + metrics-jvm + 3.1.0 + + + com.addthis.metrics + reporter-config3 + 3.0.0 + + + org.mindrot + jbcrypt + 0.3m + + + io.airlift + airline + 0.6 + + + io.netty + netty-all + 4.0.39.Final + + + com.google.code.findbugs + jsr305 + 2.0.2 + + + com.clearspring.analytics + stream + 2.5.2 + + + com.datastax.cassandra + cassandra-driver-core + 3.0.1 + shaded + + + netty-buffer + io.netty + + + netty-codec + io.netty + + + netty-handler + io.netty + + + netty-transport + io.netty + + + + + org.eclipse.jdt.core.compiler + ecj + 4.4.2 + + + org.caffinitas.ohc + ohc-core + 0.4.3 + + + org.caffinitas.ohc + ohc-core-j8 + 0.4.3 + + + net.ju-n.compile-command-annotations + compile-command-annotations + 1.2.0 + + + org.fusesource + sigar + 1.6.4 + + + log4j + log4j + + + + + joda-time + joda-time + 2.4 + + + com.carrotsearch + hppc + 0.5.4 + + + de.jflex + jflex + 1.6.0 + + + net.mintern + primitive + 1.0 + + + com.github.rholder + snowball-stemmer + 1.3.0.581.1 + + + com.googlecode.concurrent-trees + concurrent-trees + 2.4.0 + + + com.github.ben-manes.caffeine + caffeine + 2.2.6 + + + + diff --git a/cassandra-thrift-3.9.pom b/cassandra-thrift-3.9.pom new file mode 100644 index 0000000..1c61f83 --- /dev/null +++ b/cassandra-thrift-3.9.pom @@ -0,0 +1,587 @@ + + + 4.0.0 + + cassandra-parent + org.apache.cassandra + 3.9 + + org.apache.cassandra + cassandra-thrift + 3.9 + Apache Cassandra + The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model. + http://cassandra.apache.org + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + alakshman + Avinash Lakshman + + + aleksey + Aleksey Yeschenko + + + amorton + Aaron Morton + + + benedict + Benedict Elliott Smith + + + benjamin + Benjamin Lerer + + + brandonwilliams + Brandon Williams + + + dbrosius + David Brosius + + + eevans + Eric Evans + + + gdusbabek + Gary Dusbabek + + + goffinet + Chris Goffinet + + + jaakko + Laine Jaakko Olavi + + + jake + T Jake Luciani + + + jasonbrown + Jason Brown + + + jbellis + Jonathan Ellis + + + jmckenzie + Josh McKenzie + + + johan + Johan Oskarsson + + + junrao + Jun Rao + + + marcuse + Marcus Eriksson + + + mishail + Mikhail Stepura + + + pmalik + Prashant Malik + + + rstupp + Robert Stupp + + + scode + Peter Schuller + + + beobal + Sam Tunnicliffe + + + slebresne + Sylvain Lebresne + + + tylerhobbs + Tyler Hobbs + + + vijay + Vijay Parthasarathy + + + xedin + Pavel Yaskevich + + + yukim + Yuki Morishita + + + + scm:git://git.apache.org/cassandra.git + scm:git://git.apache.org/cassandra.git + http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree + + + + org.apache.commons + commons-lang3 + 3.1 + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + com.carrotsearch + hppc + 0.5.4 + + + de.jflex + jflex + 1.6.0 + + + net.mintern + primitive + 1.0 + + + com.github.rholder + snowball-stemmer + 1.3.0.581.1 + + + com.googlecode.concurrent-trees + concurrent-trees + 2.4.0 + + + + + + org.xerial.snappy + snappy-java + 1.1.1.7 + + + net.jpountz.lz4 + lz4 + 1.3.0 + + + com.ning + compress-lzf + 0.8.4 + + + com.google.guava + guava + 18.0 + + + org.hdrhistogram + HdrHistogram + 2.1.9 + + + commons-cli + commons-cli + 1.1 + + + commons-codec + commons-codec + 1.2 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.apache.commons + commons-math3 + 3.2 + + + com.googlecode.concurrentlinkedhashmap + concurrentlinkedhashmap-lru + 1.4 + + + org.antlr + antlr + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.antlr + antlr-runtime + 3.5.2 + + + stringtemplate + org.antlr + + + + + org.slf4j + slf4j-api + 1.7.7 + + + org.slf4j + log4j-over-slf4j + 1.7.7 + + + org.slf4j + jcl-over-slf4j + 1.7.7 + + + ch.qos.logback + logback-core + 1.1.3 + + + ch.qos.logback + logback-classic + 1.1.3 + + + org.codehaus.jackson + jackson-core-asl + 1.9.2 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.boundary + high-scale-lib + 1.0.6 + + + com.github.jbellis + jamm + 0.3.0 + + + com.thinkaurelius.thrift + thrift-server + 0.3.7 + + + slf4j-log4j12 + org.slf4j + + + junit + junit + + + + + org.yaml + snakeyaml + 1.11 + + + org.apache.thrift + libthrift + 0.9.2 + + + commons-logging + commons-logging + + + + + junit + junit + 4.6 + + + org.apache.rat + apache-rat + 0.10 + + + commons-lang + commons-lang + + + + + org.apache.hadoop + hadoop-core + 1.0.3 + + + servlet-api + org.mortbay.jetty + + + commons-logging + commons-logging + + + core + org.eclipse.jdt + + + ant + ant + + + + + org.apache.hadoop + hadoop-minicluster + 1.0.3 + + + asm + asm + + + + + net.java.dev.jna + jna + 4.0.0 + + + org.jacoco + org.jacoco.agent + 0.7.5.201505241946 + + + org.jacoco + org.jacoco.ant + 0.7.5.201505241946 + + + org.jboss.byteman + byteman + 3.0.3 + + + org.jboss.byteman + byteman-submit + 3.0.3 + + + org.jboss.byteman + byteman-bmunit + 3.0.3 + + + org.openjdk.jmh + jmh-core + 1.1.1 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.1.1 + + + org.apache.cassandra + cassandra-all + 3.9 + + + org.apache.cassandra + cassandra-thrift + 3.9 + + + io.dropwizard.metrics + metrics-core + 3.1.0 + + + io.dropwizard.metrics + metrics-jvm + 3.1.0 + + + com.addthis.metrics + reporter-config3 + 3.0.0 + + + org.mindrot + jbcrypt + 0.3m + + + io.airlift + airline + 0.6 + + + io.netty + netty-all + 4.0.39.Final + + + com.google.code.findbugs + jsr305 + 2.0.2 + + + com.clearspring.analytics + stream + 2.5.2 + + + com.datastax.cassandra + cassandra-driver-core + 3.0.1 + shaded + + + netty-buffer + io.netty + + + netty-codec + io.netty + + + netty-handler + io.netty + + + netty-transport + io.netty + + + + + org.eclipse.jdt.core.compiler + ecj + 4.4.2 + + + org.caffinitas.ohc + ohc-core + 0.4.3 + + + org.caffinitas.ohc + ohc-core-j8 + 0.4.3 + + + net.ju-n.compile-command-annotations + compile-command-annotations + 1.2.0 + + + org.fusesource + sigar + 1.6.4 + + + log4j + log4j + + + + + joda-time + joda-time + 2.4 + + + com.carrotsearch + hppc + 0.5.4 + + + de.jflex + jflex + 1.6.0 + + + net.mintern + primitive + 1.0 + + + com.github.rholder + snowball-stemmer + 1.3.0.581.1 + + + com.googlecode.concurrent-trees + concurrent-trees + 2.4.0 + + + com.github.ben-manes.caffeine + caffeine + 2.2.6 + + + + diff --git a/cassandra-tmpfile b/cassandra-tmpfile new file mode 100644 index 0000000..64b24bf --- /dev/null +++ b/cassandra-tmpfile @@ -0,0 +1,3 @@ +# make sure the cassandra dir is owned by cassandra so the process running as +# cassandra can write the pid there +d /run/cassandra 0755 cassandra root - diff --git a/cassandra.logrotate b/cassandra.logrotate new file mode 100644 index 0000000..1ad8e52 --- /dev/null +++ b/cassandra.logrotate @@ -0,0 +1,10 @@ +/var/log/cassandra/*.log { + weekly + rotate 10 + copytruncate + delaycompress + compress + notifempty + missingok +} + diff --git a/cassandra.spec b/cassandra.spec new file mode 100644 index 0000000..e1d6c2c --- /dev/null +++ b/cassandra.spec @@ -0,0 +1,438 @@ +%{?scl:%scl_package cassandra} +%{!?scl:%global pkg_name %{name}} + +%global allocated_gid 143 +%global allocated_uid 143 + +Name: %{?scl_prefix}cassandra +Version: 3.9 +Release: 1%{?dist} +Summary: OpenSource database Apache Cassandra +# Apache (v2.0) BSD (3 clause): +# ./src/java/org/apache/cassandra/utils/vint/VIntCoding.java +License: ASL 2.0 and BSD +URL: http://cassandra.apache.org/ +Source0: https://github.com/apache/%{pkg_name}/archive/%{pkg_name}-%{version}.tar.gz +Source1: %{pkg_name}.logrotate +Source2: %{pkg_name}d.service +Source3: %{pkg_name}-tmpfile +# pom files are not generated but used are the ones from mavencentral +# because of orphaned mavent-ant-task package doing the work in this case +# failed koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=15542960 +Source4: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-all/%{version}/%{pkg_name}-all-%{version}.pom +Source5: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-thrift/%{version}/%{pkg_name}-thrift-%{version}.pom +Source6: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-clientutil/%{version}/%{pkg_name}-clientutil-%{version}.pom +Source7: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-parent/%{version}/%{pkg_name}-parent-%{version}.pom + +# fix encoding, naming, classpaths and dependencies +Patch0: %{pkg_name}-%{version}-build.patch +# airline0.7 imports fix in cassandra source, which is dependent on 0.6 version +# https://issues.apache.org/jira/browse/CASSANDRA-12994 +Patch1: %{pkg_name}-%{version}-airline0.7.patch +# modify installed scripts +Patch2: %{pkg_name}-%{version}-scripts.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1340876 +# remove "Open" infix from all hppc classes +# https://issues.apache.org/jira/browse/CASSANDRA-12995X +Patch3: %{pkg_name}-%{version}-hppc.patch +# changes autoclosable issue with TTransport in thrift +# https://bugzilla.redhat.com/show_bug.cgi?id=1183877 +Patch4: %{pkg_name}-%{version}-thrift.patch +# add two more parameters for SubstituteLogger constructor in slf4j +# https://issues.apache.org/jira/browse/CASSANDRA-12996 +Patch5: %{pkg_name}-%{version}-slf4j.patch +# remove net.mintern:primitive as it will be removed in next upstream release +# https://github.com/apache/cassandra/commit/8f0d5a295d34972ef719574df4aa1b59bf9e8478 +Patch6: %{pkg_name}-%{version}-remove-primitive.patch + +%{?scl:Requires: %scl_runtime} +Requires(pre): shadow-utils +%{?systemd_requires} +BuildRequires: systemd +BuildRequires: %{?scl_prefix_maven}maven-local +BuildRequires: %{?scl_prefix_java_common}ant +BuildRequires: %{?scl_prefix_java_common}ecj +BuildRequires: %{?scl_prefix}jamm +BuildRequires: %{?scl_prefix}stream-lib +BuildRequires: %{?scl_prefix}metrics +BuildRequires: %{?scl_prefix}metrics-jvm +BuildRequires: %{?scl_prefix}json_simple +BuildRequires: %{?scl_prefix}compile-command-annotations +BuildRequires: %{?scl_prefix}jBCrypt +BuildRequires: %{?scl_prefix}concurrent-trees +BuildRequires: %{?scl_prefix}logback +BuildRequires: %{?scl_prefix}metrics-reporter-config +BuildRequires: %{?scl_prefix}compress-lzf +BuildRequires: %{?scl_prefix}disruptor-thrift-server +BuildRequires: %{?scl_prefix}airline +BuildRequires: %{?scl_prefix}jmh +BuildRequires: %{?scl_prefix}byteman +BuildRequires: %{?scl_prefix}HdrHistogram +BuildRequires: %{?scl_prefix}sigar-java +BuildRequires: %{?scl_prefix}jackson +BuildRequires: %{?scl_prefix}antlr3-tool +# using high-scale-lib from stephenc, no Cassandra original +#BuildRequires: mvn(com.boundary:high-scale-lib) +BuildRequires: %{?scl_prefix}high-scale-lib +# using repackaging of the snowball stemmer so that it's available on Maven Central +#BuildRequires: mvn(com.github.rholder:snowball-stemmer) +BuildRequires: %{?scl_prefix}snowball-java +# probably won't need in the future +BuildRequires: %{?scl_prefix}concurrentlinkedhashmap-lru +# in rh-maven33: 1.4.3, needed: 1.6.0 +BuildRequires: %{?scl_prefix_maven}jflex +# in rh-java-common: 1.7.4, needed: 1.7.7 +BuildRequires: %{?scl_prefix_java_common}log4j-over-slf4j +# in rh-java-common: 1.7.4, needed: 1.7.7 +BuildRequires: %{?scl_prefix_java_common}jcl-over-slf4j +# in rh-java-common: 1.9.2, needed: 1.9.4 +BuildRequires: %{?scl_prefix_java_common}ant-junit +# in rh-java-common: 4.0.28, needed: 4.0.39.Final +BuildRequires: %{?scl_prefix_java_common}netty +# in cassandra39: 0.9.1, needed: 0.9.2 +BuildRequires: %{?scl_prefix}libthrift-java +# TODO +BuildRequires: %{?scl_prefix}cassandra-java-driver +BuildRequires: %{?scl_prefix}lz4-java +BuildRequires: %{?scl_prefix}snappy-java +BuildRequires: %{?scl_prefix}ohc +BuildRequires: %{?scl_prefix}ohc-core-j8 +BuildRequires: %{?scl_prefix}hppc +BuildRequires: %{?scl_prefix}caffeine +# the SCL version of the package depends on rh-maven33 collection +#%{?scl:Requires: %%scl_require rh-maven33} + +# temporarly removed as it is optional +# using hadoop-common instead of hadoop-core, no Cassandra original +#BuildRequires: mvn(org.apache.hadoop:hadoop-core) +#BuildRequires: hadoop-common +#BuildRequires: hadoop-mapreduce + +%description +Cassandra is a partitioned row store. Rows are organized into tables with +a required primary key. Partitioning means that Cassandra can distribute your +data across multiple machines in an application-transparent matter. Cassandra +will automatically repartition as machines are added / removed from the cluster. +Row store means that like relational databases, Cassandra organizes data by +rows and columns. The Cassandra Query Language (CQL) is a close relative of SQL. +Database Pure Java Driver. It was developed specifically as a lightweight +JDBC connector for use with MySQL and MariaDB database servers. + +%package parent +Summary: Parent POM for %{pkg_name} + +%description parent +Parent POM for %{pkg_name}. + +%package thrift +Summary: Thrift for %{pkg_name} +Requires: %{pkg_name} = %{version}-%{release} + +%description thrift +Allows portable (across programming languages) access to the database. Thrift +accomplishes this by generated source code for the programming language in +question based on a Thrift IDL file describing the service. + +%package clientutil +Summary: Client utilities for %{pkg_name} +Requires: %{pkg_name} = %{version}-%{release} +Requires: python-cassandra-driver + +%description clientutil +Utilities usable by client for %{pkg_name} + +# source codes of cqlshlib are not python3 compatible, therefore using python2 +%package python2-cqlshlib +Summary: Commandline interface for %{name} +BuildRequires: python2-devel +BuildRequires: Cython +Requires: %{name} = %{version}-%{release} +Requires: python-cassandra-driver +Provides: cqlsh +%{?python_provide:%python_provide python2-cqlshlib} + +%description python2-cqlshlib +Commandline client used to communicate with %{pkg_name} server. + +%package stress +Summary: Stress testing utility for %{pkg_name} +Requires: %{pkg_name} = %{version}-%{release} + +%description stress +The cassandra-stress tool is a Java-based stress testing utility +for benchmarking and load testing a Cassandra cluster. + +%package javadoc +Summary: Javadoc for %{pkg_name} + +%description javadoc +This package contains the API documentation for %{pkg_name}. + +%prep +%setup -qcn %{pkg_name}-%{version} +cp -pr %{pkg_name}-%{pkg_name}-%{version}/* . +rm -r %{pkg_name}-%{pkg_name}-%{version} + +# remove binary and library files +find -name "*.class" -print -delete +find -name "*.jar" -print -delete +find -name "*.zip" -print -delete +#./lib/futures-2.1.6-py2.py3-none-any.zip +#./lib/six-1.7.3-py2.py3-none-any.zip +#./lib/cassandra-driver-internal-only-2.6.0c2.post.zip +find -name "*.so" -print -delete +find -name "*.dll" -print -delete +find -name "*.sl" -print -delete +find -name "*.dylib" -print -delete +rm -r lib/sigar-bin/sigar-x86-winnt.lib +find -name "*.exe" -print -delete +find -name "*.bat" -print -delete +find -name "*.pyc" -print -delete +find -name "*py.class" -print -delete + +# remove hadoop +rm src/java/org/apache/cassandra/client/RingCache.java +rm -r src/java/org/apache/cassandra/hadoop +rm test/unit/org/apache/cassandra/client/TestRingCache.java +rm test/unit/org/apache/cassandra/hadoop/ColumnFamilyInputFormatTest.java + +# build jar repositories for dependencies +build-jar-repository lib antlr3 +build-jar-repository lib stringtemplate4 +build-jar-repository lib jsr-305 +build-jar-repository lib commons-lang3 +build-jar-repository lib libthrift +build-jar-repository lib slf4j/api +build-jar-repository lib guava +build-jar-repository lib jamm +build-jar-repository lib stream-lib +build-jar-repository lib metrics/metrics-core +build-jar-repository lib metrics/metrics-jvm +build-jar-repository lib json_simple +build-jar-repository lib antlr3-runtime +build-jar-repository lib compile-command-annotations +# https://bugzilla.redhat.com/show_bug.cgi?id=1308556 +build-jar-repository lib high-scale-lib/high-scale-lib +build-jar-repository lib cassandra-java-driver/cassandra-driver-core +build-jar-repository lib netty/netty-all +build-jar-repository lib lz4-java +build-jar-repository lib snappy-java +build-jar-repository lib jBCrypt +build-jar-repository lib concurrentlinkedhashmap-lru +build-jar-repository lib ohc/ohc-core +# temporarly removed because it is optional +#build-jar-repository lib hadoop/hadoop-common +build-jar-repository lib snakeyaml +build-jar-repository lib jackson/jackson-core-asl +build-jar-repository lib jackson/jackson-mapper-asl +build-jar-repository lib ecj +build-jar-repository lib objectweb-asm/asm +build-jar-repository lib commons-math3 +# temporarly removed because it is optional +#build-jar-repository lib hadoop/hadoop-mapreduce-client-core +build-jar-repository lib concurrent-trees +build-jar-repository lib hppc +build-jar-repository lib snowball-java +build-jar-repository lib logback/logback-classic +build-jar-repository lib logback/logback-core +build-jar-repository lib metrics-reporter-config/reporter-config +build-jar-repository lib metrics-reporter-config/reporter-config-base +build-jar-repository lib joda-time +build-jar-repository lib compress-lzf +build-jar-repository lib disruptor-thrift-server +build-jar-repository lib commons-cli +build-jar-repository lib airline +build-jar-repository lib jna +build-jar-repository lib sigar +# temporarly removed because it is optional +#build-jar-repository lib hadoop/hadoop-annotations +build-jar-repository lib jflex +build-jar-repository lib java_cup +build-jar-repository lib commons-codec +build-jar-repository lib caffeine +# test dependencies +build-jar-repository lib junit +build-jar-repository lib ant +build-jar-repository lib ant/ant-junit +build-jar-repository lib hamcrest/core +build-jar-repository lib apache-commons-io +build-jar-repository lib byteman/byteman-bmunit +build-jar-repository lib commons-collections +build-jar-repository lib jmh/jmh-core +build-jar-repository lib HdrHistogram +# binaries dependencies +build-jar-repository lib javax.inject + +# build patch +%patch0 -p1 +# airline patch +%patch1 -p1 +# scripts patch +%patch2 -p1 +# hppc patch +%patch3 -p1 +# thrift patch +%patch4 -p1 +# slf4j patch +%patch5 -p1 +# remove primitive patch +%patch6 -p1 + +# copy pom files +mkdir build +cp -p %{SOURCE4} build/%{pkg_name}-%{version}.pom +cp -p %{SOURCE5} build/%{pkg_name}-thrift-%{version}.pom +cp -p %{SOURCE6} build/%{pkg_name}-clientutil-%{version}.pom +cp -p %{SOURCE7} build/%{pkg_name}-%{version}-parent.pom + +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +# update dependencies that are not correct in the downloaded pom files +%pom_change_dep com.boundary: com.github.stephenc.high-scale-lib: build/%{name}-%{version}.pom +%pom_change_dep com.github.rholder:snowball-stemmer org.tartarus:snowball build/%{name}-thrift-%{version}.pom + +# remove primitve as a dependency +%pom_remove_dep -r :primitive build/%{pkg_name}-thrift-%{version}.pom + +%mvn_package "org.apache.%{pkg_name}:%{pkg_name}-parent:pom:%{version}" parent +%mvn_package ":%{pkg_name}-thrift" thrift +%mvn_package ":%{pkg_name}-clientutil" clientutil +%mvn_package ":%{pkg_name}-stress" stress +%{?scl:EOF} + +%build +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +ant jar javadoc -Drelease=true +%{?scl:EOF} + +# Build the cqlshlib Python module +pushd pylib +%py2_build +popd + +%install +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +%mvn_artifact build/%{pkg_name}-%{version}-parent.pom +%mvn_artifact build/%{pkg_name}-%{version}.pom build/%{pkg_name}-%{version}.jar +%mvn_artifact build/%{pkg_name}-thrift-%{version}.pom build/%{pkg_name}-thrift-%{version}.jar +%mvn_artifact build/%{pkg_name}-clientutil-%{version}.pom build/%{pkg_name}-clientutil-%{version}.jar +%mvn_artifact org.apache.cassandra:%{pkg_name}-stress:%{version} build/tools/lib/%{pkg_name}-stress.jar + +%mvn_install -J build/javadoc/ +%{?scl:EOF} + +# Install the cqlshlib Python module +pushd pylib +%py2_install +popd + +# create data dir +mkdir -p %{buildroot}%{_sharedstatedir}/%{pkg_name} + +# logs directory plus files +mkdir -p %{buildroot}%{_localstatedir}/log/%{pkg_name} +install -p -D -m 644 "%{SOURCE1}" %{buildroot}%{_sysconfdir}/logrotate.d/%{pkg_name} +install -p -D -m 755 bin/%{pkg_name} %{buildroot}%{_bindir}/%{pkg_name} +install -p -D -m 755 bin/%{pkg_name}.in.sh %{buildroot}%{_bindir}/%{pkg_name}.in.sh +install -p -D -m 755 conf/%{pkg_name}-env.sh %{buildroot}%{_sysconfdir}/%{pkg_name}-env.sh +install -p -D -m 644 conf/%{pkg_name}.yaml %{buildroot}%{_sysconfdir}/%{pkg_name}.yaml +install -p -D -m 644 conf/jvm.options %{buildroot}%{_sysconfdir}/jvm.options +install -p -D -m 644 conf/logback-tools.xml %{buildroot}%{_sysconfdir}/logback-tools.xml +install -p -D -m 644 conf/logback.xml %{buildroot}%{_sysconfdir}/logback.xml +install -p -D -m 755 bin/cqlsh.py %{buildroot}%{_bindir}/cqlsh +install -p -D -m 755 bin/nodetool %{buildroot}%{_bindir}/nodetool +install -p -D -m 755 bin/sstableloader %{buildroot}%{_bindir}/sstableloader +install -p -D -m 755 bin/sstablescrub %{buildroot}%{_bindir}/sstablescrub +install -p -D -m 755 bin/sstableupgrade %{buildroot}%{_bindir}/sstableupgrade +install -p -D -m 755 bin/sstableutil %{buildroot}%{_bindir}/sstableutil +install -p -D -m 755 bin/sstableverify %{buildroot}%{_bindir}/sstableverify +install -p -D -m 755 tools/bin/sstabledump %{buildroot}%{_bindir}/sstabledump +install -p -D -m 755 tools/bin/sstableexpiredblockers %{buildroot}%{_bindir}/sstableexpiredblockers +install -p -D -m 755 tools/bin/sstablelevelreset %{buildroot}%{_bindir}/sstablelevelreset +install -p -D -m 755 tools/bin/sstablemetadata %{buildroot}%{_bindir}/sstablemetadata +install -p -D -m 755 tools/bin/sstableofflinerelevel %{buildroot}%{_bindir}/sstableofflinerelevel +install -p -D -m 755 tools/bin/sstablerepairedset %{buildroot}%{_bindir}/sstablerepairedset +install -p -D -m 755 tools/bin/sstablesplit %{buildroot}%{_bindir}/sstablesplit +install -p -D -m 755 tools/bin/%{pkg_name}-stress %{buildroot}%{_bindir}/%{pkg_name}-stress +install -p -D -m 755 tools/bin/%{pkg_name}-stressd %{buildroot}%{_bindir}/%{pkg_name}-stressd + +# install cassandrad.service +install -p -D -m 644 "%{SOURCE2}" %{buildroot}%{_unitdir}/%{pkg_name}d.service + +%pre +getent group %{pkg_name} >/dev/null || groupadd -f -g %{allocated_gid} -r %{pkg_name} +if ! getent passwd %{pkg_name} >/dev/null ; then + if ! getrnt passwd %{allocated_uid} >/dev/null ; then + useradd -r -u %{allocated_uid} -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name} \ + -s /sbin/nologin -c "Cassandra Database Server" %{pkg_name} + else + useradd -r -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name} -s /sbin/nologin \ + -c "Cassandra Database Server" %{pkg_name} + fi +fi +exit 0 + +%post +%systemd_post %{pkg_name}d.service + +%preun +%systemd_preun %{pkg_name}d.service + +%postun +%systemd_postun_with_restart %{pkg_name}d.service + +%files -f .mfiles +%doc README.asc CHANGES.txt NEWS.txt +%license LICENSE.txt NOTICE.txt +%dir %attr(755, %{pkg_name}, root) %{_sharedstatedir}/%{pkg_name} +%dir %attr(750, %{pkg_name}, root) %{_localstatedir}/log/%{pkg_name} +%attr(755, root, root) %{_bindir}/%{pkg_name} +%attr(755, root, root) %{_bindir}/%{pkg_name}.in.sh +%config(noreplace) %{_sysconfdir}/%{pkg_name}-env.sh +%config(noreplace) %{_sysconfdir}/%{pkg_name}.yaml +%config(noreplace) %{_sysconfdir}/jvm.options +%config(noreplace) %{_sysconfdir}/logback-tools.xml +%config(noreplace) %{_sysconfdir}/logback.xml +%config(noreplace) %{_sysconfdir}/logrotate.d/%{pkg_name} +%{_unitdir}/%{pkg_name}d.service + +%files parent -f .mfiles-parent +%license LICENSE.txt NOTICE.txt + +%files thrift -f .mfiles-thrift +%license LICENSE.txt NOTICE.txt + +%files clientutil -f .mfiles-clientutil +%license LICENSE.txt NOTICE.txt +%attr(755, root, root) %{_bindir}/nodetool +%attr(755, root, root) %{_bindir}/sstableloader +%attr(755, root, root) %{_bindir}/sstablescrub +%attr(755, root, root) %{_bindir}/sstableupgrade +%attr(755, root, root) %{_bindir}/sstableutil +%attr(755, root, root) %{_bindir}/sstableverify +%attr(755, root, root) %{_bindir}/sstabledump +%attr(755, root, root) %{_bindir}/sstableexpiredblockers +%attr(755, root, root) %{_bindir}/sstablelevelreset +%attr(755, root, root) %{_bindir}/sstablemetadata +%attr(755, root, root) %{_bindir}/sstableofflinerelevel +%attr(755, root, root) %{_bindir}/sstablerepairedset +%attr(755, root, root) %{_bindir}/sstablesplit + +%files python2-cqlshlib +%doc conf/cqlshrc.sample +%license LICENSE.txt NOTICE.txt +%attr(755, root, root) %{_bindir}/cqlsh +%{python2_sitearch}/cqlshlib +%{python2_sitearch}/%{pkg_name}_pylib-0.0.0-py%{python2_version}.egg-info + +%files stress -f .mfiles-stress +%license LICENSE.txt NOTICE.txt +%attr(755, root, root) %{_bindir}/%{pkg_name}-stress +%attr(755, root, root) %{_bindir}/%{pkg_name}-stressd +%attr(755, root, root) %{_bindir}/%{pkg_name}.in.sh + +%files javadoc -f .mfiles-javadoc +%license LICENSE.txt NOTICE.txt + +%changelog +* Thu Dec 01 2016 Tomas Repik - 3.9-1 +- initial package diff --git a/cassandrad.service b/cassandrad.service new file mode 100644 index 0000000..4d154bd --- /dev/null +++ b/cassandrad.service @@ -0,0 +1,13 @@ +[Unit] +Description=Cassandra database server for high-scale application +Documentation=http://docs.datastax.com +After=syslog.target network.target + +[Service] +Type=forking +User=cassandra +EnvironmentFile=/etc/sysconfig/cassandra +ExecStart=/usr/bin/cassandra $OPTIONS + +[Install] +WantedBy=multi-user.target diff --git a/sources b/sources index e69de29..e4a226b 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +1c222297a389b8e198d2b26016741bb9 cassandra-3.9.tar.gz