redis-benchmarks-specification 0.1.335__py3-none-any.whl → 0.1.337__py3-none-any.whl

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.

Potentially problematic release.


This version of redis-benchmarks-specification might be problematic. Click here for more details.

@@ -1482,7 +1482,9 @@ def process_self_contained_coordinator_stream(
1482
1482
  default_metrics = get_defaults_result[2]
1483
1483
  else:
1484
1484
  default_metrics = []
1485
- logging.warning("get_defaults returned fewer values than expected, using empty default_metrics")
1485
+ logging.warning(
1486
+ "get_defaults returned fewer values than expected, using empty default_metrics"
1487
+ )
1486
1488
 
1487
1489
  # For memory comparison mode, analyze datasets before starting
1488
1490
  if memory_comparison_only:
@@ -201,4 +201,10 @@ def create_self_contained_coordinator_args(project_name):
201
201
  default=None,
202
202
  help="Password for HTTP endpoint authentication. HTTP server is disabled if not provided.",
203
203
  )
204
+ parser.add_argument(
205
+ "--skip-clear-pending-on-startup",
206
+ default=False,
207
+ action="store_true",
208
+ help="Skip automatically clearing pending messages for this consumer on startup. By default, pending messages are cleared to recover from crashes.",
209
+ )
204
210
  return parser
@@ -99,6 +99,50 @@ def get_runners_consumer_group_name(running_platform):
99
99
  return consumer_group_name
100
100
 
101
101
 
