semian 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/Gemfile +0 -1
- data/ext/semian/semian.c +1 -1
- data/lib/semian.rb +19 -18
- data/lib/semian/adapter.rb +2 -0
- data/lib/semian/mysql2.rb +0 -1
- data/lib/semian/net_http.rb +1 -1
- data/lib/semian/platform.rb +11 -1
- data/lib/semian/protected_resource.rb +0 -2
- data/lib/semian/redis.rb +0 -1
- data/lib/semian/resource.rb +5 -1
- data/lib/semian/version.rb +1 -1
- data/scripts/install_toxiproxy.sh +1 -1
- data/semian.gemspec +1 -1
- data/test/circuit_breaker_test.rb +1 -1
- data/test/instrumentation_test.rb +1 -1
- data/test/mysql2_test.rb +1 -1
- data/test/net_http_test.rb +1 -1
- data/test/redis_test.rb +1 -1
- data/test/resource_test.rb +1 -1
- data/test/semian_test.rb +1 -1
- data/test/simple_integer_test.rb +1 -1
- data/test/simple_sliding_window_test.rb +1 -1
- data/test/simple_state_test.rb +1 -1
- data/test/test_helper.rb +1 -1
- data/test/unprotected_resource_test.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2c538a37d4dad10b509ddcc3efa6f80e128644c
|
4
|
+
data.tar.gz: f874bde55c42b7856613ec44faac1001aea1f1ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9881b1fae08a98cb10541901ee6ef2f06c4dc56c8cb183c3802797c91d9d8c32c10240777c3614892475f73170cf7ad9ef4abcedc0cdd080971c0c4fc09360ce
|
7
|
+
data.tar.gz: 6bfdea4f21cee7be821c2014d5679a71a70a0bd6a23f4b67b148b8c45955bcacd96d04549184aec06f9b375784f14a47ce65a224e3555ecaf10b09938de31bad
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/ext/semian/semian.c
CHANGED
@@ -493,7 +493,7 @@ void Init_semian()
|
|
493
493
|
eInternal = rb_const_get(cSemian, rb_intern("InternalError"));
|
494
494
|
|
495
495
|
rb_define_alloc_func(cResource, semian_resource_alloc);
|
496
|
-
rb_define_method(cResource, "
|
496
|
+
rb_define_method(cResource, "initialize_semaphore", semian_resource_initialize, 4);
|
497
497
|
rb_define_method(cResource, "acquire", semian_resource_acquire, -1);
|
498
498
|
rb_define_method(cResource, "count", semian_resource_count, 0);
|
499
499
|
rb_define_method(cResource, "semid", semian_resource_id, 0);
|
data/lib/semian.rb
CHANGED
@@ -1,5 +1,16 @@
|
|
1
|
+
require 'forwardable'
|
1
2
|
require 'logger'
|
3
|
+
|
4
|
+
require 'semian/version'
|
2
5
|
require 'semian/instrumentable'
|
6
|
+
require 'semian/platform'
|
7
|
+
require 'semian/resource'
|
8
|
+
require 'semian/circuit_breaker'
|
9
|
+
require 'semian/protected_resource'
|
10
|
+
require 'semian/unprotected_resource'
|
11
|
+
require 'semian/simple_sliding_window'
|
12
|
+
require 'semian/simple_integer'
|
13
|
+
require 'semian/simple_state'
|
3
14
|
|
4
15
|
#
|
5
16
|
# === Overview
|
@@ -77,8 +88,14 @@ module Semian
|
|
77
88
|
InternalError = Class.new(BaseError)
|
78
89
|
OpenCircuitError = Class.new(BaseError)
|
79
90
|
|
80
|
-
def
|
81
|
-
|
91
|
+
def issue_disabled_semaphores_warning
|
92
|
+
return if defined?(@warning_issued)
|
93
|
+
@warning_issued = true
|
94
|
+
if !sysv_semaphores_supported?
|
95
|
+
logger.info("Semian sysv semaphores are not supported on #{RUBY_PLATFORM} - all operations will no-op")
|
96
|
+
elsif disabled?
|
97
|
+
logger.info("Semian semaphores are disabled, is this what you really want? - all operations will no-op")
|
98
|
+
end
|
82
99
|
end
|
83
100
|
|
84
101
|
module AdapterError
|
@@ -151,24 +168,8 @@ module Semian
|
|
151
168
|
end
|
152
169
|
end
|
153
170
|
|
154
|
-
require 'semian/resource'
|
155
|
-
require 'semian/circuit_breaker'
|
156
|
-
require 'semian/protected_resource'
|
157
|
-
require 'semian/unprotected_resource'
|
158
|
-
require 'semian/platform'
|
159
|
-
require 'semian/simple_sliding_window'
|
160
|
-
require 'semian/simple_integer'
|
161
|
-
require 'semian/simple_state'
|
162
171
|
if Semian.semaphores_enabled?
|
163
172
|
require 'semian/semian'
|
164
173
|
else
|
165
174
|
Semian::MAX_TICKETS = 0
|
166
|
-
unless Semian.sysv_semaphores_supported?
|
167
|
-
Semian.logger.info("Semian sysv semaphores are not supported on #{RUBY_PLATFORM} - all operations will no-op")
|
168
|
-
end
|
169
|
-
|
170
|
-
if ENV['SEMIAN_SEMAPHORES_DISABLED']
|
171
|
-
Semian.logger.info("Semian semaphores are disabled, is this what you really want? - all operations will no-op")
|
172
|
-
end
|
173
175
|
end
|
174
|
-
require 'semian/version'
|
data/lib/semian/adapter.rb
CHANGED
data/lib/semian/mysql2.rb
CHANGED
data/lib/semian/net_http.rb
CHANGED
data/lib/semian/platform.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
module Semian
|
2
|
+
extend self
|
3
|
+
|
2
4
|
# Determines if Semian supported on the current platform.
|
3
|
-
def
|
5
|
+
def sysv_semaphores_supported?
|
4
6
|
/linux/.match(RUBY_PLATFORM)
|
5
7
|
end
|
8
|
+
|
9
|
+
def semaphores_enabled?
|
10
|
+
!disabled? && sysv_semaphores_supported?
|
11
|
+
end
|
12
|
+
|
13
|
+
def disabled?
|
14
|
+
ENV['SEMIAN_SEMAPHORES_DISABLED']
|
15
|
+
end
|
6
16
|
end
|
data/lib/semian/redis.rb
CHANGED
data/lib/semian/resource.rb
CHANGED
@@ -3,7 +3,11 @@ module Semian
|
|
3
3
|
attr_reader :tickets, :name
|
4
4
|
|
5
5
|
def initialize(name, tickets:, permissions: 0660, timeout: 0)
|
6
|
-
|
6
|
+
if Semian.semaphores_enabled?
|
7
|
+
initialize_semaphore(name, tickets, permissions, timeout)
|
8
|
+
else
|
9
|
+
Semian.issue_disabled_semaphores_warning
|
10
|
+
end
|
7
11
|
@name = name
|
8
12
|
@tickets = tickets
|
9
13
|
end
|
data/lib/semian/version.rb
CHANGED
@@ -7,7 +7,7 @@ fi
|
|
7
7
|
|
8
8
|
if which apt-get > /dev/null; then
|
9
9
|
echo "Installing toxiproxy"
|
10
|
-
wget -O /tmp/toxiproxy.deb https://github.com/Shopify/toxiproxy/releases/download/v2.0.
|
10
|
+
wget -O /tmp/toxiproxy.deb https://github.com/Shopify/toxiproxy/releases/download/v2.0.0/toxiproxy_2.0.0_amd64.deb
|
11
11
|
sudo dpkg -i /tmp/toxiproxy.deb
|
12
12
|
sudo service toxiproxy start
|
13
13
|
exit 0
|
data/semian.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class TestInstrumentation <
|
3
|
+
class TestInstrumentation < Minitest::Test
|
4
4
|
def setup
|
5
5
|
Semian.destroy(:testing) if Semian[:testing]
|
6
6
|
Semian.register(:testing, tickets: 1, error_threshold: 1, error_timeout: 5, success_threshold: 1)
|
data/test/mysql2_test.rb
CHANGED
data/test/net_http_test.rb
CHANGED
data/test/redis_test.rb
CHANGED
data/test/resource_test.rb
CHANGED
data/test/semian_test.rb
CHANGED
data/test/simple_integer_test.rb
CHANGED
data/test/simple_state_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Francis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-05-
|
12
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -113,16 +113,16 @@ dependencies:
|
|
113
113
|
name: toxiproxy
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
118
|
+
version: 1.0.0
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 1.0.0
|
126
126
|
description: |2
|
127
127
|
A Ruby C extention that is used to control access to shared resources
|
128
128
|
across process boundaries with SysV semaphores.
|