Menu

#1143 Проблема при обновлении исполнителя

v4.3
closed-fixed
kanaal
None
5
2016-07-05
2016-06-27
Dofs
No

Когда пытался в ExecutorDAO.update добавить код
if (SystemExecutors.PROCESS_STARTER_NAME.equals(oldExecutor.getName())) {
throw new AuthorizationException(oldExecutor.getName() + " can not be updated");
}
, то с удивлением обнаружил что объект из кеша совпадает с пришедшим аргументом (в аттаче).
Т.е. T oldExecutor = (T) getExecutor(newExecutor.getId()); не имеет смысла
и действительно зависимый от него код дальше не отрабатывает, в т.ч.:
вместо понятной ExecutorAlreadyExistsException получаем ORA-00001: нарушено ограничение уникальности (RUNAWFE.SYS_C0012384) при попытке переименовать в исполнителя с существующим логином (в аттаче)
можно завести пользователей с одинаковыми кодами

Discussion

  • Dofs

    Dofs - 2016-06-28

    Может быть раньше объекты проходили через сериалтизацию/десериализацию и были соответственно разными объектами, а сейчас через уровень делегатов отдаётся тот же объект, что вернул кеш

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-06-29
    • assigned_to: Dofs --> kanaal
     
  • kanaal

    kanaal - 2016-07-03

    Сделал клонирование в кеше исполнителей.

     
  • kanaal

    kanaal - 2016-07-03
    • status: open --> pending-fixed
     
  • vromav

    vromav - 2016-07-05

    Проверил одинаковые коды при создании и изменении пользователей.
    В версии 4.2.1, это было разрешено.
    В текущей версии - запрещено.

     
  • vromav

    vromav - 2016-07-05
    • status: pending-fixed --> closed-fixed