Commit Graph
269 Commits
Author SHA1 Message Date
layue13 537815766e Bound transfer candidate packet queue and benchmark framed relay 2026-09-25 08:03:22 +08:00
layue13 5412e27c55 Keep packet boundaries across session relay and transfer 2026-09-25 07:54:00 +08:00
layue13 d928174098 Complete Forge handshake across backend transfer 2026-09-25 07:45:44 +08:00
layue13 18156b0d4d Preserve in-flight relay frames while pausing 2026-09-25 07:45:34 +08:00
layue13 f677a229d2 Add optional leased Agent backend discovery plugin 2026-09-25 07:22:32 +08:00
layue13 466f38f7b1 Implement protocol 5 backend transfer with Forge reset and rollback 2026-09-25 07:22:20 +08:00
layue13 3dc772c5e0 Allow relay pause and detach for backend replacement 2026-09-25 06:53:46 +08:00
layue13 d2ece92cde Bound initial sessions and add synthetic relay benchmark 2026-09-25 06:48:38 +08:00
layue13 a410c159fb Rewrite proxy around player sessions and plugin-owned discovery 2026-09-25 06:27:16 +08:00
layue13 ac064adb25 refactor: simplify routing ownership and remove implicit transfer selection 2026-09-25 02:50:06 +08:00
layue13 7ba97faca1 refactor: add staged plugin routing and server load views 2026-09-25 02:10:02 +08:00
layue13 152bae13be feat: add independent backend channel broker 2026-09-25 01:04:52 +08:00
layue13 3bfb0228ff ci: use shared build-publish workflow 2026-09-23 23:43:40 +08:00
layue13 5dc68edec2 feat: add platform-neutral backend messaging API 2026-09-22 22:57:20 +08:00
layue13 138bbcf987 refactor: streamline proxy network runtime 2026-09-22 22:47:59 +08:00
layue13 d03ff6801c refactor: simplify network relay accounting 2026-09-22 22:25:50 +08:00
layue13 41aa8bb57b refactor: flatten core implementation packages 2026-09-22 19:53:46 +08:00
layue13 03bb9d8601 refactor: colocate minecraft runtime metrics 2026-09-22 19:50:51 +08:00
layue13 84d241b464 refactor: extract plugin server service 2026-09-22 16:18:27 +08:00
layue13 28855879a1 refactor: organize core package boundaries 2026-09-22 12:59:50 +08:00
layue13 8c010481aa fix: harden backend agent and plugin contracts 2026-09-22 05:48:43 +08:00
layue13 8063f6eb1f docs: consolidate Chinese documentation 2026-09-22 03:57:47 +08:00
layue13 9fa6a782a6 fix: configure Bukkit Java compatibility via extension 2026-09-22 03:47:22 +08:00
layue13 71b15cd180 feat: add Bukkit backend agent and shared CI publishing 2026-09-22 03:42:25 +08:00
layue13 cfa3c8bc51 refactor: reduce StrataProxy to core runtime 2026-09-22 02:33:30 +08:00
layue13 3f3937b6b0 build(StrataProxy): settings 补 foojay toolchain 解析器
问题: updateDaemonJvm 缺 toolchain 下载仓库配置报 toolchainDownloadUrls 失败
改动: settings.gradle.kts 顶层补 foojay-resolver-convention 1.0.0(前一 commit criteria 提交时遗漏)
验证: criteria 已在 44fab88 落地并推送, 本文件是其必需配套
2026-09-06 14:41:51 +00:00
layue13 44fab88c60 build(StrataProxy): Daemon JVM criteria 钉 JDK 25
问题: 构建进程 JVM 依赖各机器 JAVA_HOME, 换环境漂移
改动: updateDaemonJvm --jvm-version=25 生成 gradle-daemon-jvm.properties(criteria 优先于 JAVA_HOME/org.gradle.java.home)
验证: JAVA_HOME=Zulu8 下 assemble 全绿(daemon 实跑 JDK25); 产物 0 个 class 全部 major=52
2026-09-06 14:38:12 +00:00
layue13 d9761620de perf(StrataProxy): 转移单一 payload 捕获前缀所有权
原因 / Cause:
启用 payload capture 时,relay 已为前缀新建 byte[],ProxyMetrics 又为单个匹配 capture 执行 Arrays.copyOf,导致同一采样数据复制两次。

