Commit a8359fd
fix(redis): build ClusterPipeline span metadata from _execution_strategy in redis-py 6+ (#4728)
* fix(redis): build ClusterPipeline span metadata from _execution_strategy in redis-py 6+
redis-py 6 refactored ClusterPipeline so that queued commands are no
longer appended to `command_stack`; they now live on
`_execution_strategy.command_queue`. As a result the redis instrumentor
emitted ClusterPipeline spans with an empty DB_STATEMENT and a
`db.redis.pipeline_length` of 0.
`_build_span_meta_data_for_pipeline` now reads commands from
`_execution_strategy.command_queue` when present, falling back to
`command_stack` / `_command_stack` for non-cluster pipelines and older
redis-py versions.
Fixes #4084
* chore(redis): rename changelog fragment to PR number
* test(redis): add docker regression test for ClusterPipeline span metadata
Exercises a real RedisCluster pipeline and asserts the redis-py 6+ code
path (command_stack empty, _execution_strategy.command_queue populated)
is genuinely hit before checking the emitted span statement and
db.redis.pipeline_length. Guards against regression #4084.
* Bump redis-py to 6.4.0 in docker tests so the ClusterPipeline regression test exercises the redis-py 6+ code path
* Fix RediSearch import for redis-py 6+ in docker tests
redis-py 6.x renamed redis.commands.search.indexDefinition to
index_definition (snake_case). The camelCase module was removed, so
bumping redis to 6.4.0 broke collection of the entire redis functional
test module. IndexDefinition/IndexType are unchanged in the new module.
* fix(redis): read async ClusterPipeline commands from private _command_queue
The redis-py 6+ sync cluster strategy exposes queued commands via a public
command_queue property, but the async cluster strategy only exposes the
private _command_queue attribute. Reading only command_queue left the async
ClusterPipeline span with an empty statement and a default "redis" name once
the docker tests were bumped to redis-py 6.4.0. Resolve _command_queue as a
fallback so both sync and async cluster pipelines populate span metadata.
---------
Co-authored-by: Tammy Baylis <96076570+tammy-baylis-swi@users.noreply.github.com>
Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
Co-authored-by: Lukas Hering <40302054+herin049@users.noreply.github.com>1 parent 79f9e57 commit a8359fd
5 files changed
Lines changed: 158 additions & 7 deletions
File tree
- .changelog
- instrumentation/opentelemetry-instrumentation-redis
- src/opentelemetry/instrumentation/redis
- tests
- tests/opentelemetry-docker-tests/tests
- redis
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
Lines changed: 19 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
214 | | - | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
215 | 229 | | |
216 | 230 | | |
217 | 231 | | |
| |||
Lines changed: 100 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
25 | 28 | | |
26 | 29 | | |
27 | 30 | | |
| |||
1649 | 1652 | | |
1650 | 1653 | | |
1651 | 1654 | | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
Lines changed: 37 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
228 | 264 | | |
229 | 265 | | |
230 | 266 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
0 commit comments