cassie 1.0.0.beta.17 → 1.0.0.beta.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/bin/cassie +40 -15
  3. data/lib/cassie/configuration/templates/cassandra.yml +1 -2
  4. data/lib/cassie/connection.rb +3 -3
  5. data/lib/cassie/connection_handler/cluster.rb +1 -1
  6. data/lib/cassie/connection_handler/sessions.rb +1 -1
  7. data/lib/cassie/connection_handler.rb +4 -2
  8. data/lib/cassie/definition.rb +8 -0
  9. data/lib/cassie/modification.rb +9 -0
  10. data/lib/cassie/query.rb +3 -15
  11. data/lib/cassie/statements/README.md +710 -0
  12. data/lib/cassie/statements/core.rb +23 -0
  13. data/lib/cassie/{queries/statement/batches.rb → statements/execution/batched_fetching.rb} +7 -11
  14. data/lib/cassie/{queries/statement → statements/execution}/callbacks.rb +1 -1
  15. data/lib/cassie/{queries/statement → statements/execution}/consistency.rb +1 -1
  16. data/lib/cassie/statements/execution/deserialization.rb +13 -0
  17. data/lib/cassie/{queries/statement → statements/execution}/fetching.rb +10 -21
  18. data/lib/cassie/{queries/instrumentation/execution.rb → statements/execution/instrumentation.rb} +6 -2
  19. data/lib/cassie/statements/execution/partition_linking/cursoring_policy.rb +13 -0
  20. data/lib/cassie/statements/execution/partition_linking/policy_methods.rb +128 -0
  21. data/lib/cassie/statements/execution/partition_linking/simple_policy.rb +19 -0
  22. data/lib/cassie/statements/execution/partition_linking.rb +49 -0
  23. data/lib/cassie/statements/execution/peeking.rb +28 -0
  24. data/lib/cassie/statements/execution/results/core.rb +11 -0
  25. data/lib/cassie/statements/execution/results/cursored_result.rb +26 -0
  26. data/lib/cassie/statements/execution/results/instrumentation.rb +18 -0
  27. data/lib/cassie/statements/execution/results/modification.rb +12 -0
  28. data/lib/cassie/statements/execution/results/modification_result.rb +8 -0
  29. data/lib/cassie/statements/execution/results/peeking.rb +42 -0
  30. data/lib/cassie/statements/execution/results/peeking_result.rb +10 -0
  31. data/lib/cassie/statements/execution/results/query_result.rb +9 -0
  32. data/lib/cassie/statements/execution/results/querying.rb +66 -0
  33. data/lib/cassie/statements/execution/results/result.rb +23 -0
  34. data/lib/cassie/statements/execution/results.rb +12 -0
  35. data/lib/cassie/statements/execution.rb +69 -0
  36. data/lib/cassie/statements/instrumenting.rb +6 -0
  37. data/lib/cassie/{queries/logging/building_resources_event.rb → statements/logging/deserialize_event.rb} +4 -4
  38. data/lib/cassie/statements/logging/deserialize_subscriber.rb +19 -0
  39. data/lib/cassie/{queries/logging/cql_execution_event.rb → statements/logging/execute_event.rb} +8 -4
  40. data/lib/cassie/statements/logging/execute_subscriber.rb +19 -0
  41. data/lib/cassie/statements/logging.rb +12 -0
  42. data/lib/cassie/statements/modification.rb +14 -0
  43. data/lib/cassie/statements/query.rb +12 -0
  44. data/lib/cassie/statements/statement/assignment.rb +51 -0
  45. data/lib/cassie/statements/statement/assignments.rb +87 -0
  46. data/lib/cassie/{queries → statements}/statement/conditions.rb +1 -3
  47. data/lib/cassie/{queries → statements}/statement/deleting.rb +15 -12
  48. data/lib/cassie/{queries → statements}/statement/inserting.rb +13 -10
  49. data/lib/cassie/statements/statement/limiting.rb +89 -0
  50. data/lib/cassie/{queries → statements}/statement/mapping.rb +21 -41
  51. data/lib/cassie/{queries → statements}/statement/ordering.rb +1 -1
  52. data/lib/cassie/statements/statement/pagination/cursors.rb +112 -0
  53. data/lib/cassie/statements/statement/pagination.rb +19 -0
  54. data/lib/cassie/{queries → statements}/statement/preparation/cache.rb +1 -1
  55. data/lib/cassie/{queries → statements}/statement/preparation.rb +4 -5
  56. data/lib/cassie/statements/statement/relation.rb +68 -0
  57. data/lib/cassie/statements/statement/relations.rb +93 -0
  58. data/lib/cassie/statements/statement/selection.rb +86 -0
  59. data/lib/cassie/{queries → statements}/statement/updating.rb +9 -10
  60. data/lib/cassie/{queries → statements}/statement.rb +10 -20
  61. data/lib/cassie/statements.rb +9 -0
  62. data/lib/cassie/testing/fake/definition.rb +11 -0
  63. data/lib/cassie/testing/fake/modification.rb +11 -0
  64. data/lib/cassie/testing/fake/result.rb +15 -3
  65. data/lib/cassie/testing.rb +2 -0
  66. data/lib/cassie.rb +2 -0
  67. metadata +57 -34
  68. data/lib/cassie/queries/README.md +0 -458
  69. data/lib/cassie/queries/instrumentation/loading.rb +0 -15
  70. data/lib/cassie/queries/instrumentation.rb +0 -18
  71. data/lib/cassie/queries/logging/subscription.rb +0 -24
  72. data/lib/cassie/queries/logging.rb +0 -21
  73. data/lib/cassie/queries/statement/assignment.rb +0 -36
  74. data/lib/cassie/queries/statement/assignments.rb +0 -67
  75. data/lib/cassie/queries/statement/execution.rb +0 -45
  76. data/lib/cassie/queries/statement/limiting.rb +0 -36
  77. data/lib/cassie/queries/statement/loading.rb +0 -24
  78. data/lib/cassie/queries/statement/pagination/cursors.rb +0 -168
  79. data/lib/cassie/queries/statement/pagination/page_size.rb +0 -7
  80. data/lib/cassie/queries/statement/pagination.rb +0 -37
  81. data/lib/cassie/queries/statement/relation.rb +0 -74
  82. data/lib/cassie/queries/statement/relations.rb +0 -66
  83. data/lib/cassie/queries/statement/selection.rb +0 -63
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71a12665eb2a25e213efec94104b89596b73de6e
4
- data.tar.gz: eee311ddf38fec5e650df34c1dcedb37b7cf484d
3
+ metadata.gz: 44bcb0d0fb09b42a535b4e22a6bbc2b54a92af9a
4
+ data.tar.gz: 20a5acd5604630f500c9b06ba15804be0e9acf54
5
5
  SHA512:
