zold 0.17.2 → 0.17.3

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
  SHA256:
3
- metadata.gz: 4c96f2da02ec8f5ab59403d7a0031158209698f74f275a42a8bfd92f2db1f6bd
4
- data.tar.gz: c6f63597c3da3dc66ca4e38875dddfab3027b0529b434561883f142dee4fe92c
3
+ metadata.gz: 7b180bc5d7ff240eafaa73f624652f2842cd576f3c43b87642e77d37716249a1
4
+ data.tar.gz: '0279c65c274f3725bf91ab3ba0b93ed60aca6b9db2edf7ab2a4f546818104acb'
5
5
  SHA512:
6
- metadata.gz: 05e38a1a02503288a738da6517f3111a2ca53cebfdb27945b2855c12f87d8bf7201e13516a17bc458668b34bb7283a71700941a28c2f3ae1ed60bfc9a1077c0c
7
- data.tar.gz: 4c544d8e6c64aab98bdb12e9a80428144e722316087b0f3d9bd63471fd40853c5c5d66f6aa45ae5e5547f0eaeaf8e65a6e807798d6bdb94b4f1b226a4f0269a1
6
+ metadata.gz: d840735668e54a0d8c88f7161c273631de34c06a938f7232cecbe61e11fe74ebac60fd0f810fcb832ff3b26b73ceb37e4d45a7d9529d6e7f0dda18bce433ad69
7
+ data.tar.gz: 9ebec3e75b50640543bf569f0957e1808af5f7bb5d82316bf21b58c7f98cec23961a40ed4297a73a52693c9054923c719a34b68bdf2f6e8cf586cad2256c013f
data/bin/zold CHANGED
@@ -161,20 +161,7 @@ log.debug("Home directory: #{home}")
161
161
  zoldata = File.join(home, '.zoldata')
162
162
 
163
163
  unless opts['skip-upgrades']
164
- Zold::Upgrades.new(Zold::VersionFile.new(File.join(zoldata, 'version')), 'upgrades').run
165
- # @todo #384:30min This is a workaround, move this code into Upgrades, somehow.
166
- # We should find a way to run these arbitrary scripts and pass arguments
167
- # to them. Each of them may need its own set of arguments.
168
- require_relative '../upgrades/2'
169
- Zold::UpgradeTo2.new(Dir.pwd, log).exec
170
- require_relative '../upgrades/protocol_up'
171
- Zold::ProtocolUp.new(Dir.pwd, log).exec
172
- require_relative '../upgrades/rename_foreign_wallets'
173
- Zold::RenameForeignWallets.new(Dir.pwd, opts['network'], log).exec
174
- if command == 'node'
175
- require_relative '../upgrades/move_wallets_into_tree'
176
- Zold::MoveWalletsIntoTree.new(Dir.pwd, log).exec
177
- end
164
+ Zold::Upgrades.new(Zold::VersionFile.new(File.join(zoldata, 'version')), 'upgrades', { command: command, network: opts['network']}).run
178
165
  end
179
166
 
