Merge pull request #7443 from saurabh6790/read_from_secondary

fix: naming and provision to use same db credentials for secondary
This commit is contained in:
Rushabh Mehta 2019-05-16 14:42:48 +05:30 committed by GitHub
commit 6403ffa4df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -187,15 +187,20 @@ def connect(site=None, db_name=None):
local.db = get_db(user=db_name or local.conf.db_name)
set_user("Administrator")
def connect_read_only():
def connect_replica():
from frappe.database import get_db
user = local.conf.db_name
password = local.conf.db_password
local.read_only_db = get_db(host=local.conf.slave_host, user=local.conf.slave_db_name,
password=local.conf.slave_db_password)
if local.conf.different_credentials_for_replica:
user = local.conf.replica_db_name
password = local.conf.replica_db_password
local.replica_db = get_db(host=local.conf.replica_host, user=user, password=password)
# swap db connections
local.master_db = local.db
local.db = local.read_only_db
local.primary_db = local.db
local.db = local.replica_db
def get_site_config(sites_path=None, site_path=None):
"""Returns `site_config.json` combined with `sites/common_site_config.json`.
@ -495,16 +500,17 @@ def whitelist(allow_guest=False, xss_safe=False):
def read_only():
def innfn(fn):
def wrapper_fn(*args, **kwargs):
if conf.use_slave_for_read_only:
connect_read_only()
if conf.read_from_replica:
connect_replica()
try:
retval = fn(*args, **get_newargs(fn, kwargs))
except:
raise
finally:
if local and hasattr(local, 'master_db'):
if local and hasattr(local, 'primary_db'):
local.db.close()
local.db = local.master_db
local.db = local.primary_db
return retval
return wrapper_fn