ruby-oci8 2.2.4-x86-mingw32 → 2.2.4.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +16 -1
- data/NEWS +15 -0
- data/docs/hanging-after-inactivity.md +14 -12
- data/lib/oci8/properties.rb +2 -2
- data/lib/oci8/version.rb +1 -1
- data/lib/oci8lib_191.so +0 -0
- data/lib/oci8lib_200.so +0 -0
- data/lib/oci8lib_210.so +0 -0
- data/lib/oci8lib_220.so +0 -0
- data/lib/oci8lib_230.so +0 -0
- data/lib/oci8lib_240.so +0 -0
- metadata +4 -3
data/ChangeLog
CHANGED
@@ -1,6 +1,21 @@
|
|
1
|
+
2017-06-17 Kubo Takehiro <kubo@jiubao.org>
|
2
|
+
* NEWS: Add changes between 2.2.4 and 2.2.4.1
|
3
|
+
* lib/oci8/version.rb: Update to 2.2.4.1
|
4
|
+
* lib/oci8/version.rb: Fix URL links
|
5
|
+
* docs/hanging-after-inactivity.md: Revised
|
6
|
+
|
7
|
+
2017-06-16 Kubo Takehiro <kubo@jiubao.org>
|
8
|
+
* ext/oci8/extconf.rb, ext/oci8/hook_funcs.c, ext/oci8/oci8lib.c:
|
9
|
+
Fix to pass compilation on cygwin.
|
10
|
+
* mkpkg-win32.rb: Add tests on cygwin.
|
11
|
+
|
12
|
+
2017-06-16 Kubo Takehiro <kubo@jiubao.org>
|
13
|
+
* ext/oci8/hook_funcs.c: Fix the calling convention of setsockopt
|
14
|
+
on Windows x86.
|
15
|
+
|
1
16
|
2017-06-11 Kubo Takehiro <kubo@jiubao.org>
|
2
17
|
* NEWS: Add changes between 2.2.3 and 2.2.4.
|
3
|
-
* lib/oci8/version.rb: update to 2.2.
|
18
|
+
* lib/oci8/version.rb: update to 2.2.4.
|
4
19
|
* docs/ldap-auth-and-function-interposition.md,
|
5
20
|
docs/hanging-after-inactivity.md: updated
|
6
21
|
|
data/NEWS
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# @markup markdown
|
2
2
|
|
3
|
+
2.2.4.1
|
4
|
+
=======
|
5
|
+
|
6
|
+
Fixed issue
|
7
|
+
-----------
|
8
|
+
|
9
|
+
### Fix invalid function calls when TCP keepalive time parameter is set on Windows x86
|
10
|
+
|
11
|
+
When TCP keepalive time parameter is set, The win32 API `setsockopt` was hooked
|
12
|
+
with incorrect calling convention on Windows x86. As far as I checked it doesn't
|
13
|
+
cause bad effects. But it is by chance. If the code in `oci.dll` is optimized
|
14
|
+
differently, it may cause unexpected behavior.
|
15
|
+
|
16
|
+
### Fix compilation errors in 2.2.4 on cygwin
|
17
|
+
|
3
18
|
2.2.4
|
4
19
|
=====
|
5
20
|
|
@@ -6,13 +6,13 @@ Hanging After a Long Period of Inactivity
|
|
6
6
|
When a database connection hangs after a long period of inactivity,
|
7
7
|
this document may help you.
|
8
8
|
|
9
|
-
When a firewall resides between Oracle database server
|
10
|
-
|
9
|
+
When a firewall or a NAT proxy resides between Oracle database server
|
10
|
+
and client, it sometimes drops inactive connections as dead ones. If a
|
11
11
|
client connects to an Oracle server and tries to use the connection
|
12
|
-
after a long sleep (> 1 hour), the client may hang
|
12
|
+
after a long sleep (> 1 hour), the client may hang in an effort to use the
|
13
13
|
dropped connection. This issue will be solved by setting TCP keepalive
|
14
14
|
packets whose keepalive time parameter is smaller than the inactive
|
15
|
-
connection timeout
|
15
|
+
connection timeout.
|
16
16
|
|
17
17
|
TCP keepalive is enabled by [(ENABLE=broken)][] in a connect
|
18
18
|
descriptor. If you use easy connect naming such as `//hostname/service_name`,
|
@@ -28,28 +28,29 @@ This is equivalent to the following:
|
|
28
28
|
conn = OCI8.new(username, password, connect_descriptor)
|
29
29
|
|
30
30
|
The default TCP keepalive time is two hours, which may be larger
|
31
|
-
than the inactive connection timeout
|
31
|
+
than the inactive connection timeout. The default
|
32
32
|
value in the system is configurable via [procfs and sysctl on Linux][]
|
33
33
|
or [registry parameters on Windows][]. If you have no privilege to
|
34
|
-
customize the system, you can change
|
35
|
-
by the tcp_keepalive_time property.
|
34
|
+
customize the system, you can change per-connection keepalive time
|
35
|
+
by the `tcp_keepalive_time` property.
|
36
36
|
|
37
37
|
OCI8.properties[:tcp_keepalive_time] = 600 # 10 minutes
|
38
38
|
|
39
|
-
|
40
|
-
platforms since ruby-oci8 2.2.4.
|
39
|
+
It is supported on the following platforms since ruby-oci8 2.2.4.
|
41
40
|
|
42
41
|
* Linux i386 and x86_64
|
43
42
|
* macOS
|
44
43
|
* Windows x86 and x64
|
45
44
|
* Solaris x86_64
|
46
45
|
|
46
|
+
When it is set on unsupported platforms, you get `NotImplementedError`.
|
47
|
+
|
47
48
|
This feature is implemented with hackish way. When
|
48
49
|
`tcp_keepalive_time` is set, Oracle client library's
|
49
50
|
procedure linkage table is modified to intercept [setsockopt][] system
|
50
|
-
|
51
|
-
TCP keepalive, ruby-oci8 changes the TCP keepalive time
|
52
|
-
|
51
|
+
call. When Oracle client library issues the system call which enables
|
52
|
+
TCP keepalive, [ruby-oci8 changes][] the per-connection TCP keepalive time
|
53
|
+
immediately.
|
53
54
|
|
54
55
|
I hope that Oracle adds a new OCI handle attribute to support this
|
55
56
|
feature natively in the future.
|
@@ -59,3 +60,4 @@ feature natively in the future.
|
|
59
60
|
[registry parameters on Windows]: https://blogs.technet.microsoft.com/nettracer/2010/06/03/things-that-you-may-want-to-know-about-tcp-keepalives/
|
60
61
|
[plthook]: https://github.com/kubo/plthook
|
61
62
|
[setsockopt]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
|
63
|
+
[ruby-oci8 changes]: https://github.com/kubo/ruby-oci8/blob/ruby-oci8-2.2.4/ext/oci8/hook_funcs.c#L302-L318
|
data/lib/oci8/properties.rb
CHANGED
@@ -177,13 +177,13 @@ class OCI8
|
|
177
177
|
#
|
178
178
|
# [:tcp_keepalive]
|
179
179
|
#
|
180
|
-
# See {file:docs/hanging-after-inactivity.md
|
180
|
+
# See {file:docs/hanging-after-inactivity.md}
|
181
181
|
#
|
182
182
|
# *Since:* 2.2.4
|
183
183
|
#
|
184
184
|
# [:tcp_keepalive_time]
|
185
185
|
#
|
186
|
-
# See {file:docs/hanging-after-inactivity.md
|
186
|
+
# See {file:docs/hanging-after-inactivity.md}
|
187
187
|
#
|
188
188
|
# *Since:* 2.2.4
|
189
189
|
#
|
data/lib/oci8/version.rb
CHANGED
data/lib/oci8lib_191.so
CHANGED
Binary file
|
data/lib/oci8lib_200.so
CHANGED
Binary file
|
data/lib/oci8lib_210.so
CHANGED
Binary file
|
data/lib/oci8lib_220.so
CHANGED
Binary file
|
data/lib/oci8lib_230.so
CHANGED
Binary file
|
data/lib/oci8lib_240.so
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-oci8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 109
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 2
|
9
9
|
- 4
|
10
|
-
|
10
|
+
- 1
|
11
|
+
version: 2.2.4.1
|
11
12
|
platform: x86-mingw32
|
12
13
|
authors:
|
13
14
|
- Kubo Takehiro
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2017-06-
|
19
|
+
date: 2017-06-17 00:00:00 +09:00
|
19
20
|
default_executable:
|
20
21
|
dependencies: []
|
21
22
|
|