Skip to content

Commit 9022f11

Browse files
authored
Instrument New Redis Methods (#1743)
* Sort redis cluster ignored methods * Ignore new keyspace pubsub wrapper * Add instrumentation for new Redis methods (Redis v8.8.0 & redis-py v8.0.0) * Mark nginx tests as non-blocking for now
1 parent ef3afa0 commit 9022f11

4 files changed

Lines changed: 80 additions & 58 deletions

File tree

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
- mongodb8
6262
- mssql
6363
- mysql
64-
- nginx
64+
# - nginx
6565
- oracledb
6666
- postgres9
6767
- postgres16

newrelic/hooks/datastore_redis.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,30 @@
130130
"alter_schema_add",
131131
"alter",
132132
"append",
133+
"arcount",
134+
"ardel",
135+
"ardelrange",
136+
"arget",
137+
"argetrange",
138+
"argrep",
139+
"arinfo",
140+
"arinsert",
141+
"arlastitems",
142+
"arlen",
143+
"armget",
144+
"armset",
145+
"arnext",
146+
"arop",
133147
"arrappend",
134148
"arrindex",
149+
"arring",
135150
"arrinsert",
136151
"arrlen",
137152
"arrpop",
138153
"arrtrim",
154+
"arscan",
155+
"arseek",
156+
"arset",
139157
"bgsave",
140158
"bitcount",
141159
"bitfield_ro",
@@ -288,6 +306,7 @@
288306
"incr",
289307
"incrby",
290308
"incrbyfloat",
309+
"increx",
291310
"info",
292311
"initbydim",
293312
"initbyprob",
@@ -465,6 +484,7 @@
465484
"xinfo_help",
466485
"xinfo_stream",
467486
"xlen",
487+
"xnack",
468488
"xpending_range",
469489
"xpending",
470490
"xrange",

tests/datastore_redis/test_uninstrumented_methods.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"get_relation",
6969
"get_retry",
7070
"index_name",
71+
"keyspace_notifications",
7172
"labels",
7273
"list_keys",
7374
"load_document",

tests/datastore_rediscluster/test_uninstrumented_rediscluster_methods.py

Lines changed: 58 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,21 @@
2121
client = redis.RedisCluster(host=DB_CLUSTER_SETTINGS["host"], port=DB_CLUSTER_SETTINGS["port"], socket_timeout=5)
2222

2323
IGNORED_METHODS = {
24+
"ALL_NODES",
25+
"CLUSTER_COMMANDS_RESPONSE_CALLBACKS",
26+
"COMMAND_FLAGS",
27+
"DEFAULT_NODE",
28+
"ERRORS_ALLOW_RETRY",
2429
"MODULE_CALLBACKS",
2530
"MODULE_VERSION",
2631
"NAME",
32+
"NODE_FLAGS",
33+
"PRIMARIES",
34+
"RANDOM",
35+
"REPLICAS",
36+
"RESPONSE_CALLBACKS",
37+
"RESULT_CALLBACKS",
38+
"SEARCH_COMMANDS",
2739
"add_edge",
2840
"add_node",
2941
"append_bucket_size",
@@ -41,67 +53,15 @@
4153
"BatchIndexer",
4254
"bulk",
4355
"call_procedure",
56+
"client_no_touch",
4457
"client_tracking_off",
4558
"client_tracking_on",
4659
"client",
4760
"close",
48-
"commandmixin",
49-
"connection_pool",
50-
"connection",
51-
"debug_segfault",
52-
"edges",
53-
"execute_command",
54-
"flush",
55-
"from_url",
56-
"get_connection_kwargs",
57-
"get_encoder",
58-
"get_label",
59-
"get_params_args",
60-
"get_property",
61-
"get_relation",
62-
"get_retry",
63-
"hscan_iter",
64-
"index_name",
65-
"labels",
66-
"list_keys",
67-
"load_document",
68-
"load_external_module",
69-
"lock",
70-
"maint_notifications_config",
71-
"name",
72-
"nodes",
73-
"parse_response",
74-
"pipeline",
75-
"property_keys",
76-
"register_script",
77-
"relationship_types",
78-
"response_callbacks",
79-
"RESPONSE_CALLBACKS",
80-
"sentinel",
81-
"set_file",
82-
"set_path",
83-
"set_response_callback",
84-
"set_retry",
85-
"transaction",
86-
"version",
87-
"ALL_NODES",
88-
"CLUSTER_COMMANDS_RESPONSE_CALLBACKS",
89-
"COMMAND_FLAGS",
90-
"DEFAULT_NODE",
91-
"ERRORS_ALLOW_RETRY",
92-
"NODE_FLAGS",
93-
"PRIMARIES",
94-
"RANDOM",
95-
"REPLICAS",
96-
"RESULT_CALLBACKS",
97-
"RedisClusterRequestTTL",
98-
"SEARCH_COMMANDS",
99-
"client_no_touch",
10061
"cluster_addslotsrange",
10162
"cluster_bumpepoch",
10263
"cluster_delslotsrange",
10364
"cluster_error_retry_attempts", # Deprecated in redis-py v5.3.0
104-
"retry", # Use instead of cluster_error_retry_attempts after v5.3.0
10565
"cluster_flushslots",
10666
"cluster_links",
10767
"cluster_myid",
@@ -111,39 +71,80 @@
11171
"cluster_setslot_stable",
11272
"cluster_shards",
11373
"command_flags",
74+
"commandmixin",
11475
"commands_parser",
76+
"connection_pool",
77+
"connection",
78+
"debug_segfault",
11579
"determine_slot",
11680
"disconnect_connection_pools",
81+
"edges",
11782
"encoder",
83+
"execute_command",
84+
"flush",
85+
"from_url",
86+
"get_connection_kwargs",
11887
"get_default_node",
119-
"get_node",
88+
"get_encoder",
89+
"get_label",
12090
"get_node_from_key",
121-
"get_nodes",
91+
"get_node",
12292
"get_nodes_from_slot",
93+
"get_nodes",
94+
"get_params_args",
12395
"get_primaries",
96+
"get_property",
12497
"get_random_node",
12598
"get_random_primary_node",
12699
"get_random_primary_or_all_nodes",
127100
"get_redis_connection",
101+
"get_relation",
128102
"get_replicas",
103+
"get_retry",
129104
"get_special_nodes",
105+
"hscan_iter",
106+
"index_name",
130107
"keyslot",
108+
"keyspace_notifications",
109+
"labels",
110+
"list_keys",
111+
"load_balancing_strategy", # Use instead of read_from_replicas after v5.3.0
112+
"load_document",
113+
"load_external_module",
114+
"lock",
115+
"maint_notifications_config",
131116
"mget_nonatomic",
132117
"monitor",
133118
"mset_nonatomic",
119+
"name",
134120
"node_flags",
135121
"nodes_manager",
122+
"nodes",
136123
"on_connect",
124+
"parse_response",
125+
"pipeline",
126+
"property_keys",
137127
"pubsub",
138128
"read_from_replicas", # Deprecated in redis-py v5.3.0
139-
"load_balancing_strategy", # Use instead of read_from_replicas after v5.3.0
129+
"RedisClusterRequestTTL",
130+
"register_script",
140131
"reinitialize_counter",
141132
"reinitialize_steps",
133+
"relationship_types",
142134
"replace_default_node",
135+
"response_callbacks",
143136
"result_callbacks",
137+
"retry", # Use instead of cluster_error_retry_attempts after v5.3.0
138+
"sentinel",
144139
"set_default_node",
145-
"user_on_connect_func",
140+
"set_file",
141+
"set_path",
142+
"set_response_callback",
143+
"set_retry",
146144
"startup_nodes",
145+
"transaction",
146+
"user_on_connect_func",
147+
"version",
147148
}
148149

149150
REDIS_MODULES = {"bf", "cf", "cms", "ft", "graph", "json", "tdigest", "topk", "ts", "vset"}

0 commit comments

Comments
 (0)