修复 / Fix:
新增显式所有权转移入口;relay 将其新建且不再使用的前缀数组交给指标层。单个完整匹配 capture 直接保存该数组,多个 capture 或需要截断的 capture 继续独立复制。

性能收益 / Performance:
常见的单一 capture、全长样本路径消除一次 byte[] 分配与内存复制;多 capture 路径仍以独立副本保证隔离。

兼容性 / Compatibility:
既有 payloadCaptured API 继续防御复制;新入口明确调用方不得再修改数组。新增回归测试验证多个 owned capture 的导出样本不共享数组。

验证 / Validation:
git diff --check;Java 25 下 :proxy-observability:test、:proxy-network:test 与全仓 check 均通过(95 tasks)。

Refs #2
2026-09-05 13:30:47 +08:00
layue13 2f80a2738a perf(StrataProxy): 缓存 relay 服务流量计数器
原因 / Cause:
前后端 relay 每转发一个包都以服务器字符串调用 ConcurrentHashMap.computeIfAbsent 获取同一组 ServerTrafficCounters。

修复 / Fix:
ProxyMetrics 提供绑定到单服务器的 ServerTrafficRecorder;relay handler 在构造时获取一次,并在每包路径直接写入已绑定的两个 LongAdder。

性能收益 / Performance:
将每包字符串哈希、ConcurrentHashMap 查找和 computeIfAbsent 分支移动到每条 relay 连接的一次性初始化,降低高吞吐转发的同步映射开销。

兼容性 / Compatibility:
保留既有按服务器 API;绑定记录器仍同时累加原有全局和同一服务器的计数器,快照、服务名校验与指标值不变。

验证 / Validation:
git diff --check;Java 25 下 :proxy-network:test、:proxy-observability:test 与全仓 check 均通过(95 tasks)。

Refs #2
2026-09-05 13:27:50 +08:00
layue13 4f56e936cc perf(StrataProxy): 减少压缩审计动作分配
原因 / Cause:
前后端 relay 在每个已协商压缩帧上都会创建动作 ArrayList、再通过 List.copyOf 复制;无完整帧和未协商路径也重复创建等价的 CompressionObservation。

修复 / Fix:
复用无动作观察结果;空压缩样本直接使用共享结果;非空样本按已知数量预分配动作列表,并在私有只读消费路径中直接传给重写器,避免 List.copyOf 的第二份容器和元素数组复制。

性能收益 / Performance:
未协商、分帧暂未完成和无完整压缩样本路径不再分配 CompressionObservation/动作列表;有完整样本时消除一次动作列表复制并避免扩容。

兼容性 / Compatibility:
压缩样本、指标记录、动作生成顺序、重写输入及转发决策均保持不变;动作列表仅由同一 handler 私有路径创建并由重写器只读消费。

验证 / Validation:
git diff --check;Java 25 下 :proxy-network:test 与全仓 check 均通过(99 tasks)。

Refs #2
2026-09-05 13:25:53 +08:00
layue13 6f82712e4a revert: restore StrataProxy runner label
原因 / Cause
The previous runner-label update targeted a proxy repository that is outside the mod build-and-distribution scope.

修复 / Fix
Restore the original Ubuntu runner label and leave StrataProxy unchanged.

性能收益 / Performance
No runtime behavior changes.

兼容性 / Compatibility
Restores the prior CI configuration exactly.

验证 / Validation
Verified the restored workflow diff only changes the runner label back to ubuntu-latest.
2026-09-05 11:42:03 +08:00
layue13 8ae842c042 ci: route builds to macOS ARM runner
原因 / Cause
StrataProxy CI requested ubuntu-latest, but the available global runner is an ARM64 macOS host labeled macos-arm64. Jobs were cancelled before a runner accepted them.

修复 / Fix
Target the macos-arm64 label so pushes to main are executed by the available M5 Max runner.

