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)