Commit Graph

1269 Commits

Author SHA1 Message Date
agile.zhou 2d7442fb14 feat: Etcd sync plugin full optimization
- 原子事务重构:使用etcd原生delete_range + 批量put原子事务,消除配置丢失风险
- 三层安全校验:防止误删其他业务数据,严格校验key前缀格式
- 大事务自动拆分:支持自动拆分大量配置同步,自动降级重试
- 时序问题修复:新同步触发时清除旧重试记录,避免旧版本覆盖新版本
- 增量同步模式:支持增量差异同步,减少90%+变更事件
- 指数退避+熔断:优化重试逻辑,避免重试风暴压垮集群
2026-03-17 01:31:23 +08:00
kklldog af830db8aa fix(sync): stabilize event bus DI and etcd delete endpoint 2026-03-01 18:20:39 +00:00
kklldog 3e5f13bc7f fix(docker): include SyncPlugin projects in build 2026-02-25 13:39:13 +00:00
kklldog eaaa08c63b Fix SyncPlugin configuration and add Contracts to solution
1. Add AgileConfig.Server.SyncPlugin.Contracts to AgileConfig.sln
2. Modify SyncPluginInitializer to read config from appsettings.json
3. Add SyncPlugin section to appsettings.json with etcd plugin config
2026-02-24 09:32:42 +00:00
kklldog ddae5deed4 Add SyncPlugin unit tests for ConfigSyncEventHandler
- Add 5 test cases covering:
  - Valid timeline triggers sync
  - No published configs skips sync
  - Null timeline returns early
  - Sync failure records failed attempt
  - Exception records failed attempt
- All 11 tests pass (6 existing + 5 new)
2026-02-23 19:56:19 +00:00
kklldog b84426a0a1 fix: remove remaining Consul references from solution file 2026-02-23 13:58:47 +00:00
kklldog 5296072a15 chore: remove Consul sync plugin 2026-02-23 13:38:34 +00:00
kklldog 57bfeb7c16 修复本地环境 cgroup 兼容性问题 2026-02-22 06:23:37 +00:00
kklldog c0a3bec61e 修复 SyncPlugin DI 问题:SyncRetryService 使用 IServiceProvider 解析 scoped 服务 2026-02-22 06:01:54 +00:00
kklldog b930b33af6 集成 SyncPlugin 到 Apisite 项目 2026-02-21 19:43:32 +00:00
kklldog c708d9ddb4 refactor: extract ISyncPlugin and models to Contracts project to resolve circular dependency
- Create AgileConfig.Server.SyncPlugin.Contracts project
- Move ISyncPlugin interface and all models (SyncContext, SyncPluginConfig, etc.) to Contracts
- Update SyncPlugin, Plugins.Etcd, Plugins.Consul to reference Contracts
- Fix namespace references across all affected files
- Remove duplicate ISyncPlugin.cs from SyncPlugin project
2026-02-21 09:44:29 +00:00
kklldog 9b1897a51f feat: Implement etcd plugin using HTTP API
- Use etcd v3 HTTP API instead of gRPC
- No external etcd package needed, just HttpClient
- Implement SyncAllAsync with delete + put operations
- Base64 encode keys/values as required by etcd API
2026-02-21 06:42:33 +00:00
kklldog e17e2515f6 feat: Implement etcd plugin with replace-all sync strategy
- Use dotnet-etcd package for etcd connectivity
- Implement SyncAllAsync with delete + put operations
- Fix API usage (synchronous methods)
2026-02-20 19:41:35 +00:00
kklldog 4677d8686d feat: Implement replace-all sync strategy with retry mechanism
- Simplify ISyncPlugin to only have SyncAllAsync (replace all)
- Add FailedSyncRecord to track failed syncs (stores only appId+env)
- Add SyncRetryService for retry logic (always fetches latest configs)
- Add SyncRetryBackgroundService for periodic retry
- Update event handler to use new sync strategy
- Placeholder implementations for Etcd and Consul plugins (TODO: fix API)
2026-02-20 19:32:41 +00:00
kklldog d01bd49ee1 fix: Fix build errors and compile successfully
- Fix namespace issues in SyncPlugin models
- Fix Config entity property references (Group not GroupName)
- Fix SafeExecuteAsync lambda expressions
- Fix etcd client API usage (synchronous calls)
- Fix Consul KV.Set -> KV.Put
- Add missing using directives
2026-02-20 10:19:44 +00:00
kklldog 577ce9b191 fix: Fix etcd client package name (dotnet.etcd -> Etcd.Client)
- Change package reference from dotnet.etcd to Etcd.Client
- Update EtcdSyncPlugin to use new client API
2026-02-20 10:02:20 +00:00
kklldog 75a4050f5d fix: Fix entity property names (Group instead of GroupName)
- Use correct property name Group instead of GroupName
- Use AppId as AppName since entity doesn't have that property
2026-02-20 08:24:13 +00:00
kklldog 00b27682da feat: Add built-in plugin registration helpers
- Add RegisterBuiltInPlugins extension method
- Include Etcd and Consul plugin registration samples
- Plugins disabled by default, can be enabled via config
2026-02-19 19:14:14 +00:00
kklldog df55c9fe4c feat: Integrate SyncPlugin with event system
- Add ConfigSyncEventHandler to sync configs on publish
- Add ConfigDeleteSyncEventHandler to remove configs on delete
- Register SyncPlugin services in DI container
- Register sync event handlers in SystemEventHandlersRegister
2026-02-19 19:13:21 +00:00
kklldog e5872242e9 feat: Add SyncPlugin infrastructure (draft version)
- Add AgileConfig.Server.SyncPlugin project with:
  - ISyncPlugin interface
  - SyncEngine for managing plugins
  - ConfigSyncService for triggering sync on config changes
  - SyncPluginConfig, SyncContext models

