[#3] Add alternative shutdown functions to allow flushing on non-SIGHUP shutdowns
This commit is contained in:
		
							
								
								
									
										23
									
								
								pvcd.py
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								pvcd.py
									
									
									
									
									
								
							| @@ -153,10 +153,27 @@ def cleanup(signum, frame): | ||||
|     # Exit | ||||
|     sys.exit(0) | ||||
|  | ||||
| # Flush function | ||||
| def flush(): | ||||
|     this_node = t_node[myhostname] | ||||
|     this_node.flush() | ||||
|  | ||||
| # Shutdown function | ||||
| def dshutdown(): | ||||
|     ansiiprint.echo('Flushing this node', '', 'e') | ||||
|     flush() | ||||
|     ansiiprint.echo('NOTE: This node must be unflushed by the administrator after daemon startup', '', 'i') | ||||
|     cleanup() | ||||
|  | ||||
| # Reload shutdown function | ||||
| def dreload(): | ||||
|     cleanup() | ||||
|  | ||||
| # Handle signals gracefully | ||||
| signal.signal(signal.SIGTERM, cleanup) | ||||
| signal.signal(signal.SIGINT, cleanup) | ||||
| signal.signal(signal.SIGQUIT, cleanup) | ||||
| signal.signal(signal.SIGTERM, dshutdown) | ||||
| signal.signal(signal.SIGINT, dshutdown) | ||||
| signal.signal(signal.SIGQUIT, dshutdown) | ||||
| signal.signal(signal.SIGHUP, dreload) | ||||
|  | ||||
| # Gather useful data about our host for staticdata | ||||
| # Static data format: 'cpu_count', 'arch', 'os', 'kernel' | ||||
|   | ||||
| @@ -9,6 +9,7 @@ WorkingDirectory = /usr/share/pvc | ||||
| Environment = PYTHONUNBUFFERED=true | ||||
| Environment = PVCD_CONFIG_FILE=/etc/pvc/pvcd.conf | ||||
| ExecStart = /usr/share/pvc/pvcd.py | ||||
| ExecReload = /bin/kill -HUP $MAINPID | ||||
| Restart = on-failure | ||||
|  | ||||
| [Install] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user