private void doHearbeats() {
		new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				// this code will be executed after 5 seconds
				masterLogger.logMessage("===>> Heartbeats @ sec = "
						+ executionTime);
				for (Iterator<Entry<Integer, ReplicaLoc>> iterator = replicaPaths
						.entrySet().iterator(); iterator.hasNext();) {
					Entry<Integer, ReplicaLoc> entry = iterator.next();
					ReplicaLoc repl = entry.getValue();
					String replLoc = repl.location;
					int replPort = repl.replicaPort;

					// Reading from replica
					Registry registryReplica1 = null;
					try {
						registryReplica1 = LocateRegistry.getRegistry(replLoc,
								replPort);
					} catch (RemoteException e) {
						e.printStackTrace();
					}

					ReplicaServerClientInterface replHandler = null;
					try {
						replHandler = (ReplicaServerClientInterface) registryReplica1
								.lookup(Global.REPLICA_LOOKUP);
					} catch (RemoteException | NotBoundException e) {
						e.printStackTrace();
					}

					try {
						if (!replHandler.checkIsAlive()) {
							masterLogger.logMessage("Replica #"
									+ replHandler.getReplicaID()
									+ " is NOT alive !");
						} else {
							masterLogger.logMessage("Replica #"
									+ replHandler.getReplicaID()
									+ " is alive !");

						}

					} catch (RemoteException e) {
						e.printStackTrace();
					}
				}
				masterLogger.logMessage("===>> Heartbeats END");
				executionTime += 60;
				doHearbeats();
			}

		}, 60 * 1000);
	}