0

在 Redmine 问题更新后,我们正在使用 API 获取新数据。在某些情况下,我们不会获取正确的数据:更新后的数据不会出现在结果中。有什么问题?

为了详细解释,我们使用自定义 Redmine 插件在更新问题时调用远程 Web 服务。

Issue.after_update do |obj|
    logger.info "####REF OBJ :#{obj.inspect}"
    logger.info "####REF DB  :#{Issue.find(obj.id).inspect}"
    client.updated_ticket_event_request(obj)
end

我们确切的 Redmine 环境是 Redmine 版本 2.6.1.stable、Ruby 版本 2.0.0-p648 (2015-12-16)、Rails 版本 3.2.22.2。远程 Web 服务是一个 Java 应用程序,它使用 Java Redmine API ( https://github.com/taskadapter/redmine-java-api ) 获取更新的问题。

final Issue redmineIssue = fetchIssue(context, id, includes ); // RedmineManager.getIssueManager().getIssueById(id, includes)
final Ticket ticket = buildTicket(context, redmineIssue); // Building our own object
LOGGER.debug("Fetched ticket: "+ticket);

现在,在以下日志中,请注意受让人标识符。

在 Redmine 日志中:

####REF OBJ :#<Issue id: 5510, tracker_id: 5, project_id: 27, subject: "TEST08", description: "desc test 08", due_date: nil, category_id: nil, status_id: 1, assigned_to_id: 176, priority_id: 2, fixed_version_id: nil, author_id: 1, lock_version: 2, created_on: "2017-06-08 14:47:19", updated_on: "2017-06-08 14:48:21", start_date: nil, done_ratio: 0, estimated_hours: nil, parent_id: nil, root_id: 5510, lft: 10165, rgt: 10166, is_private: false, closed_on: nil, sprint_id: nil, position: 4764>
####REF DB  :#<Issue id: 5510, tracker_id: 5, project_id: 27, subject: "TEST08", description: "desc test 08", due_date: nil, category_id: nil, status_id: 1, assigned_to_id: 176, priority_id: 2, fixed_version_id: nil, author_id: 1, lock_version: 2, created_on: "2017-06-08 14:47:19", updated_on: "2017-06-08 14:48:21", start_date: nil, done_ratio: 0, estimated_hours: nil, parent_id: nil, root_id: 5510, lft: 10165, rgt: 10166, is_private: false, closed_on: nil, sprint_id: nil, position: 4764>

在 Java 应用程序日志中:

16:48:21.591 DEBUG Fetched ticket: [Ticket - Id = 5510 - Title = TEST08 - Description = desc test 08 - Assignees = PersonId{110} - Priority = 2 - Creator = 1 - Creation date = 2017-06-08T14:47:19Z]

虽然在 Redmine 数据库中我们确实有 assignee=176,但通过 Web 服务 API 我们得到了 assignee=110,这是更新前的值。第二次获取问题,我们得到了分配者的正确值。

该行为并不总是可重现的。大多数时候,我们确实有正确的行为。

4

0 回答 0