恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
OpenProject 12.2.1 版本解析:活动记录数据损坏修复、期刊聚合机制与 HTTPS 配置变更
首页
资讯中心
/
OpenProject 12.2.1 版本解析:活动记录数据损坏修复、期刊聚合机制与 HTTPS 配置变更
OpenProject 12.2.1 版本解析:活动记录数据损坏修复、期刊聚合机制与 HTTPS 配置变更
发布时间:2026/9/15 23:11:44
OpenProject 12.2.1 版本解析活动记录数据损坏修复、期刊聚合机制与 HTTPS 配置变更【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openprojectOpenProject 12.2.1 是 2022-08-18 发布的紧急修复版本核心使命是修复 12.2.0 中可能随机损坏数据库活动记录activity records的关键缺陷同时引入全新的 HTTPS 配置项OPENPROJECT_HTTPS。本文以官方发布说明为主线结合当前仓库中的服务层实现、设置定义与安装文档深入拆解缺陷根因、期刊journal聚合的底层逻辑、升级与恢复方案以及不同部署形态下的 HTTPS 配置方法帮助读者理解该版本的技术全貌并安全完成升级。版本概览版本号12.2.1发布日期2022-08-18发布性质紧急缺陷修复critical bug fix主要变更修复 12.2.0 引入的活动记录数据损坏缺陷并附带数据恢复迁移引入OPENPROJECT_HTTPS环境变量规范非 HTTPS 场景下的配置方式附带若干界面与集成层面的缺陷修复。官方建议所有用户都应尽快升级到 12.2.1尚未升级到 12.2.0 的系统可直接升级到 12.2.1以完全规避该缺陷。关键缺陷12.2.0 中活动记录的数据损坏问题缺陷现象在 OpenProject 12.2.0 中一个关键缺陷可能导致数据库中的活动记录被随机损坏这些记录控制着工作包work package、会议meeting、Wiki 页面等对象的变更展示与聚合。当系统聚合一条活动即同一用户在前 5 分钟内多次编辑同一对象时可能误删错误的数据库对象导致后续更新该对象时抛出错误。典型症状该缺陷会以下列形式呈现无法访问通知中心页面保持空白工作包中无法看到活动记录对应社区工单 #43773更新已有工作包时出现内部错误internal errors。修复与恢复方案升级到 12.2.1 将修复该缺陷并附带一个迁移migration尝试为受影响的记录恢复被中断的活动intermediate activities。官方特别澄清最新版本本身未受影响你在系统中已做的所有变更仍然正确。但需要注意受影响的活动在恢复后可能缺失部分变更或包含来自先前/后续活动的变更。任何记录被恢复的活动都会附带一条说明该情况的备注note。对于 OpenProject 云客户受影响的记录已按相同方式恢复如果实例受此缺陷影响官方会单独联系告知。源码级原理期刊聚合Journal Aggregation机制要理解该缺陷为何发生需要先理解 OpenProject 的活动记录底层——期刊journal聚合机制。聚合逻辑位于 app/services/journals/create_service.rb其核心目标是同一用户在前 5 分钟内连续编辑同一对象时将多次变更合并进同一条期刊记录而不是为每次编辑都生成新记录从而避免活动时间线被琐碎编辑刷屏。聚合的判定条件从源码注释create_service.rb 第 70-84 行可以看到可聚合的前驱记录aggregatable predecessor必须同时满足以下条件期刊创建发生在配置的聚合时间窗口内由同一用户执行cause变更原因相同前驱记录与待创建记录之间只存在一条备注note前驱记录与待创建记录具有相同的权限限制restriction。def aggregatable?(predecessor, notes, internal, cause) predecessor aggregation_active? within_aggregation_time?(predecessor) # ... 同用户、同 cause、单条 note、相同 restriction 等条件 end聚合时间窗口的配置聚合时间窗口由设置项journal_aggregation_time_minutes控制其定义位于 config/constants/settings/definition.rb 第 730-733 行journal_aggregation_time_minutes: { default: 5, allowed: 0..120 }默认值 5分钟与发布说明中前 5 分钟内编辑同一对象的描述一致允许范围 0..120设置为0时聚合功能被关闭见aggregation_active?判断Setting.journal_aggregation_time_minutes.to_i 0在 create_service.rb 第 598-600 行 中within_aggregation_time?会优先读取journable类自身声明的聚合时间其次回退到全局设置。聚合的执行方式与缺陷风险点聚合执行的关键实现在 create_service.rb 第 86-105 行def create_journal(notes, internal, cause) predecessor aggregatable_predecessor(notes, internal, cause) log_journal_creation(predecessor) create_sql create_journal_sql(predecessor, notes, internal, cause) ... end源码注释第 78-79 行明确指出不是直接删除前驱记录而是先将其从创建 SQL 中剥离stripped再回填refilled这样用户持有的期刊引用可以保持不变。聚合结果由一条复杂 SQL 快照完成若存在可聚合的前驱则更新journals表中的既有记录否则新建一条期刊记录同时在数据表如work_package_journals、attachable_journals、customizable_journals中写入快照数据。12.2.0 中的缺陷即发生在此聚合路径上——错误对象被移除而非正确的前驱被剥离回填进而引发通知中心空白、活动缺失与更新报错。12.2.1 通过修正该路径并附加恢复迁移予以解决。另外聚合行为的触发开关由 app/models/journal/event_configuration.rb 中的Journal::EventConfiguration管理它控制创建/更新期刊时是否触发事件回调工作流、聚合任务使用线程本地变量Concurrent::ThreadLocalVar保证嵌套调用时的状态隔离默认值为true第 33 行DEFAULT true。HTTPS 配置变更OPENPROJECT_HTTPS 环境变量自 12.2 起OpenProject默认启用 HTTPS 模式。这一变更对两种部署形态产生了影响基于 Docker 的部署以及手动将打包安装packaged installation接入既有 Web 服务器的场景。如果你不在 HTTPS 下运行需要显式设置环境变量以关闭 HTTPS 模式OPENPROJECT_HTTPSfalseDocker 部署在 docs/installation-and-operations/installation/docker/README.md 中快速启动命令即为本地 HTTP 访问场景提供了该变量第 118-125 行docker run -it -p 8080:80 \ -e SECRET_KEY_BASEyour-secret-key-base \ -e OPENPROJECT_HOST__NAMElocalhost:8080 \ -e OPENPROJECT_HTTPSfalse \ -e OPENPROJECT_DEFAULT__LANGUAGEen \ openproject/openproject:17文档明确解释OPENPROJECT_HTTPSfalse关闭了 OpenProject 默认开启的 HTTPS 模式使你能够通过纯 HTTP 访问实例。对于所有生产系统强烈建议不要设置为false而应在外部 Web 服务器上配置正规的 TLS/SSL 终止。同时文档还强调第 226 行附近如果你确实需要关闭 OpenProject 的 HTTPS 响应就必须设置OPENPROJECT_HTTPSfalse但注意这会禁用会话 cookie 的安全属性secure cookies任何生产系统都强烈不建议这样做。打包安装Packaged Installation在 docs/installation-and-operations/installation/packaged/README.md 中自 12.2 起 HTTPS 配置已成为默认官方建议的最佳实践是在安装向导中选择Yes启用 HTTPSSSL/TLS并生成所需证书否则需要在命令行手动停用 HTTPS第 414 行启用该模式后OpenProject只响应 HTTPS 请求并将非安全请求升级为 HTTPS同时向客户端输出 HTTP Strict Transport SecurityHSTS响应头第 426 行如果由外层服务器终止 SSL需要在请求头中设置X-Forwarded-Proto https让 OpenProject 感知到请求已是 HTTPS第 438 行当无请求上下文时例如发送邮件需要确保链接以https生成执行openproject config:set SERVER_PROTOCOL_FORCE_HTTPStrue后运行openproject configure第 442 行若跳过 Apache2 安装Step 3向导会在后续步骤中询问外部主机名与是否使用 HTTPS第 520-526 行。12.2.1 全部缺陷修复清单本版本除上述关键修复外还包含以下缺陷修复均附社区工单编号修复内容工单在通知中心选择过滤器时 HTML 标题错误#43122Nextcloud 应用商店中 OpenProject 应用描述过期#43715子项目看板boards上的错误提示信息#43755新的 HTTPS 标志位文档不全且破坏快速启动 Docker 容器#43759甘特图中周末高亮错误#43762OpenProject Docker 安装问题#43767工作包中无法看到活动记录#43773折叠分组后时间线timeline条显示在错误时间#43775其中 #43759 与 #43773 分别对应本版本的 HTTPS 配置调整与活动记录修复两大主题其余为甘特图、看板、时间线等界面功能层面的修复。升级建议与注意事项立即升级该缺陷属于数据损坏级问题data corruption升级优先级最高未升级到 12.2.0 的系统可直接升级到 12.2.1。恢复活动记录的说明升级迁移会尽力恢复受影响的活动记录但恢复后的记录可能缺失部分变更或包含相邻活动的变更被恢复的记录会带有相应备注可在界面上识别。验证通知中心与工作包活动页升级后应重点检查通知中心是否正常加载、工作包活动时间线是否完整、既有工作包能否正常更新。HTTPS 配置检查Docker 与打包安装用户若在非 HTTPS 环境运行需确认已正确设置OPENPROJECT_HTTPSfalse或在外层完成 TLS 终止并配置X-Forwarded-Proto避免出现安全 cookie 与链接生成异常。云用户托管于 OpenProject 云端的实例无需自行处理恢复受影响实例会由官方单独通知。贡献者致谢本版本的缺陷报告与修复离不开社区成员的贡献官方特别感谢 Daniel Hug、Daniel Narberhaus、Dan W、Kenneth Kallevig 等社区成员对缺陷的发现与反馈。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考