- Add AgileConfig.Server.SyncPlugin.Plugins.Etcd project:
  - EtcdSyncPlugin implementation

- Add AgileConfig.Server.SyncPlugin.Plugins.Consul project:
  - ConsulSyncPlugin implementation

- Update solution and project references
2026-02-19 19:06:54 +00:00
agile.zhou a766175d57 Fix testcases v-1.11.3 2025-12-29 23:58:51 +08:00
agile.zhou 23e80cbb98 Remove unnecessary packages 2025-12-29 22:58:09 +08:00
Minjie.ZHOU b7dadb530f Merge pull request #231 from dotnetcore/bugfix/fix-230
Fixbug #230
2025-12-29 22:52:07 +08:00
agile.zhou af23bb53e3 Fixbug #230 2025-12-29 22:46:45 +08:00
Minjie.ZHOU 151ea3fe40 Update CHANGELOG.md 2025-12-22 22:31:53 +08:00
Minjie.ZHOU dcb4a443f3 Merge pull request #229 from dotnetcore/bugfix/can-add-the-same-key-item
fixbug: can not add item if the key exist in different group
v-1.11.2
2025-12-22 22:25:17 +08:00
agile.zhou c4473d460d Update version no 2025-12-22 22:21:54 +08:00
agile.zhou 8a85977e1d fixbug: can not add item if the key exist different group 2025-12-22 22:18:29 +08:00
agile.zhou 73a8c0fd24 Merge branch 'master' of https://github.com/dotnetcore/AgileConfig 2025-12-12 01:21:18 +08:00
agile.zhou 12aef8c0e1 Update icon 2025-12-12 01:21:05 +08:00
Minjie.ZHOU 5dcf8836ef update pipeline 2025-12-11 01:05:07 +08:00
Minjie.ZHOU 847a5ae463 Update README.md 2025-12-06 01:08:43 +08:00
Minjie.ZHOU bb038c8ac3 Merge pull request #224 from dotnetcore/codex/enhance-role-management-functionality
feat: add role management and dynamic permissions
v-1.11.0
2025-12-05 01:36:49 +08:00
agile.zhou 62efc90388 update role dropdown test-1.11.4 2025-12-05 01:21:18 +08:00
agile.zhou 9deac73950 update workflow 2025-12-05 01:13:31 +08:00
agile.zhou 799d361a72 Set role dropdown tag color test-1.11.3 2025-12-05 01:09:58 +08:00
agile.zhou 2419c7d74c Update dockerfile test-1.11.2 2025-12-04 23:47:06 +08:00
agile.zhou 58f13503cc set permission group color test-1.11.1 2025-12-04 23:09:25 +08:00
agile.zhou 87bd8209e7 clearn code 2025-11-24 01:39:04 +08:00
agile.zhou 3cf3208a73 Update NET version to 10 2025-11-24 01:11:06 +08:00
agile.zhou 4324c3f2c1 Update version to 1.11.0 test-1.11.0 2025-11-23 20:50:32 +08:00
agile.zhou af4c27f0b2 fix side meun display issue 2025-11-23 20:14:50 +08:00
agile.zhou 74084adb9e control backend permission 2025-11-23 02:35:25 +08:00
agile.zhou a203a89fdc Permission control almost done 2025-11-22 23:49:08 +08:00
agile.zhou 4935a8d079 fix obvious issue 2025-11-11 01:13:34 +08:00
agile.zhou 1075a31cc0 complete role control 2025-11-03 02:56:11 +08:00
agile.zhou 32003909e0 update 2025-11-02 22:26:25 +08:00
agile.zhou ff419d3cf4 fix error 2025-11-02 22:23:01 +08:00
agile.zhou 0e97d91ea8 Update namespace fix compile error 2025-10-21 02:05:54 +08:00
Minjie.ZHOU 1e22ebc930 docs: document dynamic role management rollout 2025-10-21 00:48:33 +08:00