cassandra 0.5 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +2 -0
- data/Manifest +1 -0
- data/README +6 -4
- data/Rakefile +88 -26
- data/bin/cassandra_helper +16 -0
- data/cassandra.gemspec +8 -6
- data/conf/cassandra.in.sh +6 -10
- metadata +7 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
|
2
|
+
v0.5.1. Add bin/cassandra_helper script, to build and start the server for you. Improve build error reporting.
|
3
|
+
|
2
4
|
v0.5. More API changes. Working temporal comparators.
|
3
5
|
|
4
6
|
v0.4. Use new comparator API. Namespace Thrift bindings; rename gem and class to Cassandra. Make tokens and limits actually work. Retry UnavailableExceptions.
|
data/Manifest
CHANGED
data/README
CHANGED
@@ -25,12 +25,14 @@ You need Ruby 1.8 or 1.9. If you have those, just run:
|
|
25
25
|
|
26
26
|
sudo gem install cassandra
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
Cassandra is a rapidly moving target. In order to get a working server, change to the checkout or gem directory, and run:
|
28
|
+
Cassandra is a rapidly moving target. In order to get a working server, use the <tt>bin/cassandra_helper</tt> script (requires <tt>git</tt>):
|
31
29
|
|
32
|
-
|
30
|
+
cassandra_helper cassandra
|
31
|
+
|
32
|
+
A server will be installed in <tt>$HOME/cassandra/r$REVISION</tt>, and started in debug mode.
|
33
33
|
|
34
|
+
== Usage
|
35
|
+
|
34
36
|
Now, start IRb and require the library:
|
35
37
|
|
36
38
|
require 'cassandra'
|
data/Rakefile
CHANGED
@@ -1,48 +1,91 @@
|
|
1
|
-
require 'echoe'
|
2
1
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
p.summary = "A Ruby client for the Cassandra distributed database."
|
7
|
-
p.rubygems_version = ">= 0.8"
|
8
|
-
p.dependencies = ['json', 'thrift']
|
9
|
-
p.ignore_pattern = /^(data|vendor\/cassandra|cassandra|vendor\/thrift)/
|
10
|
-
p.rdoc_pattern = /^(lib|bin|tasks|ext)|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
11
|
-
p.url = "http://blog.evanweaver.com/files/doc/fauna/cassandra/"
|
12
|
-
p.docs_host = "blog.evanweaver.com:~/www/bax/public/files/doc/"
|
13
|
-
end
|
2
|
+
unless ENV['FROM_BIN_CASSANDRA_HELPER']
|
3
|
+
require 'rubygems'
|
4
|
+
require 'echoe'
|
14
5
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
Echoe.new("cassandra") do |p|
|
7
|
+
p.author = "Evan Weaver"
|
8
|
+
p.project = "fauna"
|
9
|
+
p.summary = "A Ruby client for the Cassandra distributed database."
|
10
|
+
p.rubygems_version = ">= 0.8"
|
11
|
+
p.dependencies = ['thrift', 'rake']
|
12
|
+
p.ignore_pattern = /^(data|vendor\/cassandra|cassandra|vendor\/thrift)/
|
13
|
+
p.rdoc_pattern = /^(lib|bin|tasks|ext)|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
14
|
+
p.url = "http://blog.evanweaver.com/files/doc/fauna/cassandra/"
|
15
|
+
p.docs_host = "blog.evanweaver.com:~/www/bax/public/files/doc/"
|
16
|
+
end
|
19
17
|
end
|
20
18
|
|
21
19
|
REVISION = "15354b4906fd654d58fe50fd01ebf95b69434ba9"
|
20
|
+
|
22
21
|
PATCHES = [
|
23
22
|
"http://issues.apache.org/jira/secure/attachment/12416014/0001-CASSANDRA-356-rename-clean-up-collectColumns-methods.txt",
|
24
23
|
"http://issues.apache.org/jira/secure/attachment/12416073/0002-v3.patch",
|
25
24
|
"http://issues.apache.org/jira/secure/attachment/12416074/357-v2.patch",
|
26
25
|
"http://issues.apache.org/jira/secure/attachment/12416086/357-3.patch"]
|
27
|
-
|
26
|
+
|
27
|
+
CASSANDRA_HOME = "#{ENV['HOME']}/cassandra/r#{REVISION[0, 8]}"
|
28
|
+
|
29
|
+
CASSANDRA_TEST = "#{ENV['HOME']}/cassandra/test"
|
30
|
+
|
31
|
+
desc "Start Cassandra"
|
32
|
+
task :cassandra => [:java, :checkout, :patch, :build] do
|
33
|
+
# Construct environment
|
34
|
+
env = ""
|
35
|
+
if !ENV["CASSANDRA_INCLUDE"]
|
36
|
+
env << "CASSANDRA_INCLUDE=#{Dir.pwd}/conf/cassandra.in.sh "
|
37
|
+
env << "CASSANDRA_HOME=#{CASSANDRA_HOME} "
|
38
|
+
env << "CASSANDRA_CONF=#{File.expand_path(File.dirname(__FILE__))}/conf"
|
39
|
+
end
|
40
|
+
# Create data dir
|
41
|
+
Dir.mkdir(CASSANDRA_TEST) if !File.exist?(CASSANDRA_TEST)
|
42
|
+
# Start server
|
43
|
+
Dir.chdir(CASSANDRA_TEST) do
|
44
|
+
exec("env #{env} #{CASSANDRA_HOME}/bin/cassandra -f")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Check Java version"
|
49
|
+
task :java do
|
50
|
+
unless `java -version 2>&1`.split("\n").first =~ /java version "1.6/ #"
|
51
|
+
puts "You need to configure your environment for Java 1.6."
|
52
|
+
puts "If you're on OS X, just export the following environment variables:"
|
53
|
+
puts ' JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home"'
|
54
|
+
puts ' PATH="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin:$PATH"'
|
55
|
+
exit(1)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "Checkout Cassandra from git"
|
28
60
|
task :checkout do
|
29
|
-
#
|
30
|
-
unless
|
31
|
-
|
61
|
+
# Check git version
|
62
|
+
unless `git --version 2>&1` =~ /git version 1.6/
|
63
|
+
puts "You need to install git 1.6."
|
64
|
+
exit(1)
|
65
|
+
end
|
66
|
+
# Like a git submodule, but all in one more obvious place
|
67
|
+
unless File.exist?(CASSANDRA_HOME)
|
68
|
+
cmd = "git clone git://git.apache.org/cassandra.git #{CASSANDRA_HOME}"
|
69
|
+
if !system(cmd)
|
70
|
+
put "Checkout failed. Try:\n #{cmd}"
|
71
|
+
exit(1)
|
72
|
+
end
|
32
73
|
ENV["RESET"] = "true"
|
33
74
|
end
|
34
75
|
end
|
35
76
|
|
77
|
+
desc "Apply patches to Cassandra checkout; use RESET=1 to force"
|
36
78
|
task :patch do
|
37
79
|
if ENV["RESET"]
|
38
|
-
|
80
|
+
system("rm -rf #{CASSANDRA_TEST}/data")
|
81
|
+
Dir.chdir(CASSANDRA_HOME) do
|
39
82
|
system("ant clean && git fetch && git reset #{REVISION} --hard")
|
40
83
|
# Delete untracked files, so that the patchs can apply again
|
41
84
|
Array(`git status`[/Untracked files:(.*)$/m, 1].to_s.split("\n")[3..-1]).each do |file|
|
42
85
|
File.unlink(file.sub(/^.\s+/, "")) rescue nil
|
43
86
|
end
|
44
87
|
# Patch, with a handy commit for each one
|
45
|
-
PATCHES.each do |url|
|
88
|
+
PATCHES.each do |url|
|
46
89
|
raise "#{url} failed" unless system("curl #{url} | patch -p1")
|
47
90
|
system("git commit -a -m 'Applied patch: #{url.inspect}'")
|
48
91
|
end
|
@@ -50,19 +93,38 @@ task :patch do
|
|
50
93
|
end
|
51
94
|
end
|
52
95
|
|
96
|
+
desc "Rebuild Cassandra"
|
53
97
|
task :build do
|
54
|
-
|
98
|
+
unless File.exist?("#{CASSANDRA_HOME}/build")
|
99
|
+
cmd = "cd #{CASSANDRA_HOME} && ant"
|
100
|
+
if !system(cmd)
|
101
|
+
puts "Could not build Casssandra. Try:\n #{cmd}"
|
102
|
+
exit(1)
|
103
|
+
end
|
104
|
+
end
|
55
105
|
end
|
56
106
|
|
107
|
+
desc "Clean Cassandra build"
|
57
108
|
task :clean do
|
58
|
-
|
109
|
+
if File.exist?(CASSANDRA_HOME)
|
110
|
+
Dir.chdir(CASSANDRA_HOME) do
|
111
|
+
system("ant clean")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
namespace :data do
|
117
|
+
desc "Reset test data"
|
118
|
+
task :reset do
|
119
|
+
system("rm -rf #{CASSANDRA_TEST}/data")
|
120
|
+
end
|
59
121
|
end
|
60
122
|
|
61
|
-
desc "Regenerate thrift bindings for Cassandra"
|
123
|
+
# desc "Regenerate thrift bindings for Cassandra" # Dev only
|
62
124
|
task :thrift do
|
63
125
|
system(
|
64
126
|
"cd vendor &&
|
65
127
|
rm -rf gen-rb &&
|
66
|
-
thrift -gen rb
|
128
|
+
thrift -gen rb #{CASSANDRA_HOME}/interface/cassandra.thrift")
|
67
129
|
end
|
68
130
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rake'
|
5
|
+
require 'cassandra'
|
6
|
+
|
7
|
+
gem_path = $LOAD_PATH.last.sub(/lib$/, "")
|
8
|
+
|
9
|
+
Dir.chdir(gem_path) do
|
10
|
+
if !ENV["CASSANDRA_INCLUDE"]
|
11
|
+
puts "Set the CASSANDRA_INCLUDE environment variable to use a non-default cassandra.in.sh and friends."
|
12
|
+
end
|
13
|
+
|
14
|
+
ARGV << "-T" if ARGV.empty?
|
15
|
+
exec("env FROM_BIN_CASSANDRA_HELPER=1 rake #{ARGV.join(' ')}")
|
16
|
+
end
|
data/cassandra.gemspec
CHANGED
@@ -2,16 +2,18 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{cassandra}
|
5
|
-
s.version = "0.5"
|
5
|
+
s.version = "0.5.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0.8") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Weaver"]
|
9
9
|
s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
10
10
|
s.date = %q{2009-08-18}
|
11
|
+
s.default_executable = %q{cassandra_helper}
|
11
12
|
s.description = %q{A Ruby client for the Cassandra distributed database.}
|
12
13
|
s.email = %q{}
|
13
|
-
s.
|
14
|
-
s.
|
14
|
+
s.executables = ["cassandra_helper"]
|
15
|
+
s.extra_rdoc_files = ["bin/cassandra_helper", "CHANGELOG", "lib/cassandra/array.rb", "lib/cassandra/cassandra.rb", "lib/cassandra/columns.rb", "lib/cassandra/comparable.rb", "lib/cassandra/constants.rb", "lib/cassandra/long.rb", "lib/cassandra/ordered_hash.rb", "lib/cassandra/protocol.rb", "lib/cassandra/safe_client.rb", "lib/cassandra/time.rb", "lib/cassandra/uuid.rb", "lib/cassandra.rb", "LICENSE", "README"]
|
16
|
+
s.files = ["bin/cassandra_helper", "CHANGELOG", "conf/cassandra.in.sh", "conf/log4j.properties", "conf/storage-conf.xml", "lib/cassandra/array.rb", "lib/cassandra/cassandra.rb", "lib/cassandra/columns.rb", "lib/cassandra/comparable.rb", "lib/cassandra/constants.rb", "lib/cassandra/long.rb", "lib/cassandra/ordered_hash.rb", "lib/cassandra/protocol.rb", "lib/cassandra/safe_client.rb", "lib/cassandra/time.rb", "lib/cassandra/uuid.rb", "lib/cassandra.rb", "LICENSE", "Manifest", "Rakefile", "README", "test/cassandra_test.rb", "test/comparable_types_test.rb", "test/test_helper.rb", "vendor/gen-rb/cassandra.rb", "vendor/gen-rb/cassandra_constants.rb", "vendor/gen-rb/cassandra_types.rb", "cassandra.gemspec"]
|
15
17
|
s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/cassandra/}
|
16
18
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Cassandra", "--main", "README"]
|
17
19
|
s.require_paths = ["lib"]
|
@@ -26,14 +28,14 @@ Gem::Specification.new do |s|
|
|
26
28
|
s.specification_version = 3
|
27
29
|
|
28
30
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
29
|
-
s.add_runtime_dependency(%q<json>, [">= 0"])
|
30
31
|
s.add_runtime_dependency(%q<thrift>, [">= 0"])
|
32
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
31
33
|
else
|
32
|
-
s.add_dependency(%q<json>, [">= 0"])
|
33
34
|
s.add_dependency(%q<thrift>, [">= 0"])
|
35
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
34
36
|
end
|
35
37
|
else
|
36
|
-
s.add_dependency(%q<json>, [">= 0"])
|
37
38
|
s.add_dependency(%q<thrift>, [">= 0"])
|
39
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
38
40
|
end
|
39
41
|
end
|
data/conf/cassandra.in.sh
CHANGED
@@ -14,26 +14,22 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
-
|
18
|
-
cassandra_home=`pwd`/cassandra
|
19
|
-
|
20
17
|
# The directory where Cassandra's configs live (required)
|
21
|
-
CASSANDRA_CONF
|
18
|
+
CASSANDRA_CONF=$CASSANDRA_CONF
|
22
19
|
|
23
20
|
# This can be the path to a jar file, or a directory containing the
|
24
|
-
# compiled classes.
|
25
|
-
|
26
|
-
cassandra_bin=$cassandra_home/build/classes
|
27
|
-
#cassandra_bin=$cassandra_home/build/cassandra.jar
|
21
|
+
# compiled classes.
|
22
|
+
cassandra_bin=$CASSANDRA_HOME/build/classes
|
28
23
|
|
29
24
|
# The java classpath (required)
|
30
25
|
CLASSPATH=$CASSANDRA_CONF:$cassandra_bin
|
31
26
|
|
32
|
-
for jar in $
|
27
|
+
for jar in $CASSANDRA_HOME/lib/*.jar; do
|
33
28
|
CLASSPATH=$CLASSPATH:$jar
|
34
29
|
done
|
35
30
|
|
36
|
-
echo $
|
31
|
+
echo "CASSANDRA_HOME: $CASSANDRA_HOME"
|
32
|
+
echo "CASSANDRA_CONF: $CASSANDRA_CONF"
|
37
33
|
|
38
34
|
# Arguments to pass to the JVM
|
39
35
|
JVM_OPTS=" \
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Weaver
|
@@ -34,7 +34,7 @@ date: 2009-08-18 00:00:00 -04:00
|
|
34
34
|
default_executable:
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
37
|
+
name: thrift
|
38
38
|
type: :runtime
|
39
39
|
version_requirement:
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version: "0"
|
45
45
|
version:
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: rake
|
48
48
|
type: :runtime
|
49
49
|
version_requirement:
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -55,11 +55,12 @@ dependencies:
|
|
55
55
|
version:
|
56
56
|
description: A Ruby client for the Cassandra distributed database.
|
57
57
|
email: ""
|
58
|
-
executables:
|
59
|
-
|
58
|
+
executables:
|
59
|
+
- cassandra_helper
|
60
60
|
extensions: []
|
61
61
|
|
62
62
|
extra_rdoc_files:
|
63
|
+
- bin/cassandra_helper
|
63
64
|
- CHANGELOG
|
64
65
|
- lib/cassandra/array.rb
|
65
66
|
- lib/cassandra/cassandra.rb
|
@@ -76,6 +77,7 @@ extra_rdoc_files:
|
|
76
77
|
- LICENSE
|
77
78
|
- README
|
78
79
|
files:
|
80
|
+
- bin/cassandra_helper
|
79
81
|
- CHANGELOG
|
80
82
|
- conf/cassandra.in.sh
|
81
83
|
- conf/log4j.properties
|
metadata.gz.sig
CHANGED
Binary file
|