tunemygc 1.0.42 → 1.0.43

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: 73d49396c67651f5cecef3a6b79315783398b227
4
- data.tar.gz: 66721034ee44fade67542ce8ea968d9e5dcb84e6
3
+ metadata.gz: f66238f6398dc9b02f0f12ba5ab8a38196167cf1
4
+ data.tar.gz: 8777657a4b0c208f8d7a863bec45644eab0ba4d0
5
5
  SHA512:
6
- metadata.gz: 95bace0c923c3e394aa41afa243553732a85be607c248d906a4554995b3c596b862a036329932c63d5dead9c705d1a67885c225326b860e404547144708e1ec4
7
- data.tar.gz: 17e80dd232f5e89b9a2c1bf781758b984419df16542e9179fa4cf7ecdaf7092019e9530293843cf9a9dd8a260550e15974da3016c952d2d0f714ff8864711b7e
6
+ metadata.gz: 186f1b4955e0c59a2f7e265a18094a548e0cfde95800c2bc8c7e9e3b7069846c539c23a9364e70031fa085ece2e5363c6c4bf7f701b82f7dd9e61ae615dc7194
7
+ data.tar.gz: b2a9349344ece06752c89c637dcf88a72b91db5525e3a2fe46bb7205bdb6ff605b0fff2e8f02b8100d4d09e290783029d96a760d6b30b19fa01642a3902033ba
data/.travis.yml CHANGED
@@ -6,16 +6,15 @@ rvm:
6
6
  - 2.1.2
7
7
  - 2.1.5
8
8
  - 2.2.0
9
+ - 2.2.1
9
10
  - ruby-head
10
11
  script: "bundle exec rake"
11
- env: RUBY_GC_TUNE=1 RUBY_GC_TUNE_DEBUG=1 RUBY_GC_SYNC_ALWAYS=1
12
+ env: RUBY_GC_TUNE=200 RUBY_GC_TUNE_DEBUG=1 RUBY_GC_SYNC_ALWAYS=1
12
13
  gemfile:
13
14
  - Gemfile
14
15
  notifications:
15
16
  recipients:
16
- - lourens@methodmissing.com
17
+ - info@bearmetal.eu
17
18
  branches:
18
19
  only:
19
20
  - master
20
- - compact-samples
21
- - minitest
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tunemygc (1.0.42)
4
+ tunemygc (1.0.43)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -14,16 +14,41 @@ module TuneMyGc
14
14
 
15
15
  def sync(snapshotter)
16
16
  if sync_required?(snapshotter)
17
- response = nil
18
- timeout do
19
- response = sync_with_tuner(snapshotter)
17
+ snapshots = snapshotter.size
18
+ TuneMyGc.log "Syncing #{snapshots} snapshots"
19
+ payload = [environment(snapshotter)]
20
+ debug = ENV["RUBY_GC_TUNE_DEBUG"]
21
+ TuneMyGc.log "=== Snapshots ===" if debug
22
+ while !snapshotter.empty?
23
+ snapshot = snapshotter.deq
24
+ TuneMyGc.log(snapshot) if debug
25
+ payload << snapshot
26
+ end
27
+ data = ActiveSupport::JSON.encode(payload)
28
+ begin
29
+ 3.times do |retries|
30
+ Timeout.timeout(NETWORK_TIMEOUT + 1) do
31
+ response = sync_with_tuner(data, snapshots)
32
+ if response
33
+ if response == :retryable
34
+ TuneMyGc.log "Retrying in #{retries} seconds ..."
35
+ sleep(retries)
36
+ else
37
+ process_config_callback(response)
38
+ break
39
+ end
40
+ else
41
+ break
42
+ end
43
+ end
44
+ end
45
+ true
46
+ ensure
47
+ payload.clear
20
48
  end
21
- timeout do
22
- process_config_callback(response)
23
- end if response
24
49
  else
25
50
  TuneMyGc.log "Nothing to sync, discarding #{snapshotter.size} snapshots"
