Bug fix - Temporary solution to address positional arguments not working #245 #248
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note: These changes were originally raised in #245.
Bug
The positional parameter option currently does not work for Docker and Bash applications. For example, the wsclean_data_local.graph has the Docker-contained
wsclean
with the following input parameter that is marked as a positional parameter:However, the graph fails on deployment because the
msname
property is incorrectly processed as a keyword argument, even thought it is set as "positional" in the UI above. This leads to the-msname
property being passed towsclean
as opposed to just the file name:Root cause
This is due to us populating the cleaned
keyargs
dictionary with anyportkeyargs
that have been identified:daliuge/daliuge-engine/dlg/named_port_utils.py
Lines 294 to 299 in ba97608
The code correctly initialises
keyargs
by ensuring there are no"positional"
arguments; however, if theportkeyargs
contains any positional arguments that are also port names (such as in the case ofmsname
), then those arguments will be added tokeyargs
.Why is this issue suddenly happening now?

portkeyargs
is populated byidentify_named_ports()
. Previously, there was code that commented out adding positional port arguments to the returnedportargs
variable, which was uncommented in ad3d520:Solution
As a temporary fix, I've removed the code that was un-commented to return us to previous functionality.
Moving forward, we will want to consider a more holistic fix to update the way we coordinate named ports and keyword arguments.