性能收益 / Performance
Uses the available native ARM64 build capacity without queuing indefinitely.

兼容性 / Compatibility
The workflow continues to use actions/checkout, actions/setup-java, and Gradle on macOS.

验证 / Validation
Verified the runner is idle, enabled, global, and labeled macos-arm64; the workflow trigger remains push to main.
2026-09-05 11:35:32 +08:00
layue13 d5ec957d28 perf: remove hot-path observer copies (#1)
原因 / Cause:
完整入站帧会被 legacy Forge race guard、Forge 握手跟踪器和插件通道注册表分别复制到各自 pending 缓冲,转发热路径产生不必要的分配与内存复制。

修复 / Fix:
完整帧改为仅在当前 channelRead 内以 ByteBuf 切片解析;只有跨包的未完成尾帧才复制到 pending。race guard 对完整且未命中 race 的帧直接返回原缓冲,命中或分片时继续使用原有过滤路径。

性能收益 / Performance:
完整、非 race 的入站帧在上述三个观察器中的全量字节复制由每观察器 1 次降为 0 次,消除 3 次热路径缓冲复制与相应分配;压缩解码保留以维持观察语义。

兼容性 / Compatibility:
Forge 握手状态、压缩解析、REGISTER/UNREGISTER 注册表、race 过滤与跨包累积语义保持不变;分片仍由拥有的数据副本续帧,避免引用计数悬挂。

验证 / Validation:
./gradlew.bat :proxy-network:test;./gradlew.bat build。新增压缩分片首段释放回归,以及完整非 race 帧对象同一性回归。

Refs #1
2026-09-04 01:25:17 +08:00
layue13 d0c3ac321e Expose controlled server registry mutations to plugins 2026-07-05 17:08:03 +08:00
layue13 577bebac0e fix: handle forge 1.7.10 join dimensions
Parse Forge 1.7.10 Join Game dimensions as int during legacy Forge backend switches while keeping vanilla 1.7.10 on byte dimensions.

Add regression coverage for large modded dimensions and Bungee legacy forwarding preserving the FML hostname token.
2026-07-03 00:23:30 +08:00
layue13 4b64a6819e feat: add legacy forge protocol switching support
Introduce protocol profiles and legacy custom payload codecs for 1.7.10/1.8 behavior.

Add Forge handshake tracking, gating, reset, plugin channel replay, legacy switch cleanup, diagnostics, and local 1.7.10 deployment scripts.

Document the protocol version matrix and current support limits.
2026-07-03 00:04:29 +08:00
layue13 03bbbcabe1 Introduce SLF4J logging facade 2026-07-02 02:41:42 +08:00
layue13 03a3143d50 Optimize routing and packet registry lookups 2026-07-02 02:37:04 +08:00
layue13 7c11ad30de docs: complete Javadocs 2026-07-02 02:28:13 +08:00
layue13 a0683c4a25 Complete plugin developer API surface 2026-07-02 02:03:31 +08:00
layue13 6378f86ea3 Add proxy plugin and in-game command system 2026-07-02 01:41:06 +08:00
layue13 b742fce39c Implement Bungee-style player transfers 2026-07-02 00:55:10 +08:00
layue13 b36b7fff6b Improve user-facing documentation structure 2026-07-01 04:47:17 +08:00
layue13 244f5eaeca Add operations manual documentation 2026-07-01 04:03:01 +08:00
layue13 5cdc39ca7d Add Zstd sample collection commands 2026-07-01 02:40:15 +08:00
layue13 1f9266b8b0 Document Zstd compression tuning 2026-07-01 02:06:32 +08:00
layue13 ae4092ae76 Merge remote-tracking branch 'origin/main' into codex/zstd-dictionary-mod 2026-06-30 22:50:27 +08:00
layue13 040a3ed893 Normalize modded handshake route hosts 2026-06-30 21:06:54 +08:00
layue13 c0cfc92b3a Add managed echo backend for performance profiles 2026-06-30 20:56:36 +08:00
layue13 d6961cb1b7 Add login plugin payload diagnostics 2026-06-30 20:49:11 +08:00