diff --git a/LCS/Stream/include/Stream/SocketStream.h b/LCS/Stream/include/Stream/SocketStream.h
index 1f77cf751c27e5f981fd5739e668ddef6de0a16d..238be586b305581c8c776af5c917c08e218a1cff 100644
--- a/LCS/Stream/include/Stream/SocketStream.h
+++ b/LCS/Stream/include/Stream/SocketStream.h
@@ -64,6 +64,8 @@ class SocketStream : public FileDescriptorBasedStream
 
     void accept(time_t timeout);
 
+    static void syncNFS();
+
     static std::string readkey(const string &nfskey, time_t &timeout);
     static void writekey(const string &nfskey, uint16 port);
     static void deletekey(const string &nfskey);
diff --git a/LCS/Stream/src/SocketStream.cc b/LCS/Stream/src/SocketStream.cc
index d69c98c5b4c20b276ea71029fe04b469f27e2ab7..d920a5d754d8e169f19f5acab6148e6f0b4b0c0e 100644
--- a/LCS/Stream/src/SocketStream.cc
+++ b/LCS/Stream/src/SocketStream.cc
@@ -261,24 +261,30 @@ void SocketStream::setReadBufferSize(size_t size)
 }
 
 
-std::string SocketStream::readkey(const std::string &nfskey, time_t &timeout)
+void SocketStream::syncNFS()
 {
-  for(;;) {
-    // sync NFS
-    DIR *dir = opendir(".");
+  // sync NFS
+  DIR *dir = opendir(".");
 
-    if (!dir)
-      throw SystemCallException("opendir", errno, THROW_ARGS);
+  if (!dir)
+    throw SystemCallException("opendir", errno, THROW_ARGS);
 
-    if (!readdir(dir))
-      throw SystemCallException("readdir", errno, THROW_ARGS);
+  if (!readdir(dir))
+    throw SystemCallException("readdir", errno, THROW_ARGS);
 
-    if (closedir(dir) != 0)
-      throw SystemCallException("closedir", errno, THROW_ARGS);
+  if (closedir(dir) != 0)
+    throw SystemCallException("closedir", errno, THROW_ARGS);
+}
 
+
+std::string SocketStream::readkey(const std::string &nfskey, time_t &timeout)
+{
+  for(;;) {
     char portStr[16];
     ssize_t len;
 
+    syncNFS();
+
     len = readlink(nfskey.c_str(), portStr, sizeof portStr - 1); // reserve 1 character to insert \0 below
 
     if (len >= 0) {
@@ -313,6 +319,8 @@ void SocketStream::writekey(const std::string &nfskey, uint16 port)
 
 void SocketStream::deletekey(const std::string &nfskey)
 {
+  syncNFS();
+
   if (unlink(nfskey.c_str()) < 0)
     throw SystemCallException("unlink", errno, THROW_ARGS);
 }