Конфликт между LEAF и MAP после обновления spring-cloud-config-server - PullRequest
0 голосов
/ 11 ноября 2018

Я использую spring-cloud-config-server 1.2.2..RELEASE.

Мне нужно обновить его до более новой версии (например, 1.4.4..RELEASE, но проблема возникает и в последней версии)). Когда я попытался обновить версию и выполнил вызов конечной точки YAML сервера конфигурации (с запрошенным профилем тестирования), я получил ошибку (ClassCastException: java.lang.String cannot be cast to java.util.Map) в некоторых из моих свойств.

Эти свойства определены в application.yaml как LEAF:

logging.level.com.company: DEBUG

Но они определены как MAP в профиле YAML для моего приложения (application-test.yaml):

logging.level.com.company.salesforce.editor.service: DEBUG

Ранее я получил в ответе YAML что-то вроде:

logging:
    level:
        com:
            company: DEBUG
            company.salesforce.editor.service: DEBUG
  • Я отладил код spring-cloud-config-server, который обнаружил, что в EnvironmentController.java\convertToMap(Environment input, boolean resolvePlaceholders)() произошло значительное изменение (с 1.2.x до 1.3.x), которое, вероятно, вызвало его.

  • Я нашел эту проблему GitHub по аналогичной проблеме: ClassCastException с конкретными настройками ведения журнала Но это не помогло мне.

Как я могу использовать новую версию, но получить тот же ответ, что и в старой версии? Если это невозможно, какой еще способ я могу предпринять?

EDIT

Я создал демонстрационный проект, чтобы проиллюстрировать проблему - клонируйте его отсюда:

весна-облако-конфиг-сервера демо

(для конфигурации используется следующий git backend: spring-cloud-config-server-configurations )

Когда демонстрационный сервер запущен и работает, запросите его следующим образом:

curl http://localhost:8080/master/application-test.yaml

и вы получите эту ошибку:

java.lang.String cannot be cast to java.util.Map
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...