102
+ def clear_pending_messages_for_consumer(conn, running_platform, consumer_pos):
103
+ """Clear all pending messages for a specific consumer on startup"""
104
+ consumer_group_name = get_runners_consumer_group_name(running_platform)
105
+ consumer_name = "{}-self-contained-proc#{}".format(
106
+ consumer_group_name, consumer_pos
107
+ )
108
+
109
+ try:
110
+ # Get pending messages for this specific consumer
111
+ pending_info = conn.xpending_range(
112
+ STREAM_KEYNAME_NEW_BUILD_EVENTS,
113
+ consumer_group_name,
114
+ min="-",
115
+ max="+",
116
+ count=1000, # Get up to 1000 pending messages
117
+ consumername=consumer_name,
118
+ )
119
+
120
+ if pending_info:
121
+ message_ids = [msg["message_id"] for msg in pending_info]
122
+ logging.info(
123
+ f"Found {len(message_ids)} pending messages for consumer {consumer_name}. Clearing them..."
124
+ )
125
+
126
+ # Acknowledge all pending messages to clear them
127
+ ack_count = conn.xack(
128
+ STREAM_KEYNAME_NEW_BUILD_EVENTS, consumer_group_name, *message_ids
129
+ )
130
+
131
+ logging.info(
132
+ f"Successfully cleared {ack_count} pending messages for consumer {consumer_name}"
133
+ )
134
+ else:
135
+ logging.info(f"No pending messages found for consumer {consumer_name}")
136
+
137
+ except redis.exceptions.ResponseError as e:
138
+ if "NOGROUP" in str(e):
139
+ logging.info(f"Consumer group {consumer_group_name} does not exist yet")
140
+ else:
141
+ logging.warning(f"Error clearing pending messages: {e}")
142
+ except Exception as e:
143
+ logging.error(f"Unexpected error clearing pending messages: {e}")
144
+
145
+
102
146
  def process_self_contained_coordinator_stream(
103
147
  conn,
104
148
  datasink_push_results_redistimeseries,
@@ -75,6 +75,7 @@ from redis_benchmarks_specification.__self_contained_coordinator__.args import (
75
75
  from redis_benchmarks_specification.__self_contained_coordinator__.runners import (
76
76
  build_runners_consumer_group_create,
77
77
  get_runners_consumer_group_name,
78
+ clear_pending_messages_for_consumer,
78
79
  )
79
80
  from redis_benchmarks_specification.__setups__.topologies import get_topologies
80
81
 
@@ -649,6 +650,17 @@ def main():
649
650
  logging.info("checking build spec requirements")
650
651
  running_platform = args.platform_name
651
652
  build_runners_consumer_group_create(gh_event_conn, running_platform)
653
+
654
+ # Clear pending messages by default (unless explicitly skipped)
655
+ if not args.skip_clear_pending_on_startup:
656
+ consumer_pos = args.consumer_pos
657
+ logging.info("Clearing pending messages on startup (default behavior)")
658
+ clear_pending_messages_for_consumer(
659
+ gh_event_conn, running_platform, consumer_pos
660
+ )
661
+ else:
662
+ logging.info("Skipping pending message cleanup as requested")
663
+
652
664
  stream_id = None
653
665
  docker_client = docker.from_env()
654
666
  home = str(Path.home())
@@ -680,7 +692,9 @@ def main():
680
692
  default_metrics = get_defaults_result[2]
681
693
  else:
682
694
  default_metrics = []
683
- logging.warning("get_defaults returned fewer values than expected, using empty default_metrics")
695
+ logging.warning(
696
+ "get_defaults returned fewer values than expected, using empty default_metrics"
697
+ )
684
698
 
685
699
  # Consumer id
686
700
  consumer_pos = args.consumer_pos
@@ -2271,14 +2285,14 @@ def filter_test_files(
2271
2285
  continue
2272
2286
 
2273
2287
  if command_groups_regexp is not None:
2274
- logging.info(
2288
+ logging.debug(
2275
2289
  "Filtering all test command groups via a regular expression: {}".format(
2276
2290
  command_groups_regexp
2277
2291
  )
2278
2292
  )
2279
2293
  if "tested-groups" in benchmark_config:
2280
2294
  command_groups = benchmark_config["tested-groups"]
2281
- logging.info(
2295
+ logging.debug(
2282
2296
  f"The file {test_file} (test name = {test_name}) contains the following groups: {command_groups}"
2283
2297
  )
2284
2298
  groups_regex_string = re.compile(command_groups_regexp)
@@ -2287,14 +2301,14 @@ def filter_test_files(
2287
2301
  match_obj = re.search(groups_regex_string, command_group)
2288
2302
  if match_obj is not None:
2289
2303
  found = True
2290
- logging.info(f"found the command group {command_group}")
2304
+ logging.debug(f"found the command group {command_group}")
2291
2305
  if found is False:
2292
2306
  logging.info(
2293
2307
  f"Skipping {test_file} given the following groups: {command_groups} does not match command group regex {command_groups_regexp}"
2294
2308
  )
2295
2309
  continue
2296
2310
  else:
2297
- logging.warning(
2311
+ logging.debug(
2298
2312
  f"The file {test_file} (test name = {test_name}) does not contain the property 'tested-groups'. Cannot filter based uppon groups..."
2299
2313
  )
2300
2314
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.1.335
3
+ Version: 0.1.337
4
4
  Summary: The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute.
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
@@ -26,9 +26,9 @@ redis_benchmarks_specification/__init__.py,sha256=YQIEx2sLPPA0JR9OuCuMNMNtm-f_gq
26
26
  redis_benchmarks_specification/__runner__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
27
27
  redis_benchmarks_specification/__runner__/args.py,sha256=K3VGmBC0-9lSv9H6VDp0N-6FGMWvc_4H0pG_TOXN5u8,11312
28
28
  redis_benchmarks_specification/__runner__/remote_profiling.py,sha256=R7obNQju8mmY9oKkcndjI4aAuxi84OCLhDSqqaYu1SU,18610
29
- redis_benchmarks_specification/__runner__/runner.py,sha256=bbd-7vwsu8YNhQ02J5T-Hxgt5E8n03Ty6rif9gUYi24,156323
29
+ redis_benchmarks_specification/__runner__/runner.py,sha256=JW2fB0C6Ce4d6VVQK50qNqpSNGEjq6QVjowUMUA0gzs,156345
30
30
  redis_benchmarks_specification/__self_contained_coordinator__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
31
- redis_benchmarks_specification/__self_contained_coordinator__/args.py,sha256=1LePhRkDsoMPFclM_DoXBIoMBN8zcVoQMnm9wTK5Uqw,6961
31
+ redis_benchmarks_specification/__self_contained_coordinator__/args.py,sha256=Rkajbvb-R4aEJd01gHNbAWrKuiqycHNfKVdO28nDEjI,7244
32
32
  redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py,sha256=OVHqJzDgeSSRfUSiKp1ZTAVv14PvSbk-5yJsAAoUfpw,936
33
33
  redis_benchmarks_specification/__self_contained_coordinator__/build_info.py,sha256=vlg8H8Rxu2falW8xp1GvL1SV1fyBguSbz6Apxc7A2yM,2282
34
34
  redis_benchmarks_specification/__self_contained_coordinator__/clients.py,sha256=EL1V4-i-tTav1mcF_CUosqPF3Q1qi9BZL0zFajEk70c,1878
@@ -36,8 +36,8 @@ redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py,sha256=s
36
36
  redis_benchmarks_specification/__self_contained_coordinator__/docker.py,sha256=09SyAfqlzs1KG9ZAajClNWtiNk4Jqzd--4-m3n1rLjU,3156
37
37
  redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py,sha256=sVLKNnWdAqYY9DjVdqRC5tDaIrVSaI3Ca7w8-DQ-LRM,776
38
38
  redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py,sha256=1UeFr2T1ZQBcHCSd4W1ZtaWgXyFPfjLyDi_DgDc1eTA,2957
39
- redis_benchmarks_specification/__self_contained_coordinator__/runners.py,sha256=F11zO_ILnpmiVwTeCQnP5nDHQk3kNnajPftwKsbhlXE,30209
40
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=gJPzG-L0QBJtwImf0rTMvmXua-4jfhznCrBl84XF-Fk,112052
39
+ redis_benchmarks_specification/__self_contained_coordinator__/runners.py,sha256=agom6H0iDUH_oQkObS8EtoAm0JUpTVeiBv-EMEnEMtY,31908
40
+ redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=l7OvqbF86l7YhwQQ80En5uxECxytvqlW7NeW43q6YUM,112547
41
41
  redis_benchmarks_specification/__setups__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  redis_benchmarks_specification/__setups__/topologies.py,sha256=xQ1IJkcTji_ZjLiJd3vOxZpvbNtBLZw9cPkw5hGJKHU,481
43
43
  redis_benchmarks_specification/__spec__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
@@ -282,8 +282,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-st
282
282
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml,sha256=2egtIxPxCze2jlbAfgsk4v9JSQHNMoPLbDWFEW8olDg,7006
283
283
  redis_benchmarks_specification/test-suites/template.txt,sha256=ezqGiRPOvuSDO0iG7GEf-AGXNfHbgXI89_G0RUEzL88,481
284
284
  redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=PD7ow-k4Ll2BkhEC3aIqiaCZt8Hc4aJIp96Lw3J3mcI,791
285
- redis_benchmarks_specification-0.1.335.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
286
- redis_benchmarks_specification-0.1.335.dist-info/METADATA,sha256=3NbfRGc61aaz5PFZY84H6E7hY6Qh_845lo0k4dX6vYU,22768
287
- redis_benchmarks_specification-0.1.335.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
288
- redis_benchmarks_specification-0.1.335.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
289
- redis_benchmarks_specification-0.1.335.dist-info/RECORD,,
285
+ redis_benchmarks_specification-0.1.337.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
286
+ redis_benchmarks_specification-0.1.337.dist-info/METADATA,sha256=MwhGo3EAg1Au3m-RJ41H-Bi400Fj4d4xjGqcRxgGNLQ,22768
287
+ redis_benchmarks_specification-0.1.337.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
288
+ redis_benchmarks_specification-0.1.337.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
289
+ redis_benchmarks_specification-0.1.337.dist-info/RECORD,,