public void nodeLeft(String gs)
	{
		maintenance = true;
		System.out.println("Node down! Overlay repair in progres..");
		/*String tmp = this.getUrl() + " Known clusters: ";
		for (String s : resourceManagerLoad.keySet())
		{
			tmp += s + ", ";
		}
		logger.info(tmp);*/
		for (String s : resourceManagerLoad.keySet())
		{
			System.out.println("Informing " + s + ".");
			ControlMessage cMessage = new ControlMessage(ControlMessageType.GSDown);
			cMessage.setUrl(this.getUrl());
			cMessage.setSLoad(gs);
			sendMessage(cMessage, s);
			//socket.sendMessage(cMessage, "localsocket://" + s);
		}
		
		if (gs.equals(downstream_neighbour) || gs.equals(upstream_neighbour))
		{
			if (gs.equals(downstream_neighbour))
			{
				ControlMessage cMessage = new ControlMessage(ControlMessageType.CrashedGS);
				cMessage.setUrl(this.getUrl());
				cMessage.setSLoad(gs);
				sendMessage(cMessage, upstream_neighbour);
				//socket.sendMessage(cMessage, "localsocket://" + upstream_neighbour);
				
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				
				ControlMessage cMessage2 = new ControlMessage(ControlMessageType.NeighborRequest);
				cMessage2.setUrl(this.getUrl());
				cMessage2.setLoad(this.getUrl());
				cMessage2.setSLoad(gs);
				sendMessage(cMessage2, upstream_neighbour);
				//socket.sendMessage(cMessage2, "localsocket://" + upstream_neighbour);
			}
			else
			{
				ControlMessage cMessage = new ControlMessage(ControlMessageType.CrashedGS);
				cMessage.setUrl(this.getUrl());
				cMessage.setSLoad(gs);
				sendMessage(cMessage, downstream_neighbour);
				//socket.sendMessage(cMessage, "localsocket://" + downstream_neighbour);
				
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				
				ControlMessage cMessage2 = new ControlMessage(ControlMessageType.NeighborRequest);
				cMessage2.setUrl(this.getUrl());
				cMessage2.setLoad(this.getUrl());
				cMessage2.setSLoad(gs);
				sendMessage(cMessage2, downstream_neighbour);
				//socket.sendMessage(cMessage2, "localsocket://" + downstream_neighbour);
			}
		}
		else
		{
			ControlMessage cMessage = new ControlMessage(ControlMessageType.CrashedGS);
			cMessage.setUrl(this.getUrl());
			cMessage.setSLoad(gs);
			sendMessage(cMessage, upstream_neighbour);
			//socket.sendMessage(cMessage, "localsocket://" + upstream_neighbour);
			
			ControlMessage cMessage2 = new ControlMessage(ControlMessageType.CrashedGS);
			cMessage2.setUrl(this.getUrl());
			cMessage2.setSLoad(gs);
			sendMessage(cMessage2, downstream_neighbour);
			//socket.sendMessage(cMessage2, "localsocket://" + downstream_neighbour);
		}
		
	}