- Implemented
MetadataManager
class to manage metadata about files stored across nodes. - Provides thread-safe methods for adding, retrieving, and removing file metadata.
- Messages are serialized and used to notify nodes when files are added or removed.
- Basic file operations implemented in
filesystem.h
andfilesystem.cpp
:createFile()
,writeFile()
, andreadFile()
to manage file data.
- Integrated with
MetadataManager
to track which nodes hold file data.
- Defined
Message
structure andMessageType
enumeration inmessage.h
. - Implemented
SerializeMessage()
andDeserializeMessage()
to convertMessage
objects to/from strings for communication between nodes. - Metadata operations now send appropriate messages to nodes for file creation, writing, and deletion.
- Integrate Networking Library: Use NetworkingLibrary to enable actual communication between nodes.
- Implement message sending and receiving capabilities for distributed coordination.
- Replace placeholders for message sending in
MetadataManager
with real network operations.
- Node Registration: Implement a system to register nodes with the master (metadata manager).
- Heartbeat Mechanism: Add a mechanism to ensure nodes are active by implementing periodic heartbeat messages.
- Replication: Implement replication of file chunks across multiple nodes for fault tolerance.
- Failure Handling: Define behavior when a node goes offline, including redistribution of its file chunks.
- Implement a persistence layer for metadata to ensure state is retained across restarts (e.g., using a simple file-based storage or a small database like SQLite).
- Delete File: Expand
FileSystem
andMetadataManager
to support file deletion across nodes. - Concurrency Testing: Test thread safety and concurrency issues for both the file system and metadata management, especially under high load.
- Refactor Messaging: Improve the messaging system to make it more flexible for different types of operations.
- Documentation: Add comprehensive documentation for each module, including how each piece fits together.
- Unit Testing: Write unit tests for
MetadataManager
,FileSystem
, and messaging functionality to ensure reliability.
- Begin by integrating the networking layer for real-time communication between nodes.
- Work on implementing a node registration and heartbeat system to maintain awareness of the cluster state.
- Address metadata persistence for ensuring data integrity across restarts.