redis-benchmarks-specification 0.1.335__py3-none-any.whl → 0.1.336__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
@@ -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.336
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=e60Juo_zq-gSD4SPGwprFGamwYt5zLet47SkLl2TcWQ,112546
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.336.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
286
+ redis_benchmarks_specification-0.1.336.dist-info/METADATA,sha256=hM1VX_8NMVcnRebZ26eX7WOZ2Zga0G06PYsV5FFJ114,22768
287
+ redis_benchmarks_specification-0.1.336.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
288
+ redis_benchmarks_specification-0.1.336.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
289
+ redis_benchmarks_specification-0.1.336.dist-info/RECORD,,