public override void execute(MetaDataServer md) { if (!md.FileMetadata.ContainsKey(Filename)) { throw new OpenFileException("#MDS.open - File " + Filename + " does not exist"); } else if (md.FileMetadata[Filename].Clients.Contains(ClientID)) { Console.WriteLine("#MDS.open - File " + Filename + " is already open for user " + ClientID); Result = md.FileMetadata[Filename]; return; } else { Console.WriteLine("#MDS: opening file: " + Filename); lock (Filename) { md.FileMetadata[Filename].IsOpen = true; md.FileMetadata[Filename].Clients.Add(ClientID); md.makeCheckpoint(); Result = md.FileMetadata[Filename]; } } }
public override void execute(MetaDataServer md) { if (!md.FileMetadata.ContainsKey(Filename)) { throw new CommonTypes.Exceptions.DeleteFileException("#MDS.delete - File " + Filename + " does not exist"); } md.FileMetadata.Remove(Filename); Console.WriteLine("#MDS: Deleted file: " + Filename); md.makeCheckpoint(); }
public override void execute(MetaDataServer md) { Console.WriteLine("#MDS: Registering DS " + DataServerId); if ( md.DataServers.ContainsKey(DataServerId) ) { md.DataServers.Remove(DataServerId); } ServerObjectWrapper remoteObjectWrapper = new ServerObjectWrapper(DataServerPort, DataServerId, DataServerHost); md.DataServers.Add(DataServerId, remoteObjectWrapper); md.addServerToUnbalancedFiles(DataServerId); HeartbeatMessage heartbeat = new HeartbeatMessage(DataServerId, 0 , 0, 0, 0, new Dictionary<string,FileAccessCounter>()); md.receiveHeartbeat(heartbeat); md.makeCheckpoint(); }
public override void execute(MetaDataServer md) { if (!md.FileMetadata.ContainsKey(Filename)) { // throw new CloseFileException("#MDS.close - File " + Filename + " does not exist"); return; } if (md.FileMetadata.ContainsKey(Filename) && !md.FileMetadata[Filename].Clients.Contains(ClientID)) { //throw new CloseFileException("#MDS.close - File " + filename + " is not open for user " + clientID); Console.WriteLine("#MDS.close - File " + Filename + " is already closed for user " + ClientID); return; } Console.WriteLine("#MDS: closing file " + Filename + "..."); md.FileMetadata[Filename].Clients.Remove(ClientID); if (md.FileMetadata[Filename].Clients.Count == 0) { md.FileMetadata[Filename].IsOpen = false; } md.makeCheckpoint(); }
public override void execute(MetaDataServer md) { if ((WriteQuorum > NumberOfDataServers) || (ReadQuorum > NumberOfDataServers)) { throw new CreateFileException("Invalid quorums values in create " + Filename); } if (md.FileMetadata.ContainsKey(Filename)) { throw new CreateFileException("#MDS.create - The file " + Filename + " already exists "); } // List<ServerObjectWrapper> newFileDataServers = getFirstServers(md, NumberOfDataServers); List<ServerObjectWrapper> newFileDataServers = md.getSortedServers(NumberOfDataServers); FileMetadata newFileMetadata = new FileMetadata(Filename, NumberOfDataServers, ReadQuorum, WriteQuorum, newFileDataServers); md.FileMetadata.Add(Filename, newFileMetadata); md.addMetadataLock(Filename, new ManualResetEvent(false)); md.getMigratingFiles().Add(Filename, new List<Tuple<string, string>>()); Console.WriteLine("#MDS: Created " + Filename); md.makeCheckpoint(); Result = md.FileMetadata[Filename]; }