killbill 3.1.10 → 3.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS +7 -0
- data/VERSION +1 -1
- data/lib/killbill/ext/active_merchant/jdbc_connection.rb +23 -0
- data/lib/killbill/ext/active_merchant/proxy_support.rb +58 -0
- data/lib/killbill/ext/active_merchant/typhoeus_connection.rb +5 -3
- data/lib/killbill/helpers/active_merchant.rb +1 -0
- data/lib/killbill/helpers/active_merchant/gateway.rb +13 -1
- data/lib/killbill/helpers/active_merchant/payment_plugin.rb +2 -0
- data/lib/killbill/helpers/active_merchant/utils.rb +17 -0
- data/lib/killbill/killbill_logger.rb +3 -1
- data/spec/killbill/helpers/utils_spec.rb +16 -0
- 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: aabe3a8f982505fbc0553841a657da0c8594ce57
|
4
|
+
data.tar.gz: 794bbb1623029efe0eb5689457b940703b1d4282
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d3ffd5609c96255b83964709465f29b1a16619a4fa00c585ac3d1c4ad6000ab08448c608c2987de3871925900f0f65385c2f16f36affe07313611e9d5c64837
|
7
|
+
data.tar.gz: 6bfaf6c5de3339383920799042f9054215e33538ff08f02cf61d463fbc91ef66ad8b30b94efa386126c9f515e255b7ea83e07c3b4330ffd69eeada56cb08bafb
|
data/NEWS
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
3.1.11
|
2
|
+
ActiveMerchant:
|
3
|
+
- add proxy support
|
4
|
+
- redirect wiredump device to Kill Bill log
|
5
|
+
- expose networking configuration options
|
6
|
+
ActiveRecord performance improvements
|
7
|
+
|
1
8
|
3.1.10
|
2
9
|
Add workarounds for ActiveRecord bugs under high load/concurrency
|
3
10
|
BoundedLRUCache performance improvements
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.11
|
@@ -35,6 +35,29 @@ module ActiveRecord
|
|
35
35
|
def self.jndi_retries(config)
|
36
36
|
(config[:jndi_retries] || 5).to_i
|
37
37
|
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def setup_jndi_factory
|
42
|
+
data_source = config[:data_source] || Java::JavaxNaming::InitialContext.new.lookup(config[:jndi].to_s)
|
43
|
+
|
44
|
+
@jndi = true
|
45
|
+
# Really slow under high load (see https://github.com/jruby/activerecord-jdbc-adapter/pull/588).
|
46
|
+
#self.connection_factory = JdbcConnectionFactory.impl { data_source.connection }
|
47
|
+
self.connection_factory = RubyJdbcConnectionFactory.new(data_source)
|
48
|
+
end
|
49
|
+
|
50
|
+
class RubyJdbcConnectionFactory
|
51
|
+
include JdbcConnectionFactory
|
52
|
+
|
53
|
+
def initialize(data_source)
|
54
|
+
@data_source = data_source
|
55
|
+
end
|
56
|
+
|
57
|
+
def new_connection
|
58
|
+
@data_source.connection
|
59
|
+
end
|
60
|
+
end
|
38
61
|
end
|
39
62
|
end
|
40
63
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'active_utils/common/posts_data'
|
2
|
+
|
3
|
+
# Pass the proxy details to the connection object - see https://github.com/Shopify/active_utils/pull/44
|
4
|
+
module ActiveMerchant #:nodoc:
|
5
|
+
module PostsData #:nodoc:
|
6
|
+
|
7
|
+
def self.included(base)
|
8
|
+
base.superclass_delegating_accessor :ssl_strict
|
9
|
+
base.ssl_strict = true
|
10
|
+
|
11
|
+
base.superclass_delegating_accessor :ssl_version
|
12
|
+
base.ssl_version = nil
|
13
|
+
|
14
|
+
base.class_attribute :retry_safe
|
15
|
+
base.retry_safe = false
|
16
|
+
|
17
|
+
base.superclass_delegating_accessor :open_timeout
|
18
|
+
base.open_timeout = 60
|
19
|
+
|
20
|
+
base.superclass_delegating_accessor :read_timeout
|
21
|
+
base.read_timeout = 60
|
22
|
+
|
23
|
+
base.superclass_delegating_accessor :max_retries
|
24
|
+
base.max_retries = Connection::MAX_RETRIES
|
25
|
+
|
26
|
+
base.superclass_delegating_accessor :logger
|
27
|
+
base.superclass_delegating_accessor :wiredump_device
|
28
|
+
|
29
|
+
base.superclass_delegating_accessor :proxy_address
|
30
|
+
base.superclass_delegating_accessor :proxy_port
|
31
|
+
end
|
32
|
+
|
33
|
+
def raw_ssl_request(method, endpoint, data, headers = {})
|
34
|
+
logger.warn "#{self.class} using ssl_strict=false, which is insecure" if logger unless ssl_strict
|
35
|
+
|
36
|
+
connection = new_connection(endpoint)
|
37
|
+
connection.open_timeout = open_timeout
|
38
|
+
connection.read_timeout = read_timeout
|
39
|
+
connection.retry_safe = retry_safe
|
40
|
+
connection.verify_peer = ssl_strict
|
41
|
+
connection.ssl_version = ssl_version
|
42
|
+
connection.logger = logger
|
43
|
+
connection.max_retries = max_retries
|
44
|
+
connection.tag = self.class.name
|
45
|
+
connection.wiredump_device = wiredump_device
|
46
|
+
|
47
|
+
connection.pem = @options[:pem] if @options
|
48
|
+
connection.pem_password = @options[:pem_password] if @options
|
49
|
+
|
50
|
+
connection.ignore_http_status = @options[:ignore_http_status] if @options
|
51
|
+
|
52
|
+
connection.proxy_address = proxy_address
|
53
|
+
connection.proxy_port = proxy_port
|
54
|
+
|
55
|
+
connection.request(method, data, headers)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -16,9 +16,11 @@ module ActiveMerchant
|
|
16
16
|
|
17
17
|
result = nil
|
18
18
|
realtime = Benchmark.realtime do
|
19
|
-
options
|
20
|
-
options[:body]
|
21
|
-
|
19
|
+
options = {:method => method, :headers => headers, :connecttimeout => open_timeout}
|
20
|
+
options[:body] = body if body
|
21
|
+
options[:proxy] = proxy_address if proxy_address
|
22
|
+
options[:proxy] += ":#{proxy_port}" if proxy_address and proxy_port
|
23
|
+
result = http(endpoint.to_s, options)
|
22
24
|
end
|
23
25
|
|
24
26
|
debug '--> response_code=%d (body_length=%d total_time=%.4fs realtime=%.4fs)' % [result.code, result.body ? result.body.length : 0, result.total_time, realtime], tag
|
@@ -13,8 +13,20 @@ module Killbill
|
|
13
13
|
|
14
14
|
if config[:log_file]
|
15
15
|
::ActiveMerchant::Billing::Gateway.wiredump_device = File.open(config[:log_file], 'w')
|
16
|
-
|
16
|
+
else
|
17
|
+
log_method = config[:quiet] ? :debug : :info
|
18
|
+
::ActiveMerchant::Billing::Gateway.wiredump_device = ::Killbill::Plugin::ActiveMerchant::Utils::KBWiredumpDevice.new(logger, log_method)
|
17
19
|
end
|
20
|
+
::ActiveMerchant::Billing::Gateway.wiredump_device.sync = true
|
21
|
+
|
22
|
+
::ActiveMerchant::Billing::Gateway.open_timeout = config[:open_timeout] if config[:open_timeout]
|
23
|
+
::ActiveMerchant::Billing::Gateway.read_timeout = config[:read_timeout] if config[:read_timeout]
|
24
|
+
::ActiveMerchant::Billing::Gateway.retry_safe = config[:retry_safe] if config[:retry_safe]
|
25
|
+
::ActiveMerchant::Billing::Gateway.ssl_strict = config[:ssl_strict] if config[:ssl_strict]
|
26
|
+
::ActiveMerchant::Billing::Gateway.ssl_version = config[:ssl_version] if config[:ssl_version]
|
27
|
+
::ActiveMerchant::Billing::Gateway.max_retries = config[:max_retries] if config[:max_retries]
|
28
|
+
::ActiveMerchant::Billing::Gateway.proxy_address = config[:proxy_address] if config[:proxy_address]
|
29
|
+
::ActiveMerchant::Billing::Gateway.proxy_port = config[:proxy_port] if config[:proxy_port]
|
18
30
|
|
19
31
|
Gateway.new(config, gateway_builder.call(config))
|
20
32
|
end
|
@@ -17,6 +17,23 @@ module Killbill
|
|
17
17
|
no_hyphens.insert(8, "-").insert(13, "-").insert(18, "-").insert(23, "-")
|
18
18
|
end
|
19
19
|
|
20
|
+
class KBWiredumpDevice < IO
|
21
|
+
|
22
|
+
# Required for compatibility, but unused
|
23
|
+
attr_accessor :sync
|
24
|
+
|
25
|
+
def initialize(logger, method = :info)
|
26
|
+
@logger = logger
|
27
|
+
@method = method
|
28
|
+
end
|
29
|
+
|
30
|
+
# We mostly care about the << method
|
31
|
+
def write(string)
|
32
|
+
sanitized_string = string.to_s.chomp("\n")
|
33
|
+
@logger.send(@method, sanitized_string) if sanitized_string.size > 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
20
37
|
# Relies on the fact that hashes enumerate their values in the order that the corresponding keys were inserted (Ruby 1.9+)
|
21
38
|
class BoundedLRUCache
|
22
39
|
|
@@ -6,6 +6,7 @@ module Killbill
|
|
6
6
|
class KillbillLogger
|
7
7
|
|
8
8
|
attr_accessor :log_level
|
9
|
+
attr_accessor :progname
|
9
10
|
|
10
11
|
def initialize(delegate)
|
11
12
|
@logger = delegate
|
@@ -66,7 +67,8 @@ module Killbill
|
|
66
67
|
message = '(nil)'
|
67
68
|
end
|
68
69
|
end
|
69
|
-
message.nil? ? '(nil)' : message.to_s
|
70
|
+
final_message = message.nil? ? '(nil)' : message.to_s
|
71
|
+
@progname ? "[#{@progname}] #{final_message}" : final_message
|
70
72
|
end
|
71
73
|
|
72
74
|
alias_method :fatal, :error
|
@@ -20,6 +20,22 @@ describe Killbill::Plugin::ActiveMerchant::Utils do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
it 'should implement a wiredump device for the Kill Bill logger' do
|
24
|
+
logger = Logger.new(STDOUT)
|
25
|
+
logger.level = Logger::INFO
|
26
|
+
|
27
|
+
io = ::Killbill::Plugin::ActiveMerchant::Utils::KBWiredumpDevice.new(logger)
|
28
|
+
io.sync = true
|
29
|
+
io.sync.should be_true
|
30
|
+
io << 'This is an I/O test'
|
31
|
+
|
32
|
+
jlogger = ::Killbill::Plugin::KillbillLogger.new(logger)
|
33
|
+
jio = ::Killbill::Plugin::ActiveMerchant::Utils::KBWiredumpDevice.new(jlogger)
|
34
|
+
jio.sync = true
|
35
|
+
jio.sync.should be_true
|
36
|
+
jio << 'This is an I/O test (via Java)'
|
37
|
+
end
|
38
|
+
|
23
39
|
it 'should implement a thread-safe LRU cache' do
|
24
40
|
require 'benchmark'
|
25
41
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: killbill
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kill Bill core team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -256,6 +256,7 @@ files:
|
|
256
256
|
- lib/killbill/creator.rb
|
257
257
|
- lib/killbill/currency.rb
|
258
258
|
- lib/killbill/ext/active_merchant/jdbc_connection.rb
|
259
|
+
- lib/killbill/ext/active_merchant/proxy_support.rb
|
259
260
|
- lib/killbill/ext/active_merchant/typhoeus_connection.rb
|
260
261
|
- lib/killbill/gen/api/account.rb
|
261
262
|
- lib/killbill/gen/api/account_api_exception.rb
|