Spring Cloud Data Flow: невозможно передать список, разделенный запятыми, для аннотации задания
Я использую Spring Cloud Data Flow Java Task DSL для запуска Spring Cloud Flow Tasks в Kubernetes.
Все работает как положено и pod успешно запускается; однако, когда я пытаюсь запустить модуль, передавая аннотации задания, разделенные запятыми, в качестве входных параметров, как показано ниже (значение1, значение2), запуск модуля завершается неудачно:
Map<String, String> taskLaunchProperties = new DeploymentPropertiesBuilder()
.put("deployer.mytask.kubernetes.jobAnnotations", "myAnnotation:value1,value2").build();
Попытка запустить задачу с указанными выше параметрами приводит к следующему исключению:
Исключение HTTP при попытке запуска задачи. Основная причина: [{"logref":"IllegalArgumentException","message":"Неверное значение аннотации: value2","links":[]}]
Однако тот же код отлично работает, если я передаю только одно значение аннотации (т.е. значение1):
Map<String, String> taskLaunchProperties = new DeploymentPropertiesBuilder()
.put("deployer.mytask.kubernetes.jobAnnotations", "myAnnotation:value1").build();
При дальнейшем копании я обнаружил, что основной причиной проблемы является класс PropertyParseUtils , используемый Spring Cloud Data Flow для анализа входных свойств:
public static Map<String, String> getStringPairsToMap(String stringPairs) {
Map<String, String> mapValue = new HashMap<>();
if (StringUtils.hasText(stringPairs)) {
String[] pairs = stringPairs.split(",");
for (String pair : pairs) {
String[] splitString = pair.split(":", 2);
Assert.isTrue(splitString.length == 2, String.format("Invalid annotation value: %s", pair));//This is the line that prevents me from passing a comma seperated list of values for an annotaiton
mapValue.put(splitString[0].trim(), splitString[1].trim());
}
}
return mapValue;
}
То, как был написан код в приведенном выше классе (см.
Assert.isTrue
оператор), он никогда не позволит передать список, разделенный запятыми, для данной аннотации.
Вопрос: Как мы можем передать список значений, разделенных запятыми, для аннотации при использовании Spring Cloud Data Flow?