mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-10-27 06:11:36 +01:00 
			
		
		
		
	Merge pull request #2901 from matrix-org/erikj/split_as_stores
Split AS stores
This commit is contained in:
		
						commit
						c57607874c
					
				| @ -1,5 +1,6 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright 2015, 2016 OpenMarket Ltd | ||||
| # Copyright 2018 New Vector Ltd | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -13,33 +14,11 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| from ._base import BaseSlavedStore | ||||
| from synapse.storage import DataStore | ||||
| from synapse.config.appservice import load_appservices | ||||
| from synapse.storage.appservice import _make_exclusive_regex | ||||
| from synapse.storage.appservice import ( | ||||
|     ApplicationServiceWorkerStore, ApplicationServiceTransactionWorkerStore, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| class SlavedApplicationServiceStore(BaseSlavedStore): | ||||
|     def __init__(self, db_conn, hs): | ||||
|         super(SlavedApplicationServiceStore, self).__init__(db_conn, hs) | ||||
|         self.services_cache = load_appservices( | ||||
|             hs.config.server_name, | ||||
|             hs.config.app_service_config_files | ||||
|         ) | ||||
|         self.exclusive_user_regex = _make_exclusive_regex(self.services_cache) | ||||
| 
 | ||||
|     get_app_service_by_token = DataStore.get_app_service_by_token.__func__ | ||||
|     get_app_service_by_user_id = DataStore.get_app_service_by_user_id.__func__ | ||||
|     get_app_services = DataStore.get_app_services.__func__ | ||||
|     get_new_events_for_appservice = DataStore.get_new_events_for_appservice.__func__ | ||||
|     create_appservice_txn = DataStore.create_appservice_txn.__func__ | ||||
|     get_appservices_by_state = DataStore.get_appservices_by_state.__func__ | ||||
|     get_oldest_unsent_txn = DataStore.get_oldest_unsent_txn.__func__ | ||||
|     _get_last_txn = DataStore._get_last_txn.__func__ | ||||
|     complete_appservice_txn = DataStore.complete_appservice_txn.__func__ | ||||
|     get_appservice_state = DataStore.get_appservice_state.__func__ | ||||
|     set_appservice_last_pos = DataStore.set_appservice_last_pos.__func__ | ||||
|     set_appservice_state = DataStore.set_appservice_state.__func__ | ||||
|     get_if_app_services_interested_in_user = ( | ||||
|         DataStore.get_if_app_services_interested_in_user.__func__ | ||||
|     ) | ||||
| class SlavedApplicationServiceStore(ApplicationServiceTransactionWorkerStore, | ||||
|                                     ApplicationServiceWorkerStore): | ||||
|     pass | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright 2015, 2016 OpenMarket Ltd | ||||
| # Copyright 2018 New Vector Ltd | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -20,6 +21,7 @@ from twisted.internet import defer | ||||
| from synapse.api.constants import Membership | ||||
| from synapse.appservice import AppServiceTransaction | ||||
| from synapse.config.appservice import load_appservices | ||||
| from synapse.storage.events import EventsWorkerStore | ||||
| from synapse.storage.roommember import RoomsForUser | ||||
| from ._base import SQLBaseStore | ||||
| 
 | ||||
| @ -46,17 +48,16 @@ def _make_exclusive_regex(services_cache): | ||||
|     return exclusive_user_regex | ||||
| 
 | ||||
| 
 | ||||
| class ApplicationServiceStore(SQLBaseStore): | ||||
| 
 | ||||
| class ApplicationServiceWorkerStore(SQLBaseStore): | ||||
|     def __init__(self, db_conn, hs): | ||||
|         super(ApplicationServiceStore, self).__init__(db_conn, hs) | ||||
|         self.hostname = hs.hostname | ||||
|         self.services_cache = load_appservices( | ||||
|             hs.hostname, | ||||
|             hs.config.app_service_config_files | ||||
|         ) | ||||
|         self.exclusive_user_regex = _make_exclusive_regex(self.services_cache) | ||||
| 
 | ||||
|         super(ApplicationServiceWorkerStore, self).__init__(db_conn, hs) | ||||
| 
 | ||||
|     def get_app_services(self): | ||||
|         return self.services_cache | ||||
| 
 | ||||
| @ -112,6 +113,13 @@ class ApplicationServiceStore(SQLBaseStore): | ||||
|                 return service | ||||
|         return None | ||||
| 
 | ||||
| 
 | ||||
| class ApplicationServiceStore(ApplicationServiceWorkerStore): | ||||
| 
 | ||||
|     def __init__(self, db_conn, hs): | ||||
|         super(ApplicationServiceStore, self).__init__(db_conn, hs) | ||||
|         self.hostname = hs.hostname | ||||
| 
 | ||||
|     def get_app_service_rooms(self, service): | ||||
|         """Get a list of RoomsForUser for this application service. | ||||
| 
 | ||||
| @ -184,11 +192,8 @@ class ApplicationServiceStore(SQLBaseStore): | ||||
|         return rooms_for_user_matching_user_id | ||||
| 
 | ||||
| 
 | ||||
| class ApplicationServiceTransactionStore(SQLBaseStore): | ||||
| 
 | ||||
|     def __init__(self, db_conn, hs): | ||||
|         super(ApplicationServiceTransactionStore, self).__init__(db_conn, hs) | ||||
| 
 | ||||
| class ApplicationServiceTransactionWorkerStore(ApplicationServiceWorkerStore, | ||||
|                                                EventsWorkerStore): | ||||
|     @defer.inlineCallbacks | ||||
|     def get_appservices_by_state(self, state): | ||||
|         """Get a list of application services based on their state. | ||||
| @ -433,3 +438,11 @@ class ApplicationServiceTransactionStore(SQLBaseStore): | ||||
|         events = yield self._get_events(event_ids) | ||||
| 
 | ||||
|         defer.returnValue((upper_bound, events)) | ||||
| 
 | ||||
| 
 | ||||
| class ApplicationServiceTransactionStore(ApplicationServiceTransactionWorkerStore): | ||||
|     # This is currently empty due to there not being any AS storage functions | ||||
|     # that can't be run on the workers. Since this may change in future, and | ||||
|     # to keep consistency with the other stores, we keep this empty class for | ||||
|     # now. | ||||
|     pass | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user