You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Previous implementation could fail in following ways in
multi-thread environment:
Scenario lameiro#1 - one-time failure:
t1 changes arguments of OCIHandleAlloc;
t2 calls oci.OCIHandleAlloc(), expecting to call original one, fails
with exception;
t1 restores arguments of OCIHandleAlloc.
Scenario lameiro#2 - failure till process restart:
t1 changes arguments of OCIHandleAlloc to wrapped(o->w1);
t2 changes arguments of OCIHandleAlloc to new wrapped(w1->w2);
t1 restores arguments of OCIHandleAlloc to original(w1->o);
t2 restores arguments of OCIHandleAlloc to wrapped(w2->w1).
As a result, original args for OCIHandleAlloc are nowhere to be found
and library fails to connect to DB.
Proposed solution is to create copies of args instead of modifying
global state.
oci_generated_10.py
_libs["libclntsh.so.10.1"]
oci_generated_11.py
_libs["libclntsh.so.11.1"]
on windows it's "oci.dll" not "libclntsh*".
also see:http://docs.oracle.com/cd/B28359_01/appdev.111/b28390/install.htm
The text was updated successfully, but these errors were encountered: