From 9adeee1c75411aca030b6c678bc9f08c1303db3a Mon Sep 17 00:00:00 2001
From: mcmlxxix <>
Date: Fri, 12 Mar 2010 20:11:10 +0000
Subject: [PATCH] change logging to LOG_DEBUG level (stop spamming the terminal
 server console) allow 1 second gap when comparing file dates

---
 exec/load/commclient.js | 47 +++++++++++++++++++++++------------------
 exec/load/filesync.js   | 12 +++++++++--
 2 files changed, 37 insertions(+), 22 deletions(-)

diff --git a/exec/load/commclient.js b/exec/load/commclient.js
index 91999e054d..956b01dc7d 100644
--- a/exec/load/commclient.js
+++ b/exec/load/commclient.js
@@ -73,7 +73,7 @@ function ServiceConnection(id)
 		}
 		if(!data.scope) 
 		{
-			log("scope undefined");
+			log(LOG_DEBUG,"scope undefined");
 			return false;
 		}
 		var packet=data.scope + this.session_id + "" + data.toSource() + "\r\n";
@@ -89,7 +89,7 @@ function ServiceConnection(id)
 		var filesock=new Socket();
 		filesock.connect(hub,port,connection_timeout);
 		if(!filesock.is_connected) { 
-			log("error connecting to service");
+			log(LOG_DEBUG,"error connecting to service");
 			return false;
 		}
 		
@@ -99,7 +99,7 @@ function ServiceConnection(id)
 			var data=filesock.recvline(1024,connection_timeout);
 			if(data!=null)
 			{
-				log(data);
+				log(LOG_DEBUG,data);
 				data=parse_query(data);
 				var response=data[1];
 				var file=data[2];
@@ -118,11 +118,11 @@ function ServiceConnection(id)
 						break;
 					default:
 						filesock.close();
-						log("unknown response: " + response);
+						log(LOG_DEBUG,"unknown response: " + response);
 						break;
 				}
 			} else {
-				log("transfer timed out: " + (file?file:remote_file));
+				log(LOG_DEBUG,"transfer timed out: " + (file?file:remote_file));
 				filesock.close();
 			}
 		}
@@ -137,7 +137,7 @@ function ServiceConnection(id)
 		var filesock=new Socket();
 		filesock.connect(hub,port,connection_timeout);
 		if(!filesock.is_connected) { 
-			log("error connecting to service");
+			log(LOG_DEBUG,"error connecting to service");
 			return false;
 		}
 		
@@ -156,24 +156,24 @@ function ServiceConnection(id)
 				switch(response)
 				{
 					case "#ok":
-						log("sending file: " + filename);
+						log(LOG_DEBUG,"sending file: " + filename);
 						filesock.sendfile(files[f]);
 						filesock.send("#eof\r\n");
-						log("file sent: " + filename);
+						log(LOG_DEBUG,"file sent: " + filename);
 						break;
 					case "#skip":
-						log("skipping file");
+						log(LOG_DEBUG,"skipping file");
 						break;
 					case "#abort":
-						log("aborting query");
+						log(LOG_DEBUG,"aborting query");
 						return false;
 					default:
-						log("unknown response: " + response);
+						log(LOG_DEBUG,"unknown response: " + response);
 						filesock.send("#abort\r\n");
 						return false;
 				}
 			} else {
-				log("query timed out");
+				log(LOG_DEBUG,"query timed out");
 				break;
 			}
 		}
@@ -183,16 +183,22 @@ function ServiceConnection(id)
 	}
 	this.close=function()
 	{
-		log("terminating service connection");
+		log(LOG_DEBUG,"terminating service connection");
 		sock.close();
 	}
 
+	function compare_dates(local,remote)
+	{
+		//will treat numbers with a difference of 1 or 0 as the same, due to issues with some file systems
+		if(Math.abs(local-remote)<=1) return true;
+		else return false;
+	}
 	function receive_file(socket,session_id,filename,filedate)
 	{
 		filename=working_dir+filename;
-		if(file_date(filename)==filedate)
+		if(compare_dates(file_date(filename),filedate))
 		{
-			log("skipping file: " + file_getname(filename));
+			log(LOG_DEBUG,"skipping file: " + file_getname(filename));
 			socket.send(file_sync + session_id + "#skip\r\n");
 			return false;
 		}
@@ -200,7 +206,7 @@ function ServiceConnection(id)
 		socket.send(file_sync + session_id + "#ok\r\n");
 		var file=new File(filename + ".tmp");
 		file.open('w',false);
-		log("receiving file: " + file_getname(filename));
+		log(LOG_DEBUG,"receiving file: " + file_getname(filename));
 		while(socket.is_connected)
 		{
 			var data=socket.recvline(1024,connection_timeout);
@@ -209,13 +215,14 @@ function ServiceConnection(id)
 				switch(data)
 				{
 					case "#abort":
-						log("transfer aborted");
+						log(LOG_DEBUG,"transfer aborted");
 						file.close();
 						file_remove(file.name);
 						return false;
 					case "#eof":
-						log("file received: " + filename);
+						log(LOG_DEBUG,"file received: " + filename);
 						file.close();
+						if(file_exists(filename+".bck")) file_remove(filename+".bck");
 						file_rename(filename,filename+".bck");
 						file_rename(file.name,filename);
 						file_utime(filename,time(),filedate);
@@ -225,13 +232,13 @@ function ServiceConnection(id)
 						break;
 				}
 			} else {
-				log("transfer timed out: " +  file_getname(filename));
+				log(LOG_DEBUG,"transfer timed out: " +  file_getname(filename));
 				file.close();
 				file_remove(file.name);
 				return false;
 			}
 		}
-		log("socket connection error");
+		log(LOG_DEBUG,"socket connection error");
 		file.close();
 		file_remove(file.name);
 		return false;
diff --git a/exec/load/filesync.js b/exec/load/filesync.js
index 04ef53c5ad..fa490288aa 100644
--- a/exec/load/filesync.js
+++ b/exec/load/filesync.js
@@ -138,7 +138,7 @@ function sync_local(session_id,dir,filemask)
 function receive_file(session_id,dir,filename,filedate)
 {
 	fname=dir+filename;
-	if(file_date(fname)==filedate)
+	if(compare_dates(file_date(fname),filedate))
 	{
 		sock.send("@" + session_id + "#skip\r\n");
 		return false;
@@ -163,6 +163,7 @@ function receive_file(session_id,dir,filename,filedate)
 				case "#eof":
 					log("file received: " + filename);
 					file.close();
+					if(file_exists(fname+".bck")) file_remove(fname+".bck");
 					file_rename(fname,fname+".bck");
 					file_rename(file.name,fname);
 					file_utime(filename,time(),filedate);
@@ -173,7 +174,6 @@ function receive_file(session_id,dir,filename,filedate)
 					break;
 			}
 		} else {
-			log(sock.error);
 			log("transfer timed out: " + filename);
 			file.close();
 			file_remove(file.name);
@@ -184,6 +184,14 @@ function receive_file(session_id,dir,filename,filedate)
 	file_remove(file.name);
 	return false;
 }
+function compare_dates(local,remote)
+{
+	//will treat numbers with a difference of 1 or 0 as the same, due to issues with some file systems
+	if(Math.abs(local-remote)<=1) return true;
+	//will reject files with a time_t older than the local copy
+	if(local>remote) return true;
+	else return false;
+}
 function hub_route(hub_address,hub_port)
 {
 	log("routing data to hub");
-- 
GitLab