修复: relay token 改环境变量 + api_key 脱敏 + 路径规范化 + create_project 自动建目录
- relay token 必设 DF_RELAY_TOKEN 环境变量,移除硬编码默认 - AiProviderRecord Debug 脱敏 api_key/model_configs/config - ScriptNode 危险命令告警(rm -rf/DROP TABLE 等) - bind_directory 路径规范化,拒绝含 .. 的原始路径 - create_project 目录不存在时自动创建 - probe_pwsh OnceLock 全局缓存,异步探测不阻塞 tokio - retry jitter 改 rand,范围扩大到 ±50% - EventBus send 错误改 tracing::warn - StateMachine 文档警告不得在 await 期间持锁
This commit is contained in:
@@ -30,8 +30,10 @@ impl EventBus {
|
||||
|
||||
/// 发送事件
|
||||
pub async fn send(&self, event: WorkflowEvent) {
|
||||
// broadcast::send 是同步的,忽略接收者已关闭的错误
|
||||
let _ = self.sender.send(event);
|
||||
// broadcast::send 是同步的;接收者已关闭时记录警告
|
||||
if let Err(e) = self.sender.send(event) {
|
||||
tracing::warn!("EventBus 发送事件失败: {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
/// 订阅事件
|
||||
|
||||
@@ -15,6 +15,17 @@ use std::sync::{Arc, Mutex};
|
||||
use df_types::types::{NodeId, NodeStatus};
|
||||
|
||||
/// 节点状态机
|
||||
///
|
||||
/// # ⚠️ 并发安全警告
|
||||
///
|
||||
/// `state_machine` 方法(`get`、`transition`、`set_running`、`set_completed`、
|
||||
/// `set_failed`、`set_cancelled`、`snapshot`、`is_cancelled`)内部持锁
|
||||
/// (`self.states.lock()`),**不得在 `.await` 期间持锁**。
|
||||
/// 若在异步上下文中调用,请确保获取结果后立即释放锁(即不要将锁跨越
|
||||
/// `.await` 点)。当前所有方法均为同步且及时释放,符合此规则。
|
||||
///
|
||||
/// 共享语义:内部用 `Arc<Mutex<HashMap>>`,`clone()` 为浅拷贝(Arc 引用计数 +1),
|
||||
/// 所有 clone 共享同一底层 HashMap。
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct StateMachine {
|
||||
/// 节点状态映射(Arc 共享,clone 浅拷贝同一 HashMap)
|
||||
|
||||
Reference in New Issue
Block a user