26
- snapshotter.clear
51
+ false
27
52
  end
28
53
  end
29
54
 
@@ -37,26 +62,8 @@ module TuneMyGc
37
62
  end
38
63
 
39
64
  private
40
- def timeout(&block)
41
- Timeout.timeout(NETWORK_TIMEOUT + 1){ block.call }
42
- end
43
-
44
- def sync_with_tuner(snapshotter)
45
- snapshots = 0
46
- # Fallback to Timeout if Net::HTTP read timeout fails
47
- snapshots = snapshotter.size
48
- TuneMyGc.log "Syncing #{snapshots} snapshots"
49
- payload = [environment(snapshotter)]
50
- debug = ENV["RUBY_GC_TUNE_DEBUG"]
51
- TuneMyGc.log "=== Snapshots ===" if debug
52
- while !snapshotter.empty?
53
- snapshot = snapshotter.deq
54
- TuneMyGc.log(snapshot) if debug
55
- payload << snapshot
56
- end
57
- data = ActiveSupport::JSON.encode(payload)
65
+ def sync_with_tuner(data, snapshots)
58
66
  response = client.post('/ruby', data, TuneMyGc::HEADERS)
59
- snapshotter.unit_of_work = false
60
67
  if Net::HTTPNotFound === response
61
68
  TuneMyGc.log "Invalid application token. Please generate one with 'bundle exec tunemygc <a_valid_email_address>' and set the RUBY_GC_TOKEN environment variable"
62
69
  return false
@@ -73,20 +80,18 @@ module TuneMyGc
73
80
  TuneMyGc.log "Invalid payload (#{response.body}). Failed to sync #{snapshots} snapshots"
74
81
  return false
75
82
  elsif Net::HTTPInternalServerError === response
76
- TuneMyGc.log "An internal error occurred (#{response.body}). Failed to sync #{snapshots} snapshots"
77
- return false
83
+ TuneMyGc.log "An internal error occurred (#{response.body}). Failed to sync #{snapshots} snapshots."
84
+ return :retryable
78
85
  elsif Net::HTTPSuccess === response
79
86
  response
80
87
  else
81
88
  TuneMyGc.log "Unknown error: #{response.body}"
82
89
  return false
83
90
  end
84
- rescue Exception => e
91
+ rescue Timeout::Error, Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED,
92
+ EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, IOError => e
85
93
  TuneMyGc.log "Failed to sync #{snapshots} snapshots (error: #{e})"
86
- return false
87
- ensure
88
- # Prefer to loose data points than accumulate buffers indefinitely on error or other conditions
89
- snapshotter.clear
94
+ return :retryable
90
95
  end
91
96
 
92
97
  def process_config_callback(response)
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module TuneMyGc
4
- VERSION = "1.0.42"
4
+ VERSION = "1.0.43"
5
5
  end
data/test/test_syncer.rb CHANGED
@@ -46,7 +46,7 @@ class TestSyncer < TuneMyGcTestCase
46
46
 
47
47
  out, err = capture_io do
48
48
  TuneMyGc.logger = Logger.new($stdout)
49
- assert_nil syncer.sync(snapshots)
49
+ assert syncer.sync(snapshots)
50
50
  end
51
51
  assert_match(/Ruby version/, out)
52
52
  assert_match(/Rails version/, out)
@@ -65,7 +65,7 @@ class TestSyncer < TuneMyGcTestCase
65
65
 
66
66
  out, err = capture_io do
67
67
  TuneMyGc.logger = Logger.new($stdout)
68
- assert_nil syncer.sync(snapshots)
68
+ assert syncer.sync(snapshots)
69
69
  end
70
70
  assert_match(/The GC is already tuned by environment variables/, out)
71
71
  assert_match(/Failed to sync 1 snapshots/, out)
@@ -82,7 +82,7 @@ class TestSyncer < TuneMyGcTestCase
82
82
 
83
83
  out, err = capture_io do
84
84
  TuneMyGc.logger = Logger.new($stdout)
