cassie 1.1.7 → 1.2.0.pre1
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bb6cb16602c5cb41e80bdb4b4ad94be40c1da78
|
4
|
+
data.tar.gz: 4917f132273bd32583d55c50c3d83a8a14cac85e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f4f335f7fe3ecf6011ed9af858cba5cbe0d621523f59831245c1fd14730a590fdbb0b0b6538037194c25d4471a8e08d41b401ce69c085be62a0ebba8cf31f40
|
7
|
+
data.tar.gz: adf8a2beb2069df8812ce33de0996265dbcec108bba7cf848fe892fca20f9587e562828e0d9129f699f76d0688569ec00d39f2e8c2d680681e025100411012c8
|
@@ -11,6 +11,7 @@ module Cassie::ConnectionHandler
|
|
11
11
|
|
12
12
|
included do
|
13
13
|
include Instrumentation
|
14
|
+
CREATE_CLUSTER_LOCK = Mutex.new
|
14
15
|
end
|
15
16
|
|
16
17
|
# The cluster connection and metadata. This cluster connection is
|
@@ -50,7 +51,13 @@ module Cassie::ConnectionHandler
|
|
50
51
|
protected
|
51
52
|
|
52
53
|
def initialize_cluster
|
53
|
-
|
54
|
+
CREATE_CLUSTER_LOCK.synchronize do
|
55
|
+
# check to see if another thread
|
56
|
+
# initialized the cluster while
|
57
|
+
# we waited on lock to be available
|
58
|
+
# e.g. this ||= is critical
|
59
|
+
@cluster ||= Cassandra.cluster(configuration.try(:symbolize_keys))
|
60
|
+
end
|
54
61
|
end
|
55
62
|
end
|
56
63
|
end
|
@@ -5,9 +5,10 @@ module Cassie::ConnectionHandler
|
|
5
5
|
|
6
6
|
included do
|
7
7
|
include Instrumentation
|
8
|
+
CREATE_SESSION_LOCK = Mutex.new
|
8
9
|
end
|
9
10
|
|
10
|
-
# Sessions cache
|
11
|
+
# Sessions cache containing sessions that
|
11
12
|
# have been opened to the {#cluster}
|
12
13
|
# @return [Hash{String => Cassandra::Session}] The underlying driver sessions, keyed by keyspaced name
|
13
14
|
# @!parse attr_reader :sessions
|
@@ -18,16 +19,29 @@ module Cassie::ConnectionHandler
|
|
18
19
|
# Fetches a session from the sessions cache.
|
19
20
|
# If no session has been opened to the requested keyspace
|
20
21
|
# a new session is created to the {#cluster} and cached.
|
22
|
+
# @note this method is thread-safe, only one session will be opened
|
23
|
+
# per keyspace regardless of how many threads are accessing.
|
24
|
+
# @note there is no connection pooling happening here, +cassandra_driver+
|
25
|
+
# manages per node connection pools within the +Session+ object.
|
21
26
|
# @param [String] keyspace The keyspace used for session scope. If +nil+, session will not be scoped (scoped to global space).
|
22
27
|
# @return [Cassandra::Session]
|
23
28
|
def session(keyspace=self.keyspace)
|
24
|
-
sessions[keyspace] || initialize_session(keyspace)
|
29
|
+
return sessions[keyspace] || initialize_session(keyspace)
|
25
30
|
end
|
26
31
|
|
27
32
|
protected
|
28
33
|
|
34
|
+
# thread safe initialization
|
35
|
+
# only one session should be initialized
|
36
|
+
# per keyspace
|
29
37
|
def initialize_session(keyspace)
|
30
|
-
|
38
|
+
CREATE_SESSION_LOCK.synchronize do
|
39
|
+
# check to see if another thread
|
40
|
+
# initialized the session while
|
41
|
+
# we waited on lock to be available
|
42
|
+
# e.g. this ||= is critical
|
43
|
+
@sessions[keyspace] ||= cluster.connect(keyspace)
|
44
|
+
end
|
31
45
|
end
|
32
46
|
end
|
33
47
|
end
|
@@ -98,8 +98,8 @@ module Cassie
|
|
98
98
|
t1=Time.now
|
99
99
|
|
100
100
|
IO.popen(command) do |io|
|
101
|
-
@
|
102
|
-
@
|
101
|
+
@output= io.read.sub(/\n+\z/, "")
|
102
|
+
@status= Process.waitpid2(io.pid)[1]
|
103
103
|
end
|
104
104
|
|
105
105
|
@duration=Time.now-t1
|
data/lib/cassie/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Prothro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cassandra-driver
|
@@ -269,9 +269,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
269
269
|
version: '0'
|
270
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
271
|
requirements:
|
272
|
-
- - "
|
272
|
+
- - ">"
|
273
273
|
- !ruby/object:Gem::Version
|
274
|
-
version:
|
274
|
+
version: 1.3.1
|
275
275
|
requirements: []
|
276
276
|
rubyforge_project:
|
277
277
|
rubygems_version: 2.5.2
|