Ошибка при вызове функции writeWfLog, access denied (ReflectPermission, suppressAccessChecks)

отредактировано 6 окт Раздел: Прочие темы

При вызове writeWfLog в логах ошибка:

java.lang.IllegalArgumentException: java.io.IOException: java.security.AccessControlException: access denied ("java.lang.reflect.ReflectPermission" "suppressAccessChecks")
    at org.redisson.command.CommandAsyncService.encodeMapValue(CommandAsyncService.java:796)
    at org.redisson.RedissonObject.encodeMapValue(RedissonObject.java:351)
    at org.redisson.RedissonMap.encodeMapKeys(RedissonMap.java:1062)
    at org.redisson.RedissonMap.putAllOperationAsync(RedissonMap.java:786)
    at org.redisson.RedissonMap.putAllAsync(RedissonMap.java:727)
    at org.redisson.RedissonMap.putAll(RedissonMap.java:680)
    at pro.greendata.core.service.impl.RedisServiceImpl.batchPutAllInternal(RedisServiceImpl.java:152)
    at pro.greendata.core.service.impl.RedisServiceImpl.batchPutAll(RedisServiceImpl.java:91)
    at pro.greendata.core.util.cache.CacheUtils.putAll(CacheUtils.java:87)
    at pro.greendata.core.util.cache.CacheUtils.populateCaches(CacheUtils.java:777)
    at pro.greendata.core.util.cache.CacheUtils.getFromCacheOrSupplyWithoutSync(CacheUtils.java:635)
    at pro.greendata.core.util.cache.CacheUtils.getFromCacheOrSupply(CacheUtils.java:615)
    at pro.greendata.core.util.cache.CacheUtils.getFromCacheOrSupply(CacheUtils.java:591)
    at pro.greendata.settings.service.impl.SysSettingServiceImpl.getValue(SysSettingServiceImpl.java:199)
    at pro.greendata.settings.service.impl.SysSettingServiceImpl.getLogSettings(SysSettingServiceImpl.java:113)
    at pro.greendata.wf.service.impl.WfLogServiceImpl.checkLogLevel(WfLogServiceImpl.java:48)
    at pro.greendata.wf.service.impl.WfLogServiceImpl.writeLog(WfLogServiceImpl.java:42)
    at pro.greendata.core.gdsl.wf.BaseWfSource.writeWfLog(BaseWfSource.java:120)
    at pro.greendata.gdsl.DslScript.writeWfLog(DslScript.groovy:3472)

Весь стектрейс - в файле
Функция вызывается так:

def o := currentObject()
writeWfLog("INFO", o, "13:34 6 октября", "Комментарий")

Воспроизводится на версиях LTS.468.4, LTS.466.13, LTS.465.4
Кэш обновлялся кнопкой в реестре типов объектов. Кэш редиса сбрасывался командой valkey-cli flushall.
С чем может быть связана эта ошибка?

Комментарии

  • В облаке, app.greendata.ru, не воспроизводится, алгоритм работает без ошибок

  • Если Платформа запущена без Redis, то другая ошибка:

    BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of org.joda.time.DateTime. Use setObject() with an explicit Types value to specify the type to use.
        at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
        at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1577)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:669)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:962)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:983)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:331)
        at pro.greendata.jdbc.core.namedparam.JodaNamedParameterJdbcTemplate.update(JodaNamedParameterJdbcTemplate.java:323)
        at pro.greendata.wf.service.impl.WfLogServiceImpl.saveLog(WfLogServiceImpl.java:60)
        at pro.greendata.wf.service.impl.WfLogServiceImpl.writeLog(WfLogServiceImpl.java:43)
        at pro.greendata.core.gdsl.wf.BaseWfSource.writeWfLog(BaseWfSource.java:120)
        at pro.greendata.gdsl.DslScript.writeWfLog(DslScript.groovy:3472)
    

    Стектрейс - в файле

    app.log 27.2K
  • Спасибо за информацию, проверим и сообщим по результатам.

  • Добрый день. Ошибка исправлена. Вы можете скачать и установить версию 4.469.9 по публичной ссылке dockerhub.greendatasoft.ru/public/platform:lts.469.6

  • Супер! Спасибо 🌹

  • отредактировано 21 окт

    (!) Не связано с темой, просто наблюдение на этой версии

    lts.469.6

    При сохранении пользователя (в такой последовательности: Создать пользователя - Создать нового сотрудника - Сохранить сотрудника - Сохранить пользователя) в браузере ошибка "Системное уведомление. Не удалось разобрать JSON". В логах на сервере такой WARN:

    2025-10-21 14:07:47.422  WARN 10 --- [ XNIO-1 task-16] p.g.core.web.rest.RestErrorHandler       : RqstUsr:id_852822. traceId:HJDi2XfH RUID:989f7215-318a-4b65-b039-61088ef6919e, User:id_852822, Url:POST https://localhost/api/sys/algorithm/meta/visual/visItem, handleHttpMessageNotReadable
    
    org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.Long` from String "9a6ffda5-bae2-4337-a99a-3bfe1fce2650": not a valid `java.lang.Long` value; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.lang.Long` from String "9a6ffda5-bae2-4337-a99a-3bfe1fce2650": not a valid `java.lang.Long` value
     at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 24] (through reference chain: pro.greendata.core.web.rest.dto.algorithm.visual.item.VisItemAlgInfoDto["visItemId"])
        at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:391)
        at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:343)
        at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)
    

    Пользователь при этом сохраняется, всё ок. При следующих изменениях этого пользователя/сотрудника такой ошибки нет
    Полный стектрейс: https://pastebin.com/raw/eU5vaR8i
    Воспроизвелось два раза

  • (в такой последовательности: Создать пользователя - Создать нового сотрудника - Сохранить сотрудника - Сохранить пользователя)

    Это воспроизводится, если создать пользователя, и сохранить его, не добавляя Провайдер идентификации

  • Это воспроизводится, если создать пользователя, и сохранить его, не добавляя Провайдер идентификации

    Воспроизвелось при создании трёх пользователей, а следующие два пользователя создались без каких-либо ошибок 🤔

  • Добрый день! То есть сейчас проблема не воспроизводится?

  • отредактировано 23 окт

    сейчас проблема не воспроизводится?

    Да, проверил по тому же сценарию, создал ещё пару пользователей - всё ок
    Приложение при этом не перезапускалось, не обновлялось, не менялась его конфигурация. У нас нет предположений, почему вчера была "JSON parse error: Cannot deserialize value of type". Думал, что сегодня воспроизведу, попробую по стектрейсам и прочему понять. Но сегодня всё хорошо

  • Если вдруг проблема повторится, напишите, пожалуйста, на почту help@greendatasoft.ru с полным описанием действие, приложите логи и скрин ошибки.

Войдите или Зарегистрируйтесь чтобы комментировать.