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

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.
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