ruby-oci8 2.2.4-x86-mingw32 → 2.2.4.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|