instana 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/lib/instana/agent.rb +16 -7
- data/lib/instana/tracing/processor.rb +5 -0
- data/lib/instana/version.rb +1 -1
- data/lib/instana.rb +4 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44130c934680011eede485a8a15d5e4cd893e7ec
|
4
|
+
data.tar.gz: 4a2af4a9b1a888b81f733d8362da8f0efa409033
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 893eedd5bf3fa56b18c54ac511a430f41a5a27a650c12dee8f7ef1576e9b28aa0571c69e02c279976c5e05b566052b73a0aeffdc26e56e9eac38d8bea90b37f2
|
7
|
+
data.tar.gz: a3790d930ba1c5afd2622703458497006055bf984d54ff652ac41a277be8048abe3d1cea7dc9855e1e2cbd85b00a2e891eaec0fd2641a4794bd1babbc8f54999
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2017 Instana
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/lib/instana/agent.rb
CHANGED
@@ -4,6 +4,7 @@ require 'socket'
|
|
4
4
|
require 'sys/proctable'
|
5
5
|
require 'timers'
|
6
6
|
require 'uri'
|
7
|
+
require 'thread'
|
7
8
|
include Sys
|
8
9
|
|
9
10
|
module Instana
|
@@ -11,6 +12,8 @@ module Instana
|
|
11
12
|
attr_accessor :state
|
12
13
|
attr_accessor :agent_uuid
|
13
14
|
attr_accessor :process
|
15
|
+
attr_accessor :collect_thread
|
16
|
+
attr_accessor :thread_spawn_lock
|
14
17
|
|
15
18
|
LOCALHOST = '127.0.0.1'.freeze
|
16
19
|
MIME_JSON = 'application/json'.freeze
|
@@ -32,6 +35,8 @@ module Instana
|
|
32
35
|
@announce_timer = nil
|
33
36
|
@collect_timer = nil
|
34
37
|
|
38
|
+
@thread_spawn_lock = Mutex.new
|
39
|
+
|
35
40
|
# Detect platform flags
|
36
41
|
@is_linux = (RUBY_PLATFORM =~ /linux/i) ? true : false
|
37
42
|
@is_osx = (RUBY_PLATFORM =~ /darwin/i) ? true : false
|
@@ -90,12 +95,15 @@ module Instana
|
|
90
95
|
# end
|
91
96
|
#
|
92
97
|
def spawn_background_thread
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
98
|
+
@thread_spawn_lock.synchronize {
|
99
|
+
if @collect_thread && @collect_thread.alive?
|
100
|
+
::Instana.logger.info "[instana] Collect thread already started & alive. Not spawning another."
|
101
|
+
else
|
102
|
+
@collect_thread = Thread.new do
|
103
|
+
start
|
104
|
+
end
|
105
|
+
end
|
106
|
+
}
|
99
107
|
end
|
100
108
|
|
101
109
|
# Sets up periodic timers and starts the agent in a background thread.
|
@@ -104,7 +112,7 @@ module Instana
|
|
104
112
|
# The announce timer
|
105
113
|
# We attempt to announce this ruby sensor to the host agent.
|
106
114
|
# In case of failure, we try again in 30 seconds.
|
107
|
-
@announce_timer = @timers.
|
115
|
+
@announce_timer = @timers.now_and_every(30) do
|
108
116
|
if @state == :unannounced
|
109
117
|
if host_agent_ready? && announce_sensor
|
110
118
|
transition_to(:announced)
|
@@ -143,6 +151,7 @@ module Instana
|
|
143
151
|
#
|
144
152
|
def start
|
145
153
|
::Instana.logger.warn "Host agent not available. Will retry periodically." unless host_agent_ready?
|
154
|
+
|
146
155
|
loop do
|
147
156
|
if @state == :unannounced
|
148
157
|
@collect_timer.pause
|
@@ -25,6 +25,11 @@ module Instana
|
|
25
25
|
#
|
26
26
|
# @param [Trace] the trace to be added to the queue
|
27
27
|
def add(trace)
|
28
|
+
# Do a quick checkup on our background thread.
|
29
|
+
if ::Instana.agent.collect_thread.nil? || !::Instana.agent.collect_thread.alive?
|
30
|
+
::Instana.agent.spawn_background_thread
|
31
|
+
end
|
32
|
+
|
28
33
|
# ::Instana.logger.debug("Queuing completed trace id: #{trace.id}")
|
29
34
|
@queue.push(trace)
|
30
35
|
end
|
data/lib/instana/version.rb
CHANGED
data/lib/instana.rb
CHANGED
@@ -5,9 +5,8 @@ require "instana/setup"
|
|
5
5
|
#
|
6
6
|
# gem "instana", :require => "instana/setup"
|
7
7
|
#
|
8
|
-
# ...and
|
9
|
-
# of your choice
|
8
|
+
# ...and override ::Instana::Agent.spawn_background_thread to boot
|
9
|
+
# the thread of your choice.
|
10
10
|
#
|
11
|
-
|
12
|
-
|
13
|
-
end
|
11
|
+
|
12
|
+
::Instana.agent.spawn_background_thread
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- Configuration.md
|
165
165
|
- Dockerfile
|
166
166
|
- Gemfile
|
167
|
+
- LICENSE
|
167
168
|
- README.md
|
168
169
|
- Rakefile
|
169
170
|
- Tracing.md
|