add shutdown handler to kick sync
This commit is contained in:
		
							parent
							
								
									f3e806096b
								
							
						
					
					
						commit
						952fb75795
					
				
					 2 changed files with 21 additions and 4 deletions
				
			
		|  | @ -23,7 +23,7 @@ use rocket::{ | |||
|     futures::{channel::mpsc, stream::FuturesUnordered, StreamExt}, | ||||
|     outcome::{try_outcome, IntoOutcome}, | ||||
|     request::{FromRequest, Request}, | ||||
|     State, | ||||
|     Shutdown, State, | ||||
| }; | ||||
| use ruma::{DeviceId, ServerName, UserId}; | ||||
| use serde::{de::IgnoredAny, Deserialize}; | ||||
|  | @ -199,7 +199,7 @@ impl Database { | |||
|     } | ||||
| 
 | ||||
|     /// Load an existing database or create a new one.
 | ||||
|     pub async fn load_or_create(config: Config) -> Result<Arc<TokioRwLock<Self>>> { | ||||
|     pub async fn load_or_create(config: &Config) -> Result<Arc<TokioRwLock<Self>>> { | ||||
|         Self::check_sled_or_sqlite_db(&config)?; | ||||
| 
 | ||||
|         let builder = Engine::open(&config)?; | ||||
|  | @ -425,6 +425,17 @@ impl Database { | |||
|         Ok(db) | ||||
|     } | ||||
| 
 | ||||
|     #[cfg(feature = "conduit_bin")] | ||||
|     pub async fn start_on_shutdown_tasks(db: Arc<TokioRwLock<Self>>, shutdown: Shutdown) { | ||||
|         tokio::spawn(async move { | ||||
|             shutdown.await; | ||||
| 
 | ||||
|             log::info!(target: "shutdown-sync", "Received shutdown notification, notifying sync helpers..."); | ||||
| 
 | ||||
|             db.read().await.globals.rotate.fire(); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     pub async fn watch(&self, user_id: &UserId, device_id: &DeviceId) { | ||||
|         let userid_bytes = user_id.as_bytes().to_vec(); | ||||
|         let mut userid_prefix = userid_bytes.clone(); | ||||
|  |  | |||
							
								
								
									
										10
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -220,11 +220,17 @@ async fn main() { | |||
| 
 | ||||
|     config.warn_deprecated(); | ||||
| 
 | ||||
|     let db = Database::load_or_create(config) | ||||
|     let db = Database::load_or_create(&config) | ||||
|         .await | ||||
|         .expect("config is valid"); | ||||
| 
 | ||||
|     let rocket = setup_rocket(raw_config, db); | ||||
|     let rocket = setup_rocket(raw_config, Arc::clone(&db)) | ||||
|         .ignite() | ||||
|         .await | ||||
|         .unwrap(); | ||||
| 
 | ||||
|     Database::start_on_shutdown_tasks(db, rocket.shutdown()).await; | ||||
| 
 | ||||
|     rocket.launch().await.unwrap(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue