Skip to content

Commit 55317cf

Browse files
authored
Bump version to 2.10.1 (#731)
Restrict wrapt to <2.0.0 to fix TypeError when iterating DB cursors with opentelemetry-instrumentation-dbapi. Add integration test to cover the case.
1 parent e477a7c commit 55317cf

7 files changed

Lines changed: 46 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## Unreleased
44

5+
## 2.10.1 - 2026-04-23
6+
- Restrict `wrapt` to `<2.0.0` to fix `TypeError: 'TracedCursorProxy' object is not iterable` when using DB instrumentation on fresh installs ([upstream issue](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/4462))
7+
58
## 2.10.0 - 2026-04-21
69
- Upgrade Otel dependencies to [1.41.0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.41.0) / [0.62b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.62b0)
710
- Upgrade `protobuf` minimum version to 6.33.5 to address CVE-2026-0994

RELEASING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ How to release a new version of the `splunk-opentelemetry` project:
99
- `"opentelemetry-instrumentation==0.57b0"`
1010
3) Bump our version in __about__.py
1111
4) Update additional version string locations
12-
- `ott_lib.py` # this file is used as a library for integration tests
12+
- `tests/integration/lib.py` # this file is used as a library for integration tests
1313
- `docker/requirements.txt` # this file is used to build the docker init image for the operator
1414
- `docker/example-instrumentation.yaml` # this file is just an example but would be nice to show the latest version
1515
5) Add a new entry in CHANGELOG.md

docker/example-instrumentation.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ spec:
1111
env:
1212
- name: OTEL_EXPORTER_OTLP_PROTOCOL
1313
value: http/protobuf
14-
image: "splunk-otel-instrumentation-python:v2.10.0"
14+
image: "splunk-otel-instrumentation-python:v2.10.1"

docker/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
splunk-opentelemetry==2.10.0
1+
splunk-opentelemetry==2.10.1
22
opentelemetry-instrumentation-aio-pika==0.62b0
33
opentelemetry-instrumentation-aiohttp-client==0.62b0
44
opentelemetry-instrumentation-aiohttp-server==0.62b0

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies = [
3434
"opentelemetry-instrumentation-system-metrics==0.62b0",
3535
"opentelemetry-semantic-conventions==0.62b0",
3636
"protobuf>=6.33.5", # not our direct dep, prevents installing vulnerable proto versions (CVE‑2025‑4565, CVE-2026-0994)
37+
"wrapt>=1.0.0,<2.0.0", # wrapt 2 breaks TracedCursorProxy iteration in opentelemetry-instrumentation-dbapi 0.62b0
3738
]
3839

3940
[project.urls]

src/splunk_otel/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# limitations under the License.
1414

1515

16-
__version__ = "2.10.0"
16+
__version__ = "2.10.1"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from lib import project_path
2+
3+
if __name__ == "__main__":
4+
import sqlite3
5+
6+
from opentelemetry.instrumentation.dbapi import trace_integration
7+
8+
trace_integration(sqlite3, "connect", "sqlite")
9+
10+
conn = sqlite3.connect(":memory:")
11+
cursor = conn.cursor()
12+
cursor.execute("CREATE TABLE t (x INTEGER)")
13+
cursor.execute("INSERT INTO t VALUES (1)")
14+
cursor.execute("INSERT INTO t VALUES (2)")
15+
cursor.execute("SELECT * FROM t")
16+
17+
rows = list(cursor)
18+
assert rows == [(1,), (2,)], f"Expected [(1,), (2,)], got {rows}"
19+
20+
21+
class DbapiCursorIterOtelTest:
22+
def requirements(self):
23+
return (project_path(), "opentelemetry-instrumentation-dbapi")
24+
25+
def environment_variables(self):
26+
return {
27+
"OTEL_SERVICE_NAME": "dbapi-cursor-iter-test",
28+
"OTEL_PYTHON_DISABLED_INSTRUMENTATIONS": "system_metrics",
29+
}
30+
31+
def wrapper_command(self):
32+
return ""
33+
34+
def on_start(self):
35+
return None
36+
37+
def on_stop(self, telemetry, stdout: str, stderr: str, returncode: int) -> None:
38+
assert returncode == 0, f"Script failed with returncode {returncode}.\nstdout: {stdout}\nstderr: {stderr}"

0 commit comments

Comments
 (0)