net-connector 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/docs/architecture.md +1 -1
- data/lib/net/connector/engine/session.rb +22 -3
- data/lib/net/connector/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 53b48ed47fa1c111f914a4b8861a979d71424f299cad8334be8e158d131cd7d1
|
|
4
|
+
data.tar.gz: a4680a27142dc8660c2747c7dbd4afaf0aee2c97e86fc3d74da903b7b0c3223b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0a9dcbcd74b6747c6cfc3920118aa9d8a89b3b26e92b3d9d1c212df9e189295f2ffe34b1c6b0bb82a6789fa7ede26dc60931f780cd0d621994065e3ebb7d11cb
|
|
7
|
+
data.tar.gz: 85fa8790b775b1d682f9284ab2b176d38ea9a1a7d12da5b39d9c432ecc3ef3501c47d7e65d41130884343d5b1d443485dca97ba133cdffcd6a63802d40bcf430
|
data/CHANGELOG.md
CHANGED
data/docs/architecture.md
CHANGED
|
@@ -87,7 +87,7 @@ TFTP 内置策略的 `validate_options!` 是纯参数校验,执行于 H3C 源
|
|
|
87
87
|
|
|
88
88
|
明确完成证据先生成最小回执,再执行路径提取、元数据钩子及事件记录。已完成步骤之后的清理错误同样保留回执;路径不可用时保留 nil,不把请求文件名冒充实际目标。`TftpCompletionError` 只含受控码、类型和回执,不带原始消息、输出或 cause。Fleet 仅信任库定义的精确错误类及匹配产物;第三方异常上的 receipt 字段和错误子类不能供应完成事实。已上传但收尾失败使用 reported_with_error/partial 分类。
|
|
89
89
|
|
|
90
|
-
`Topology` 默认通过显式 `sync_interface_descriptions` 调用在同一连接与租约内完成发现到保存,调用方无须传递计划。独立规划/应用流程仍冻结计划并要求显式确认;两条路径共用写入前证据重验和命令核对。`ImmediateStrategy` 将即时生效设备的修改/退出视图、运行配置读回、保存拆开:读回未确认或有未识别接口块时停止,不发送保存。重验、下发、读回、保存及阶段间隙都持有原有会话租约;只有所属线程和 Fiber
|
|
90
|
+
`Topology` 默认通过显式 `sync_interface_descriptions` 调用在同一连接与租约内完成发现到保存,调用方无须传递计划。独立规划/应用流程仍冻结计划并要求显式确认;两条路径共用写入前证据重验和命令核对。`ImmediateStrategy` 将即时生效设备的修改/退出视图、运行配置读回、保存拆开:读回未确认或有未识别接口块时停止,不发送保存。重验、下发、读回、保存及阶段间隙都持有原有会话租约;只有所属线程和 Fiber 能顺序执行脚本,其他线程或 Fiber 的调用、关闭请求和脚本回调重入均返回 `SessionBusy`。同一线程和 Fiber 可在命令结束后于租约内关闭异常的嵌套会话;关闭回调不能执行脚本或递归关闭,关闭期间仍保持原租约,标记清理后才交付取消。租约不隔离其他设备会话或管理员。
|
|
91
91
|
|
|
92
92
|
```mermaid
|
|
93
93
|
flowchart LR
|
|
@@ -64,7 +64,7 @@ module Net
|
|
|
64
64
|
|
|
65
65
|
# 锁覆盖完整操作而不是单次写入,保证批处理命令不会交错。
|
|
66
66
|
def perform(phase, &)
|
|
67
|
-
if @operation_owner == [Thread.current, Fiber.current] && !@performing
|
|
67
|
+
if @operation_owner == [Thread.current, Fiber.current] && !@performing && !@closing
|
|
68
68
|
return perform_locked(phase, &)
|
|
69
69
|
end
|
|
70
70
|
with_session_lock(phase) { perform_locked(phase, &) }
|
|
@@ -91,9 +91,28 @@ module Net
|
|
|
91
91
|
raise build_error(SessionBusy, "backup path ownership must be acquired before a session operation", phase: phase), cause: nil
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
#
|
|
94
|
+
# 同一操作所有者可在命令结束后关闭借用会话,关闭回调及其他执行者仍不得重入。
|
|
95
95
|
def close
|
|
96
|
-
|
|
96
|
+
if @operation_owner == [Thread.current, Fiber.current] && !@performing && !@closing
|
|
97
|
+
failure = nil
|
|
98
|
+
begin
|
|
99
|
+
@closing = true
|
|
100
|
+
close_resources
|
|
101
|
+
rescue Exception => error # rubocop:disable Lint/RescueException -- 状态收尾的二次取消不能覆盖原始关闭故障。
|
|
102
|
+
failure = error
|
|
103
|
+
raise
|
|
104
|
+
ensure
|
|
105
|
+
begin
|
|
106
|
+
Thread.handle_interrupt(Exception => :never) { @closing = false }
|
|
107
|
+
rescue Exception => error # rubocop:disable Lint/RescueException -- 先清除重入标记,再交付原始取消或收尾取消。
|
|
108
|
+
Thread.handle_interrupt(Exception => :never) { @closing = false }
|
|
109
|
+
error = failure || error
|
|
110
|
+
raise error, cause: error.cause
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
else
|
|
114
|
+
with_session_lock(:close, busy_message: "cannot close a session owned by another operation") { close_resources }
|
|
115
|
+
end
|
|
97
116
|
end
|
|
98
117
|
|
|
99
118
|
# 执行特权认证,并更新提示符及特权状态。
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: net-connector
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.11.
|
|
4
|
+
version: 0.11.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- net-connector contributors
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-10-
|
|
10
|
+
date: 2026-10-17 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: expect-pty
|