hbase-jruby 0.6.1-java → 0.6.2-java
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/hbase-jruby/hbase.rb +0 -29
- data/lib/hbase-jruby/table.rb +0 -1
- data/lib/hbase-jruby/version.rb +1 -1
- data/test/test_hbase.rb +0 -8
- data/test/test_table.rb +0 -38
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45fb6da67d84e5b2640f383441c9c5a97368acff
|
4
|
+
data.tar.gz: 4ca5274110f4a56277dd5671e6e8f35524214e16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 068015d5dcdf8f374251f31571b7549b0fb77ad82c915e6218d564705e547f365647466d45c21027bffd895e48128e20743b6f759d7497fdf77034b3cb858013
|
7
|
+
data.tar.gz: 6bbdbbb27743a7da0e079de10566b9adbad77e9866beeb560f697f97987233fff21c3ad428ad0e6fb8dbc2e32b72f245c0431f9f5b26afdae69b3ec10fb4c613
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.6.2
|
5
|
+
-----
|
6
|
+
|
7
|
+
- Removed automatic cleanup of thread-local HTable instances
|
8
|
+
- Fixes issue #35
|
9
|
+
- Close of individual HTable instance turned out to be unnecessary
|
10
|
+
- `flushCommits` not required as `hbase-jruby` runs in auto-flush mode
|
11
|
+
- No need to close shared connection or its thread pool
|
12
|
+
|
4
13
|
0.6.1
|
5
14
|
-----
|
6
15
|
|
data/lib/hbase-jruby/hbase.rb
CHANGED
@@ -74,7 +74,6 @@ class HBase
|
|
74
74
|
else
|
75
75
|
HTablePool.new @config, java.lang.Integer::MAX_VALUE
|
76
76
|
end
|
77
|
-
@threads = Set.new
|
78
77
|
@mutex = Mutex.new
|
79
78
|
@schema = Schema.new
|
80
79
|
@closed = false
|
@@ -107,7 +106,6 @@ class HBase
|
|
107
106
|
unless @closed
|
108
107
|
@closed = true
|
109
108
|
@htable_pool.close if use_table_pool?
|
110
|
-
clear_thread_locals
|
111
109
|
@connection.close
|
112
110
|
|
113
111
|
# To be deprecated
|
@@ -190,7 +188,6 @@ class HBase
|
|
190
188
|
raise RuntimeError, 'Not using table pool' unless use_table_pool?
|
191
189
|
|
192
190
|
@mutex.synchronize do
|
193
|
-
clear_thread_locals
|
194
191
|
@htable_pool.close
|
195
192
|
@htable_pool = HTablePool.new @config, java.lang.Integer::MAX_VALUE
|
196
193
|
end
|
@@ -198,32 +195,6 @@ class HBase
|
|
198
195
|
end
|
199
196
|
|
200
197
|
private
|
201
|
-
def register_thread t
|
202
|
-
# (NOTE) The cleanup routine can be inefficient when the number of
|
203
|
-
# concurrent threads becomes large. However, since it is not likely that
|
204
|
-
# there will be more than a few hundred threads in a typical JRuby process
|
205
|
-
# and the code is executed only once per thread, let's simply assume that
|
206
|
-
# it's okay.
|
207
|
-
@mutex.synchronize do
|
208
|
-
check_closed
|
209
|
-
@threads << t
|
210
|
-
alives, deads = @threads.partition { |e| e.alive? }
|
211
|
-
@threads = Set.new(alives)
|
212
|
-
deads.each do |dead|
|
213
|
-
(dead[:hbase_jruby].delete(self) || {}).each do |_, htable|
|
214
|
-
htable.close rescue nil
|
215
|
-
end
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
def clear_thread_locals
|
221
|
-
# Cleanup thread-local references
|
222
|
-
@threads.each do |thr|
|
223
|
-
thr[:hbase_jruby].delete self
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
198
|
def get_htable name
|
228
199
|
(@htable_pool || @connection).get_table name
|
229
200
|
end
|
data/lib/hbase-jruby/table.rb
CHANGED
@@ -23,7 +23,6 @@ class Table
|
|
23
23
|
# [:hbase_jruby][HBase connection][Table name]
|
24
24
|
local_vars = Thread.current[:hbase_jruby] ||= {}
|
25
25
|
unless local_htables = local_vars[@hbase]
|
26
|
-
@hbase.send :register_thread, Thread.current
|
27
26
|
local_htables = local_vars[@hbase] = {}
|
28
27
|
end
|
29
28
|
local_htables[@name] ||= @hbase.send :get_htable, @name
|
data/lib/hbase-jruby/version.rb
CHANGED
data/test/test_hbase.rb
CHANGED
@@ -34,8 +34,6 @@ class TestHBase < TestHBaseJRubyBase
|
|
34
34
|
assert @hbase.closed?
|
35
35
|
assert table.closed?
|
36
36
|
|
37
|
-
assert !Thread.current[:hbase_jruby].has_key?(@hbase)
|
38
|
-
|
39
37
|
assert_raise(RuntimeError) { @hbase.list }
|
40
38
|
assert_raise(RuntimeError) { table.exists? }
|
41
39
|
assert_raise(RuntimeError) { table.drop! }
|
@@ -110,12 +108,6 @@ class TestHBase < TestHBaseJRubyBase
|
|
110
108
|
# Now close the connection
|
111
109
|
hbase2.close
|
112
110
|
|
113
|
-
# Threads-local htable cache deleted
|
114
|
-
assert_nil Thread.current[:hbase_jruby][hbase2]
|
115
|
-
threads.each do |t|
|
116
|
-
assert_nil t[:hbase_jruby][hbase2]
|
117
|
-
end
|
118
|
-
|
119
111
|
# Connection is already closed
|
120
112
|
assert_raise(RuntimeError) { hbase2[TABLE] }
|
121
113
|
assert_raise(RuntimeError) { table.htable }
|
data/test/test_table.rb
CHANGED
@@ -20,20 +20,6 @@ class TestTable < TestHBaseJRubyBase
|
|
20
20
|
end
|
21
21
|
assert_equal 1, htables.uniq.length
|
22
22
|
|
23
|
-
# Multi-threaded
|
24
|
-
htables = []
|
25
|
-
table = @hbase.table(TABLE)
|
26
|
-
nthr = num_managed_threads
|
27
|
-
4.times do
|
28
|
-
Thread.new {
|
29
|
-
htables << table.htable
|
30
|
-
assert_equal nthr + 1, num_managed_threads
|
31
|
-
}.join
|
32
|
-
end
|
33
|
-
assert_equal 4, htables.uniq.length
|
34
|
-
# XXX Implementation detail
|
35
|
-
assert_equal nthr + 1, num_managed_threads
|
36
|
-
|
37
23
|
assert_equal @hbase.table(TABLE).htable, @hbase[TABLE].htable
|
38
24
|
end
|
39
25
|
|
@@ -49,30 +35,6 @@ class TestTable < TestHBaseJRubyBase
|
|
49
35
|
assert_equal 2, htables.length
|
50
36
|
end
|
51
37
|
|
52
|
-
def num_managed_threads
|
53
|
-
@hbase.instance_variable_get(:@threads).length
|
54
|
-
end
|
55
|
-
|
56
|
-
# FIXME
|
57
|
-
# - Implementation detail
|
58
|
-
# - Naive assertion
|
59
|
-
# - Race condition
|
60
|
-
def test_autoclose_htables
|
61
|
-
nthr = num_managed_threads
|
62
|
-
threads = 50.times.map { |i|
|
63
|
-
Thread.new {
|
64
|
-
@hbase[TABLE].htable
|
65
|
-
sleep 0.5
|
66
|
-
}
|
67
|
-
}
|
68
|
-
sleep 1
|
69
|
-
assert num_managed_threads > nthr
|
70
|
-
|
71
|
-
nthr = num_managed_threads
|
72
|
-
Thread.new { @hbase[TABLE].htable }.join
|
73
|
-
assert num_managed_threads < nthr
|
74
|
-
end
|
75
|
-
|
76
38
|
def test_put_then_get
|
77
39
|
row1 = next_rowkey.to_s
|
78
40
|
row2 = next_rowkey.to_s
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hbase-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Junegunn Choi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|