6
- metadata.gz: 3fccb0986e571367523a1e5406116378ca8b524cb90ffcc81f682b513f6bfeead507488224360335ccd498830df4bf63ab7d12748b0d0f642bb61f88c75a87af
7
- data.tar.gz: 95f0cb88169afc469aea4e0ec159d065141864837f0ef0752136329e8b445192ec6fa00321bc5280d3c6af6f14e222b934d6230e3538d9e71bfa85815c38dabc
6
+ metadata.gz: 18b4e938a675a39a79e63c1dcc6477941a26ac880c077cb4254533f358ceda7acbeff1df015b123652e87c4a1ca19c02d13c7e461dd9acc7e48c5b7b6f64bc17
7
+ data.tar.gz: 1dcd53f870f9ff37b0878922021648e9b8973b1126f7142dadd4a957fb22f5f9d4c74bd74035d7965958d60c42b623b27d0ce47fb3bf522b9aa50c76e8169795
data/bin/cassie CHANGED
@@ -15,30 +15,36 @@ def start
15
15
  end
16
16
  end
17
17
 
18
- def stop
18
+ def stop(kill_all=false)
19
19
  runner = Cassie::Support::CommandRunner.new("ps", ["-awx"])
20
20
  runner.run!
21
21
  # | grep cassandra | grep -v grep | awk '{print $1}'`
22
22
  cassandra_awx = runner.output.split("\n").grep(/cassandra/)
23
- pid = case cassandra_awx.length
24
- when 0
23
+ pids = cassandra_awx.map{ |p| p.split(' ').first.to_i }
24
+
25
+ if pids.empty?
25
26
  puts red("No Cassandra process was found. Is Cassandra running?")
26
27
  exit(1)
27
- when 1
28
- cassandra_awx.first.split(' ').first.to_i
29
- else
30
- puts red("Couldn't single out a Cassandra process:\n#{cassandra_awx}")
28
+ elsif pids.length > 1 && !kill_all
29
+ puts red("Couldn't single out a Cassandra process.")
30
+ puts red(" - Is cqlsh running?")
31
+ puts red(" - Kill all cassandra processes with --all")
32
+ cassandra_awx.each do |p|
33
+ puts " - #{p.split(' ').first.ljust(5,' ')} | #{p.split(' ').last}"
34
+ end
31
35
  exit(1)
32
36
  end
33
37
 
34
38
  puts("Stopping Cassandra...")
35
- Process.kill("TERM", pid)
36
- loop do
37
- sleep(0.1)
38
- begin
39
- Process.getpgid( pid )
40
- rescue Errno::ESRCH
41
- break
39
+ pids.each do|pid|
40
+ Process.kill("TERM", pid)
41
+ loop do
42
+ sleep(0.1)
43
+ begin
44
+ Process.getpgid( pid )
45
+ rescue Errno::ESRCH
46
+ break
47
+ end
42
48
  end
43
49
  end
44
50
 
@@ -85,6 +91,20 @@ def dump_structure
85
91
  puts "[✓] Cassandra schema written to #{opts[:destination_path]}"
86
92
  end
87
93
 
