leveldb-jruby 1.0.0-java → 1.1.0-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 762997e6da547e45865379880266e7332bb00937
4
- data.tar.gz: 02b22ff12bb76f80507c8ffcde25fbfd5cf0dc79
3
+ metadata.gz: 7c4ffc5660e3595dc15bfc647335e73fe20af1b6
4
+ data.tar.gz: 888023e7e7f7c9ba142b6e171dd22cb7e442766b
5
5
  SHA512:
6
- metadata.gz: 9cb03e1463d9e69f547d1463169efae0034fea7cfd4ee1f058dafa0ed919a882feae7000ff920e10135c484df9ef9f5a30180f197b8c3f17d5c240a1cf1aacc9
7
- data.tar.gz: cadeda50ae412916a5a0c78099a76ad83f5e1967b0e53ca9160cb037527d4c9642a9f481c41e471f7d4e14cc3fff4d7760396009785cb0bf8a32e5d163be40e1
6
+ metadata.gz: daac4053de13e403eaf5e5bec4776142c03cd83f5d9d48a67e1007b26003714ae029fcd877b3a10cb30adffd67aa90c82b467dee10b305977c4c60bff6deb75b
7
+ data.tar.gz: e849f6fe4e0ec85e4dd18697a56b02e72852a2996bdb27bf4aa6c7e6ceeefa338846078baccdd67d5c16b9f7b274ea8951b84d140a6bd3ce897176a6670d82d9
data/README.md CHANGED
@@ -34,6 +34,10 @@ snapshot = db.snapshot
34
34
  db.put('foo', 'baz')
35
35
  puts snapshot.get('foo') # => 'bar'
36
36
  puts db.get('foo') # => 'baz'
37
+
38
+ # compactions
39
+ db.compact_range(from: 'foo', to: 'foo08')
40
+ db.full_compaction
37
41
  ```
38
42
 
39
43
  ## Contributing
@@ -113,6 +113,42 @@ module LevelDb
113
113
  def snapshot
114
114
  Snapshot.new(@db)
115
115
  end
116
+
117
+ def compact_range(options={})
118
+ from = options[:from]
119
+ to = options[:to]
120
+ @db.compact_range(encode_key(from), encode_key(to))
121
+ end
122
+
123
+ def full_compaction(options={})
124
+ pre_compaction_files_per_level = nil
125
+ i = 0
126
+ until pre_compaction_files_per_level == files_per_level
127
+ if i < options.fetch(:max_iterations, MAX_ITERATIONS)
128
+ pre_compaction_files_per_level = files_per_level
129
+ compact_range
130
+ i += 1
131
+ else
132
+ raise ConvergenceError, "Failed to reach convergence in #{i} iterations"
133
+ end
134
+ end
135
+ end
136
+
137
+ NUM_FILES_AT_LEVEL_FORMAT = 'leveldb.num-files-at-level%d'.freeze
138
+ MAX_ITERATIONS = 10
139
+ ConvergenceError = Class.new(Error)
140
+
141
+ private
142
+
143
+ def files_per_level
144
+ files_per_level = []
145
+ level = 0
146
+ while (value = @db.get_property(sprintf(NUM_FILES_AT_LEVEL_FORMAT, level)))
147
+ files_per_level << value.to_i
148
+ level += 1
149
+ end
150
+ files_per_level
151
+ end
116
152
  end
117
153
 
118
154
  module LazyEnumerable
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module LevelDb
4
- VERSION = '1.0.0'.freeze
4
+ VERSION = '1.1.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leveldb-jruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: java
6
6
  authors:
7
7
  - Theo Hultberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ~>
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
18
  version: 1.8.0
19
19
  name: leveldbjni-jars
@@ -21,7 +21,7 @@ dependencies:
21
21
  type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.8.0
27
27
  description: LevelDB for JRuby over JNI
@@ -45,17 +45,17 @@ require_paths:
45
45
  - lib
46
46
  required_ruby_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
57
  rubyforge_project:
58
- rubygems_version: 2.2.2
58
+ rubygems_version: 2.4.8
59
59
  signing_key:
60
60
  specification_version: 4
61
61
  summary: LevelDB for JRuby