- Implemented
MetadataManagerclass to manage metadata about files stored across nodes. - Provides thread-safe methods for adding, retrieving, and removing file metadata.
- Includes management of a node registry with liveness tracking.
- Metadata (file locations, node registry) is persisted to disk and reloaded on startup.
- Messages are serialized and used to notify nodes when files are added or removed.
- Basic file operations implemented in
filesystem.handfilesystem.cpp:createFile(),writeFile(), andreadFile()to manage file data.deleteFile()operation implemented for removing files.
- Integrated with
MetadataManagerto track which nodes hold file data and propagate delete operations.
- Defined
Messagestructure andMessageTypeenumeration inmessage.h. SerializeMessage()andDeserializeMessage()are now static methods of theMessageclass.- Metadata operations now send appropriate messages to nodes for file creation, writing, and deletion.
- Implemented a system for nodes to register with the
MetadataManager. - Added a heartbeat mechanism for nodes to report their active status, allowing the
MetadataManagerto detect unresponsive nodes.
- Implemented a file replication strategy within
MetadataManager::addFileto ensure files are replicated across a configurable number of live nodes. - Developed logic in
MetadataManager::checkForDeadNodesto identify files affected by node failures and to select new nodes for re-replication (actual data transfer is stubbed).
- Added comprehensive Doxygen-style documentation to core classes and methods in
metaserver.h,node.h,filesystem.h, andmessage.h.
- Networking Integration: Completed.
- The internal networking library (
src/client.h,src/server.h) has been integrated. - Message sending and receiving capabilities are now implemented using this library for distributed coordination.
- Placeholders for message sending in
MetadataManagerandNodehave been replaced with real network operations.
- The internal networking library (
- Node Registration: Complete.
- Heartbeat Mechanism: Complete.
- Replication: Implement replication of file chunks (Currently, whole file replication logic is in place during creation; re-replication data transfer is stubbed).
- Failure Handling: Define behavior and implement data transfer when a node goes offline (Currently, node failure detection and selection of new nodes for replicas is implemented; data transfer is stubbed).
- Metadata Persistence: Complete.
- Delete File: Complete.
- Concurrency Testing: Conduct rigorous concurrency testing (Initial review and test ideas documented in
tests/CONCURRENCY_TEST_IDEAS.MD).
- Refactor Messaging: Complete (Serialization/deserialization moved to
Messageclass static methods). - Documentation: Initial comprehensive Doxygen documentation for core modules is complete.
- Unit Testing: Write unit tests for
MetadataManager,FileSystem, and messaging functionality to ensure reliability.
- File Encryption: Implement file encryption for data at rest.
- Implement the actual data transfer mechanisms for file replication and re-replication.
- Develop comprehensive unit tests for all implemented features.
- Begin work on file encryption.