85
- assert_nil syncer.sync(snapshots)
85
+ assert syncer.sync(snapshots)
86
86
  end
87
87
  assert_match(/Invalid payload/, out)
88
88
  assert_match(/snapshot timestamp/, out)
@@ -100,7 +100,7 @@ class TestSyncer < TuneMyGcTestCase
100
100
 
101
101
  out, err = capture_io do
102
102
  TuneMyGc.logger = Logger.new($stdout)
103
- assert_nil syncer.sync(snapshots)
103
+ assert syncer.sync(snapshots)
104
104
  end
105
105
  assert_match(/Invalid application token/, out)
106
106
  end
@@ -116,7 +116,7 @@ class TestSyncer < TuneMyGcTestCase
116
116
 
117
117
  out, err = capture_io do
118
118
  TuneMyGc.logger = Logger.new($stdout)
119
- assert_nil syncer.sync(snapshots)
119
+ assert syncer.sync(snapshots)
120
120
  end
121
121
  assert_match(/Agent version 2 required/, out)
122
122
  assert_match(/Failed to sync 1 snapshots/, out)
@@ -132,7 +132,7 @@ class TestSyncer < TuneMyGcTestCase
132
132
 
133
133
  out, err = capture_io do
134
134
  TuneMyGc.logger = Logger.new($stdout)
135
- assert_nil syncer.sync(snapshots)
135
+ assert syncer.sync(snapshots)
136
136
  end
137
137
  assert_match(/Failed to sync 1 snapshots/, out)
138
138
  assert_match(/dang/, out)
data/tunemygc.gemspec CHANGED
@@ -21,26 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.test_files = `git ls-files test`.split($/)
22
22
  s.require_paths = ["lib"]
23
23
  s.required_ruby_version = '>= 2.1.0'
24
- s.post_install_message = <<-eos
25
- [TuneMyGC] Getting started:
26
-
27
- Run this setup command from your application root to register your application with the `https://tunemygc.com` service:
28
-
29
- $ bundle exec tunemygc -r your@email.address
30
-
31
- You should get back a token reference to identify this Rails app:
32
-
33
- Application registered. Use RUBY_GC_TOKEN=08de9e8822c847244b31290cedfc1d32 in your environment.
34
-
35
- Then sample your Rails app for tuning:
36
-
37
- $ RUBY_GC_TOKEN=08de9e8822c847244b31290cedfc1d32 RUBY_GC_TUNE=200 bundle exec rails s
38
-
39
- We require a valid email address as a canonical reference for tuner tokens for your applications.
40
-
41
- Happy hacking,
42
- - the Bear Metal cubs
43
- eos
44
24
 
45
25
  s.add_development_dependency('activesupport', '~> 4.1')
46
26
  s.add_development_dependency('rake', '~> 10.3')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunemygc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.42
4
+ version: 1.0.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bear Metal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -148,25 +148,7 @@ homepage: https://tunemygc.com
148
148
  licenses:
149
149
  - MIT
150
150
  metadata: {}
151
- post_install_message: |2
152
- [TuneMyGC] Getting started:
153
-
154
- Run this setup command from your application root to register your application with the `https://tunemygc.com` service:
155
-
156
- $ bundle exec tunemygc -r your@email.address
157
-
158
- You should get back a token reference to identify this Rails app:
159
-
160
- Application registered. Use RUBY_GC_TOKEN=08de9e8822c847244b31290cedfc1d32 in your environment.
161
-
162
- Then sample your Rails app for tuning:
163
-
164
- $ RUBY_GC_TOKEN=08de9e8822c847244b31290cedfc1d32 RUBY_GC_TUNE=200 bundle exec rails s
165
-
166
- We require a valid email address as a canonical reference for tuner tokens for your applications.
167
-
168
- Happy hacking,
169
- - the Bear Metal cubs
151
+ post_install_message:
170
152
  rdoc_options: []
171
153
  require_paths:
172
154
  - lib