十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Label Studio Enterprise 2.10.1 版本解析:Reset Cache 缓存重置机制与安全修复全览

Label Studio Enterprise 2.10.1 版本解析:Reset Cache 缓存重置机制与安全修复全览 Label Studio Enterprise 2.10.1 版本解析Reset Cache 缓存重置机制与安全修复全览【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio本指南基于当前仓库中 Label Studio Enterprise 2.10.1 的官方发布说明onprem/2.10.1.md结合仓库源码逐项解读本次版本的核心变化新增的Reset Cache重置缓存项目级操作、活动日志敏感信息的安全修复以及 6 项与标注配置、API 查询、草稿管理、邮件邀请和仪表盘刷新相关的缺陷修复。阅读后你将理解 Reset Cache 解决什么问题、它在底层做了哪些重算工作以及每个修复项对应的真实使用场景。版本概览与发布信息Label Studio Enterprise 2.10.1 于2024 年 3 月 12 日发布配套Helm chart 版本为 1.4.0。本次版本的内容集中在三个方面新功能项目设置中新增Reset Cache操作用于重置并重新计算标注缓存安全更新修复活动日志activity logs中敏感信息泄露的问题缺陷修复共 6 项覆盖标注提交、页面计数、API 响应字段、草稿创建、邀请邮件 URL 与仪表盘刷新状态。新功能Reset Cache重置项目标注缓存适用场景当你在修改标注配置labeling configuration时如果收到指向不存在的标签labels或草稿drafts的校验错误Reset Cache 就是针对此类问题的官方解决办法。典型情况是项目中已经积累了大量的标注数据标注配置中的某些标签被移除或重命名但项目摘要缓存中仍残留这些标签的引用导致后续配置变更被校验逻辑拦截。操作入口与步骤该操作位于项目设置Project Settings的Danger Zone危险操作区。从前端实现 web/apps/labelstudio/src/pages/Settings/DangerZone.jsx 可以看到Danger Zone 页面包含四类危险操作删除标注、删除任务、删除预测、Reset Cache、丢弃全部 Tabs 以及删除项目。其中 Reset Cache 的界面文案明确说明了其用途Reset Cache may help in cases like if you are unable to modify the labeling configuration due to validation errors concerning existing labels, but you are confident that the labels dont exist. You can use this action to reset the cache and try again.当你在修改标注配置时因标签不存在之类的校验错误而无法保存但你确信这些标签确实不存在时可以重置缓存后重试。操作时前端会弹出二次确认对话框requiredWord: cache需输入单词确认点击确认后调用 APIprojectResetCache对应端点定义为POST /projects/:pk/summary/reset见 web/apps/labelstudio/src/config/ApiConfig.js。成功后前端提示 Cache reset successfully。底层机制ProjectSummary 摘要缓存Reset Cache 重置的对象是项目摘要模型ProjectSummary中维护的标注派生缓存。该模型定义于 label_studio/projects/models.py缓存内容包括created_labels / created_annotations项目运行过程中已创建的区域标签与标注记录created_labels_drafts与草稿关联的已创建标签all_data_columns / common_data_columns任务数据列信息用于数据管理器的列展示。从后端 API 实现 label_studio/projects/api.py 中的ProjectSummaryResetAPI类注释可以确认其设计动机This API is useful when we need to reset project.summary.created_labels and created_labels_drafts and recalculate them from scratch. Its hard to correctly follow all changes in annotation region labels and these fields arent calculated properly after some time. Label config changes are not allowed when these changes touch any labels from these created_labels* dictionaries.即在长期运行的项目中区域标签的增删改难以被持续准确地跟踪这些字段可能逐步失真而当标注配置变更触碰到created_labels*字典中的任何标签时配置更改会被禁止。Reset Cache 正是为解除这一卡点而设计。异步重算流程该操作通过start_job_async_or_sync将重算任务投递到后台队列django-rq执行核心函数为recalculate_created_annotations_and_labels_from_scratch实现在 label_studio/projects/functions/utils.py。其执行步骤如下清空all_data_columns与common_data_columns并通过summary.update_data_columns(project.tasks.only(data))基于全部任务数据重新构建数据列将created_labels、created_annotations、created_labels_drafts重置为空字典并落库遍历项目全部标注记录调用update_created_annotations_and_labels(project.annotations.all())重新统计已创建标签与标注遍历项目中所有草稿AnnotationDraft.objects.filter(task__projectproject)调用update_created_labels_drafts(drafts)重建草稿标签缓存。任务投递时携带organization_id便于在 django-rq 管理后台中展示任务归属。权限要求Reset Cache 属于受控操作后端在ProjectSummaryResetAPI中通过ViewClassPermission(POSTall_permissions.projects_reset_cache)限定权限权限点定义为projects.reset_cache见 label_studio/core/permissions.py。即只有具备该权限的项目成员才能触发缓存重置调用端点POST /projects/{id}/summary/reset。使用注意从 UI 文案可知Danger Zone 中的所有操作均不可撤销This action cannot be undoneReset Cache 会重建项目摘要缓存但不会删除任何标注数据。需要说明的是该操作与验证 APIPOST /api/projects/{id}/validateConfig见 label_studio/projects/api.py配合使用先通过config_essential_data_has_changed判断配置是否发生实质性变更再以严格模式validate_config(label_config, strictTrue)校验新配置。如果重置缓存后仍报同样的标签校验错误则说明问题并非缓存陈旧所致应核查标注配置本身的标签定义。安全更新活动日志敏感信息修复本次版本修复了活动日志activity logs中可能暴露敏感信息的问题。从发布说明看这一修复属于安全增强建议所有部署 2.10.1 之前版本的企业用户优先升级。需要说明的是仓库当前源码已经迭代到更高版本活动日志的审计逻辑在后续版本中持续演进具体日志字段以实际部署版本为准。Bug 修复详解1. TextArea 标签同时使用 required 与 skipDuplicates 时无法提交标注此前当标注配置中的TextArea标签同时设置了required必填与skipDuplicates跳过重复文本参数时用户无法成功提交标注。从当前仓库的标签 schema web/libs/core/src/lib/utils/schema/tags.json 可以看到TextArea标签支持required决定内容是否为必填与skipDuplicates设置为 true 时跳过重复输入等参数。这两个参数的组合校验在 2.10.1 中得到修复包含此类配置的项目升级后即可正常提交。2. Projects 页面显示的项目数量错误修复了 Projects项目列表页面在指示当前页面展示了多少个项目时计数不准确的问题。这属于前端展示层缺陷升级后页面计数将如实反映列表实际渲染的项目数。3. GET api/tasks?projects{id}fieldsall 不返回 reviews修复了通过GET api/tasks?projects{id}fieldsall查询任务详情时响应中缺少reviews评审记录字段的问题。fieldsall用于请求任务对象的全量字段修复后该查询模式会正确包含评审数据这对于依赖 API 批量导出评审信息的集成场景尤为重要。4. 点击 View all annotations 时创建空草稿修复了每次点击View all annotations查看全部标注都会生成一个空草稿empty draft的问题。空草稿会污染草稿列表并干扰项目摘要缓存统计此修复避免了无效草稿的持续累积。5. 邮件邀请 URL 缺少 http 协议修复了邮件邀请email invites中的链接因缺少http协议前缀而无法直接点击跳转的问题确保邀请链接在邮件客户端中可作为有效 URL 打开。6. 项目仪表盘 Refresh 卡在加载状态修复了项目仪表盘project dashboard上的Refresh刷新操作偶尔一直停留在加载状态loading的问题。该问题通常由前端异步请求状态未正确收敛导致升级后刷新操作能够正常完成并返回结果。升级建议Label Studio Enterprise 2.10.1 对应 Helm chart 1.4.0企业版用户可通过 Helm 升级或 Docker 镜像更新完成部署。本次版本同时包含安全修复与功能增强建议在维护窗口内完成升级升级后如遇到标注配置保存被标签不存在类错误拦截的情况可优先尝试项目设置 → Danger Zone →Reset Cache进行缓存重置。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表