This is an automated email from the ASF dual-hosted git repository.

GGraziadei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/master by this push:
     new d6d15d084 Reinstate ordering of arguments in `bin/storm.py` (#8971)
d6d15d084 is described below

commit d6d15d0845c631d97edd9251d083ff61d31373be
Author: sergio <[email protected]>
AuthorDate: Tue Aug 11 07:40:22 2026 +0200

    Reinstate ordering of arguments in `bin/storm.py` (#8971)
    
    * [Fix] Reinstate ordering of arguments
    
    * Use counter-based filter, fall back to old functioning
---
 bin/storm.py | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/bin/storm.py b/bin/storm.py
index eb1afa2f8..55c211df8 100755
--- a/bin/storm.py
+++ b/bin/storm.py
@@ -23,6 +23,7 @@ import os
 import shlex
 import subprocess
 import sys
+from collections import Counter
 from random import randint
 
 from argparse import HelpFormatter
@@ -1425,6 +1426,40 @@ def monitor(args):
         extrajars=[USER_CONF_DIR, STORM_BIN_DIR])
 
 
+def merge_args_and_preserve_order(sys_args, known_args, unknown_args):
+    """
+    Attributes:
+     - sys_args: original system arguments
+     - known_args: tokens argparse recognized as a declared option or 
positional (e.g. raw_args.main_args
+       before reconstruction)
+     - unknown_args: tokens argparse did not recognize, as returned by 
parse_known_args()
+
+    Returns:
+        - merged: list containing tokes in the order they appear originally in 
sys_args, followed by any
+          tokens from known_args/unknown_args that could not be matched 
against sys_args (e.g. because they
+          were injected programmatically rather than typed on the command 
line).
+    """
+
+    known_args = list(known_args)
+    unknown_args = list(unknown_args)
+    remaining = Counter(known_args) + Counter(unknown_args)
+    merged = []
+
+    # Reorder 
+    for token in sys_args:
+        if remaining[token] > 0:
+            remaining[token] -= 1
+            merged.append(token)
+
+    if sum(remaining.values()) > 0:
+        for token in known_args + unknown_args:
+            if remaining[token] > 0:
+                remaining[token] -= 1
+                merged.append(token)
+
+    return merged
+
+
 def main():
     init_storm_env()
     storm_parser = initialize_main_command()
@@ -1433,7 +1468,7 @@ def main():
         sys.exit(1)
     raw_args, unknown_args = storm_parser.parse_known_args()
     if hasattr(raw_args, "main_args"):
-        raw_args.main_args += unknown_args
+        raw_args.main_args = merge_args_and_preserve_order(sys.argv, 
raw_args.main_args, unknown_args)
     raw_args.func(raw_args)
 
 

Reply via email to