verm-client 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/verm.rb +1 -0
- data/lib/verm/client.rb +1 -3
- data/lib/verm/http_no_delay.rb +20 -0
- data/lib/verm/version.rb +1 -1
- 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: 7842cddb4253491aa3367dea8adc82f9e1f72af6
|
4
|
+
data.tar.gz: 00e2dd3ae0cc1ec10fc7078e67a3e19523fd3f1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b55bac23d4ca297dad0cf96bacb229c97f1d34664dee5dc7c905b2735a4d36ddfe1d1e2123cbaaa3ef82b003ee0104af8aeceaf42e566338c25d17325804747f
|
7
|
+
data.tar.gz: 890a5df057851e3f0e747dca3632fd3aa5a0e3d49d745ad013de7f45dc43737fd4c8304a526a05d87ab37569f44f371f2320d3497c02c0fe74754b204e0cd7e3
|
data/lib/verm.rb
CHANGED
data/lib/verm/client.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
|
3
1
|
module Verm
|
4
2
|
class Client
|
5
3
|
def self.incompressible_types
|
@@ -8,7 +6,7 @@ module Verm
|
|
8
6
|
|
9
7
|
attr_reader :http_client
|
10
8
|
|
11
|
-
def initialize(hostname, port: 3404, timeout: 15, http_class: Net::
|
9
|
+
def initialize(hostname, port: 3404, timeout: 15, http_class: Net::HTTPNoDelay)
|
12
10
|
@http_client = http_class.new(hostname, port)
|
13
11
|
@http_client.open_timeout = timeout
|
14
12
|
@http_client.read_timeout = timeout
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
# This class can be used as a workaround for Net::HTTP's lack of TCP_CORK/TCP_NOPUSH in sending
|
4
|
+
# requests. When using a Linux client and a Linux server we observe awful latency POSTing files on
|
5
|
+
# reused HTTP connections because Post class writes one block of data for the header and separate
|
6
|
+
# block(s) for the body. If the body is not sufficiently large to fill another packet itself, the
|
7
|
+
# Nagle algorithm will have Linux (by default) wait for the ACK from the first packet to be received
|
8
|
+
# back; unfortunately, this won't be sent immediately because of the Delayed ACK algorithm. As a
|
9
|
+
# result we typically observe 40ms of extra latency when POSTing small files. This class disables
|
10
|
+
# the Nagle algorithm to work around that. It's not an ideal fix because we would rather combine
|
11
|
+
# the write for the header with the write for the first N bytes of the body, but it should give
|
12
|
+
# performance better than the standard Ruby implementation in all cases because Nagle is of no
|
13
|
+
# benefit when queuing large blocks only to the OS (as both the streaming and non-streaming
|
14
|
+
# variants of the body write calls will do), and the way that Ruby is writing the header separately
|
15
|
+
# to the body means there will always be at least two packets anyway.
|
16
|
+
class Net::HTTPNoDelay < Net::HTTP
|
17
|
+
def on_connect()
|
18
|
+
@socket.io.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
19
|
+
end
|
20
|
+
end
|
data/lib/verm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: verm-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Bryant
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Adds one-line methods for storing files in Verm and retrieving them again.
|
@@ -23,6 +23,7 @@ files:
|
|
23
23
|
- Rakefile
|
24
24
|
- lib/verm.rb
|
25
25
|
- lib/verm/client.rb
|
26
|
+
- lib/verm/http_no_delay.rb
|
26
27
|
- lib/verm/version.rb
|
27
28
|
- test/fixtures/binary_file
|
28
29
|
- test/fixtures/binary_file.gz
|