seaweedfs/weed/pb
Chris Lu 0ecb466eda
Admin: refactoring active topology (#7073)
* refactoring

* add ec shard size

* address comments

* passing task id

There seems to be a disconnect between the pending tasks created in ActiveTopology and the TaskDetectionResult returned by this function. A taskID is generated locally and used to create pending tasks via AddPendingECShardTask, but this taskID is not stored in the TaskDetectionResult or passed along in any way.

This makes it impossible for the worker that eventually executes the task to know which pending task in ActiveTopology it corresponds to. Without the correct taskID, the worker cannot call AssignTask or CompleteTask on the master, breaking the entire task lifecycle and capacity management feature.

A potential solution is to add a TaskID field to TaskDetectionResult and worker_pb.TaskParams, ensuring the ID is propagated from detection to execution.

* 1 source multiple destinations

* task supports multi source and destination

* ec needs to clean up previous shards

* use erasure coding constants

* getPlanningCapacityUnsafe getEffectiveAvailableCapacityUnsafe  should return StorageSlotChange for calculation

* use CanAccommodate to calculate

* remove dead code

* address comments

* fix Mutex Copying in Protobuf Structs

* use constants

* fix estimatedSize

The calculation for estimatedSize only considers source.EstimatedSize and dest.StorageChange, but omits dest.EstimatedSize. The TaskDestination struct has an EstimatedSize field, which seems to be ignored here. This could lead to an incorrect estimation of the total size of data involved in tasks on a disk. The loop should probably also include estimatedSize += dest.EstimatedSize.

* at.assignTaskToDisk(task)

* refactoring

* Update weed/admin/topology/internal.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fail fast

* fix compilation

* Update weed/worker/tasks/erasure_coding/detection.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* indexes for volume and shard locations

* dedup with ToVolumeSlots

* return an additional boolean to indicate success, or an error

* Update abstract_sql_store.go

* fix

* Update weed/worker/tasks/erasure_coding/detection.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update weed/admin/topology/task_management.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* faster findVolumeDisk

* Update weed/worker/tasks/erasure_coding/detection.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/admin/topology/storage_slot_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor

* simplify

* remove unused GetDiskStorageImpact function

* refactor

* add comments

* Update weed/admin/topology/storage_impact.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update weed/admin/topology/storage_slot_test.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update storage_impact.go

* AddPendingTask

The unified AddPendingTask function now serves as the single entry point for all task creation, successfully consolidating the previously separate functions while maintaining full functionality and improving code organization.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-03 01:35:38 -07:00
..
filer_pb convert error fromating to %w everywhere (#6995) 2025-07-16 23:39:27 -07:00
iam_pb add version to volume proto 2025-06-16 22:05:06 -07:00
master_pb Admin UI: include ec shard sizes into volume server info (#7071) 2025-08-02 02:16:49 -07:00
message_fbs add message batch 2022-07-28 23:24:38 -07:00
mount_pb add version to volume proto 2025-06-16 22:05:06 -07:00
mq_agent_pb add version to volume proto 2025-06-16 22:05:06 -07:00
mq_pb Admin UI: Add message queue to admin UI (#6958) 2025-07-11 10:19:27 -07:00
remote_pb add version to volume proto 2025-06-16 22:05:06 -07:00
s3_pb fix listing objects (#7008) 2025-07-22 01:07:15 -07:00
schema_pb add version to volume proto 2025-06-16 22:05:06 -07:00
volume_server_pb Admin: misc improvements on admin server and workers. EC now works. (#7055) 2025-07-30 12:38:03 -07:00
worker_pb Admin: refactoring active topology (#7073) 2025-08-03 01:35:38 -07:00
filer_pb_tail.go convert error fromating to %w everywhere (#6995) 2025-07-16 23:39:27 -07:00
filer.proto worm grace period and retention time support (#6404) 2024-12-31 18:41:43 -08:00
grpc_client_server.go convert error fromating to %w everywhere (#6995) 2025-07-16 23:39:27 -07:00
iam.proto [s3acl] Step1: move s3account.AccountManager into to iam.S3ApiConfiguration (#4859) 2023-09-25 08:34:12 -07:00
Makefile Admin UI add maintenance menu (#6944) 2025-07-06 13:57:02 -07:00
master.proto Admin UI: include ec shard sizes into volume server info (#7071) 2025-08-02 02:16:49 -07:00
message.fbs add message batch 2022-07-28 23:24:38 -07:00
mount.proto move to https://github.com/seaweedfs/seaweedfs 2022-07-29 00:17:28 -07:00
mq_agent.proto Accumulated changes for message queue (#6600) 2025-03-09 23:49:42 -07:00
mq_broker.proto Admin UI: Add message queue to admin UI (#6958) 2025-07-11 10:19:27 -07:00
mq_schema.proto Accumulated changes for message queue (#6600) 2025-03-09 23:49:42 -07:00
proto_read_write_test.go fix tests 2022-08-18 00:15:46 -07:00
remote.proto support swift (#4480) 2023-05-19 06:39:25 -07:00
s3.proto fix listing objects (#7008) 2025-07-22 01:07:15 -07:00
server_address_test.go Implement SRV lookups for filer (#4767) 2023-08-24 07:08:56 -07:00
server_address.go Implement SRV lookups for filer (#4767) 2023-08-24 07:08:56 -07:00
server_discovery.go Implement SRV lookups for filer (#4767) 2023-08-24 07:08:56 -07:00
shared_values.go remove fixJpgOrientation 2020-06-20 12:50:40 -07:00
volume_server.proto Admin: misc improvements on admin server and workers. EC now works. (#7055) 2025-07-30 12:38:03 -07:00
worker.proto Admin: refactoring active topology (#7073) 2025-08-03 01:35:38 -07:00