180
167
  wallets = Zold::SyncWallets.new(
File without changes
@@ -123,6 +123,9 @@ module Zold
123
123
  o.bool '--no-cache',
124
124
  'Skip caching of front JSON pages (will seriously slow down, mostly useful for testing)',
125
125
  default: false
126
+ o.bool '--skip-oom',
127
+ 'Skip Out Of Memory check and never exit, no matter how much RAM is consumed',
128
+ default: false
126
129
  o.integer '--queue-limit',
127
130
  'The maximum number of wallets to be accepted via PUSH and stored in the queue (default: 4096)',
128
131
  default: 4096
File without changes
File without changes
data/lib/zold/copies.rb CHANGED
@@ -129,7 +129,7 @@ module Zold
129
129
  end
130
130
 
131
131
  def all
132
- Futex.new(file, log: @log).open do
132
+ Futex.new(file, log: @log).open(false) do
133
133
  load.group_by { |s| s[:name] }.map do |name, scores|
134
134
  {
135
135
  name: name,
data/lib/zold/gem.rb CHANGED
File without changes
data/lib/zold/http.rb CHANGED
File without changes
@@ -213,7 +213,7 @@ at #{host}:#{port}, strength is #{strength}")
213
213
 
214
214
  def load
215
215
  return [] unless File.exist?(@cache)
216
- Futex.new(@cache).open do |f|
216
+ Futex.new(@cache).open(false) do |f|
217
217
  IO.read(f).split(/\n/).map do |t|
218
218
  Score.parse(t)
219
219
  rescue StandardError => e
File without changes
@@ -198,7 +198,12 @@ in #{Age.new(@start, limit: 1)}")
198
198
  end,
199
199
  memory: settings.zache.get(:memory, lifetime: 5 * 60) do
200
200
  require 'get_process_mem'
201
- GetProcessMem.new.bytes.to_i
201
+ mem = GetProcessMem.new.bytes.to_i
202
+ if mem > 256 * 1024 * 1024 && !settings.opts['skip-oom']
203
+ settings.log.error('We are too big in memory, quitting; use --skip-oom to never quit')
204
+ Front.stop!
205
+ end
206
+ mem
202
207
  end,
203
208
  platform: RUBY_PLATFORM,
204
209
  load: settings.zache.get(:load, lifetime: 5 * 60) do
@@ -453,7 +458,10 @@ in #{Age.new(@start, limit: 1)}")
453
458
  end
454
459
 
455
460
  def processes
456
- POSIX::Spawn::Child.new('ps', 'ax').out.split("\n").select { |t| t.include?('zold') }
461
+ []
462
+ # This is temporarily disabled. We suspect that this line causes
463
+ # memory leakage.
464
+ # POSIX::Spawn::Child.new('ps', 'ax').out.split("\n").select { |t| t.include?('zold') }
457
465
  end
458
466
 
459
467
  def pretty(json)
data/lib/zold/remotes.rb CHANGED
@@ -245,7 +245,7 @@ module Zold
245
245
 
246
246
  def modify
247
247
  FileUtils.mkdir_p(File.dirname(@file))
248
- Futex.new(@file).open(true) do
248
+ Futex.new(@file).open do
249
249
  list = yield(load)
250
250
  IO.write(
251
251
  @file,
data/lib/zold/tax.rb CHANGED
@@ -57,10 +57,11 @@ module Zold
57
57
  PREFIX = 'TAXES'
58
58
  private_constant :PREFIX
59
59
 
60
- def initialize(wallet, ignore_score_weakness: false)
60
+ def initialize(wallet, ignore_score_weakness: false, strength: Score::STRENGTH)
61
61
  raise "The wallet must be of type Wallet: #{wallet.class.name}" unless wallet.is_a?(Wallet)
62
62
  @wallet = wallet
63
63
  @ignore_score_weakness = ignore_score_weakness
64
+ @strength = strength
64
65
  end
65
66
 
66
67
  # Check whether this tax payment already exists in the wallet.
@@ -95,7 +96,7 @@ module Zold
95
96
  next if pfx != PREFIX || body.nil?
96
97
  score = Score.parse_text(body)
97
98
  next if !score.valid? || score.value != EXACT_SCORE
98
- next if score.strength < Score::STRENGTH && !@ignore_score_weakness
99
+ next if score.strength < @strength && !@ignore_score_weakness
99
100
  next if t.amount > MAX_PAYMENT
100
101
  t
101
102
  end.compact.uniq(&:details)
data/lib/zold/upgrades.rb CHANGED
@@ -25,16 +25,29 @@ require_relative 'log'
25
25
  module Zold
26
26
  # Class to manage data upgrades (when zold itself upgrades).
27
27
  class Upgrades
28
- def initialize(version, directory, log: Log::VERBOSE)
28
+ def initialize(version, directory, opts, log: Log::VERBOSE)
29
+ raise 'network can\'t be nil' if opts[:network].nil?
29
30
  @version = version
30
31
  @directory = directory
31
32
  @log = log
33
+ @opts = opts
32
34
  end
33
35
 
34
36
  def run
35
37
  Dir.glob("#{@directory}/*.rb").select { |f| f =~ /^(\d+)\.rb$/ }.sort.each do |script|
36
38
  @version.apply(script)
37
39
  end
40
+
41
+ command = @opts[:command]
42
+ require_relative '../../upgrades/2'
43
+ Zold::UpgradeTo2.new(Dir.pwd, @log).exec
44
+ require_relative '../../upgrades/protocol_up'
45
+ Zold::ProtocolUp.new(Dir.pwd, @log).exec
46
+ require_relative '../../upgrades/rename_foreign_wallets'
47
+ Zold::RenameForeignWallets.new(Dir.pwd, @opts[:network], @log).exec
48
+ return unless command == 'node'
49
+ require_relative '../../upgrades/move_wallets_into_tree'
50
+ Zold::MoveWalletsIntoTree.new(Dir.pwd, @log).exec
38
51
  end
39
52
  end
40
53
  end
data/lib/zold/version.rb CHANGED
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.17.2'
28
+ VERSION = '0.17.3'
29
29
  PROTOCOL = 2
30
30
  end
data/resources/remotes CHANGED
File without changes
data/test/test_tax.rb CHANGED
@@ -105,7 +105,7 @@ class TestTax < Zold::Test
105
105
  386d4a ec9eae 306e3d 119d073 1c00dba 1376703 203589 5b55f7"
106
106
  )
107
107
  )
108
- tax = Zold::Tax.new(wallet)
108
+ tax = Zold::Tax.new(wallet, strength: 6)
109
109
  assert_equal(amount, tax.paid)
110
110
  assert(tax.debt < Zold::Amount::ZERO, tax.debt)
111
111
  end
@@ -75,7 +75,7 @@ class TestUpgrades < Zold::Test
75
75
  private
76
76
 
77
77
  def run_upgrades(dir)
78
- Zold::Upgrades.new(version_file(dir), dir).run
78
+ Zold::Upgrades.new(version_file(dir), dir, network: 'test').run
79
79
  end
80
80
 
81
81
  def version_file(dir)
data/zold.gemspec CHANGED
@@ -86,7 +86,7 @@ and suggests a different architecture for digital wallet maintenance.'
86
86
  s.add_runtime_dependency 'usagewatch_ext', '0.2.1'
87
87
  s.add_runtime_dependency 'xcop', '0.6'
88
88
  s.add_runtime_dependency 'zache', '0.3.1'
89
- s.add_runtime_dependency 'zold-score', '0.3.3'
89
+ s.add_runtime_dependency 'zold-score', '0.3.4'
90
90
  s.add_development_dependency 'codecov', '0.1.13'
91
91
  s.add_development_dependency 'minitest', '5.11.3'
92
92
  s.add_development_dependency 'minitest-fail-fast', '0.1.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.2
4
+ version: 0.17.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -366,14 +366,14 @@ dependencies:
366
366
  requirements:
367
367
  - - '='
368
368
  - !ruby/object:Gem::Version
369
- version: 0.3.3
369
+ version: 0.3.4
370
370
  type: :runtime
371
371
  prerelease: false
372
372
  version_requirements: !ruby/object:Gem::Requirement
373
373
  requirements:
374
374
  - - '='
375
375
  - !ruby/object:Gem::Version
376
- version: 0.3.3
376
+ version: 0.3.4
377
377
  - !ruby/object:Gem::Dependency
378
378
  name: codecov
379
379
  requirement: !ruby/object:Gem::Requirement
@@ -711,7 +711,7 @@ licenses:
711
711
  - MIT
712
712
  metadata: {}
713
713
  post_install_message: |-
714
- Thanks for installing Zold 0.17.2!
714
+ Thanks for installing Zold 0.17.3!
715
715
  Study our White Paper: https://papers.zold.io/wp.pdf
716
716
  Read our blog posts: https://blog.zold.io
717
717
  Try online wallet at: https://wts.zold.io