94
+ def tail_log
95
+ runner = Cassie::Support::CommandRunner.new("which", ["cassandra"])
96
+ runner.run!
97
+
98
+ bin_path = runner.output.gsub("\n", '')
99
+ log_path = bin_path.sub('bin/cassandra', 'logs/system.log')
100
+ puts white("Tailing Cassandra system log, Ctrl-C to stop...")
101
+ puts " #{log_path}:\n\n"
102
+
103
+ args = ['-f', log_path, '>', '/dev/tty']
104
+ runner = Cassie::Support::CommandRunner.new("tail", args)
105
+ runner.run!
106
+ end
107
+
88
108
  def load_structure
89
109
  opts = {}
90
110
  opts[:source_path] = Cassie.paths[:schema_structure]
@@ -97,6 +117,9 @@ def load_structure
97
117
  puts "[✓] Cassandra schema loaded from #{opts[:source_path]}"
98
118
  end
99
119
 
120
+ def white(message)
121
+ "\e[1;37m#{message}\e[0m"
122
+ end
100
123
  def red(message)
101
124
  "\e[1;31m#{message}\e[0m"
102
125
  end
@@ -108,9 +131,11 @@ case ARGV[0]
108
131
  when "start"
109
132
  start
110
133
  when "stop"
111
- stop
134
+ stop(ARGV.include?('--all'))
112
135
  when /kick|restart/
113
136
  kick
137
+ when /tail|log/
138
+ tail_log
114
139
  when "configuration:generate"
115
140
  generate_config
116
141
  when "structure:dump"
@@ -9,14 +9,13 @@ development:
9
9
  hosts:
10
10
  - 127.0.0.1
11
11
  port: 9042
12
- reconnection_policy: <%%= Cassandra::Reconnection::Policies::Exponential.new(0.5, 60, 2) %>
13
12
  keyspace: <%=app_name%>_development
14
13
 
15
14
  test:
16
15
  hosts:
17
16
  - 127.0.0.1
18
17
  port: 9042
19
- idle_timeout: nil
18
+ idle_timeout: null
20
19
  keyspace: <%=app_name%>_test
21
20
 
22
21
  production:
@@ -1,7 +1,7 @@
1
1
  module Cassie
2
- #TODO: proper rdoc
3
- # include to give #session and #keyspace
4
- # convenience methods
2
+ # Include Cassie::Connection to add #session and #keyspace
3
+ # convenience methods that conform with object cacheing and reuse
4
+ # behavior in line with Cassandra best practices
5
5
  module Connection
6
6
 
7
7
  extend ActiveSupport::Concern
@@ -21,7 +21,7 @@ module Cassie::ConnectionHandler
21
21
  _cluster = Cassandra.cluster(config)
22
22
  end
23
23
 
24
- logger.info "(#{(sec/1000.0).round(2)}ms) Connected to Cassandra cluster #{config[:hosts]}"
24
+ logger.info "(#{(sec*1000).round(2)}ms) Connected to Cassandra cluster #{config[:hosts]}"
25
25
  _cluster
26
26
  end
27
27
  end
@@ -20,7 +20,7 @@ module Cassie::ConnectionHandler
20
20
  _session = cluster.connect(_keyspace)
21
21
  end
22
22
 
23
- logger.info "(#{(sec/1000.0).round(2)}ms) Session opened to Cassandra[#{_keyspace}]"
23
+ logger.info "(#{(sec*1000).round(2)}ms) Session opened to Cassandra[#{_keyspace}]"
24
24
  @sessions[_keyspace] = _session
25
25
  end
26
26
  end
@@ -1,6 +1,8 @@
1
1
  module Cassie
2
- #TODO: proper rdoc
3
- # Assumes module responds to `configuration`, `keyspace`, and `cluster`
2
+ # Extend Cassie::ConnectionHandler to provide cluster and session
3
+ # cacheing in line with Cassandra best practices.
4
+ #
5
+ # The base class must implement `configuration` and `keyspace` methods.
4
6
  module ConnectionHandler
5
7
  require_relative 'connection_handler/cluster'
6
8
  require_relative 'connection_handler/sessions'
@@ -0,0 +1,8 @@
1
+ module Cassie
2
+ class Definition
3
+ require_relative 'statements'
4
+
5
+ include Cassie::Connection
6
+ include Statements::Core
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ module Cassie
2
+ class Modification
3
+ require_relative 'statements'
4
+
5
+ include Cassie::Connection
6
+ include Statements::Core
7
+ include Statements::Modification
8
+ end
9
+ end
data/lib/cassie/query.rb CHANGED
@@ -1,22 +1,10 @@
1
1
  module Cassie
2
- module Queries
3
- end
4
2
  class Query
5
- require_relative 'queries/statement'
6
- require_relative 'queries/instrumentation'
7
- require_relative 'queries/logging'
3
+ require_relative 'statements'
8
4
 
9
5
  include Cassie::Connection
10
- include Queries::Statement
11
- include Queries::Instrumentation
12
- include Queries::Logging
13
-
14
- def initialize(params={})
15
- params.each do |attr, value|
16
- self.public_send("#{attr}=", value)
17
- end
6
+ include Statements::Core
7
+ include Statements::Query
18
8
 
19
- super()
20
- end
21
9
  end
22
10
  end