Milimetric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/149123
Change subject: Improve connection pool configurability
......................................................................
Improve connection pool configurability
Bug: 68534
Change-Id: Iddafd2bb9e90824757cd71da3e2649585404a79d
---
A tests/manual/connection_pool_configuration.py
M wikimetrics/config/db_config.yaml
M wikimetrics/database.py
3 files changed, 40 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics
refs/changes/23/149123/1
diff --git a/tests/manual/connection_pool_configuration.py
b/tests/manual/connection_pool_configuration.py
new file mode 100644
index 0000000..c9718c7
--- /dev/null
+++ b/tests/manual/connection_pool_configuration.py
@@ -0,0 +1,35 @@
+from unittest import TestCase
+from sqlalchemy.exc import TimeoutError
+from nose.tools import assert_equals, assert_true, raises
+
+from tests.fixtures import mediawiki_project
+from wikimetrics.configurables import db, parse_db_connection_string, queue
+from wikimetrics.database import get_host_projects, get_host_projects_map
+from wikimetrics.models import Page
+
+
+class DatabaseSetupTest(TestCase):
+
+ @raises(TimeoutError)
+ def test_pool_size_can_be_exceeded(self):
+ pool_size = db.config['MEDIAWIKI_POOL_SIZE'] + 11
+ self.sessions = [
+ db.get_mw_session(mediawiki_project)
+ for i in range(pool_size)
+ ]
+ [self.sessions[i].query(Page).all() for i in range(pool_size)]
+
+ def test_pool_size_is_used(self):
+ pool_size = db.config['MEDIAWIKI_POOL_SIZE']
+ self.sessions = [
+ db.get_mw_session(mediawiki_project)
+ for i in range(pool_size)
+ ]
+ [self.sessions[i].query(Page).all() for i in range(pool_size)]
+ assert_true(True)
+
+ def tearDown(self):
+ if hasattr(self, 'sessions'):
+ sessions = getattr(self, 'sessions')
+ for s in sessions:
+ s.close()
diff --git a/wikimetrics/config/db_config.yaml
b/wikimetrics/config/db_config.yaml
index 8571c10..acfed7c 100644
--- a/wikimetrics/config/db_config.yaml
+++ b/wikimetrics/config/db_config.yaml
@@ -1,6 +1,8 @@
SQL_ECHO : False
# For testing with mysql locally (useful for manual connection survival tests)
WIKIMETRICS_ENGINE_URL :
'mysql://wikimetrics:wikimetrics@localhost/wikimetrics'
+WIKIMETRICS_POOL_SIZE : 20
MEDIAWIKI_ENGINE_URL_TEMPLATE :
'mysql://wikimetrics:wikimetrics@localhost/{0}'
+MEDIAWIKI_POOL_SIZE : 32
DEBUG : True
REVISION_TABLENAME : 'revision_userindex'
diff --git a/wikimetrics/database.py b/wikimetrics/database.py
index d57c95c..19fe07d 100644
--- a/wikimetrics/database.py
+++ b/wikimetrics/database.py
@@ -97,6 +97,7 @@
self.config['WIKIMETRICS_ENGINE_URL'],
echo=self.config['SQL_ECHO'],
connect_args={"charset" : "utf8"},
+ pool_size=self.config['WIKIMETRICS_POOL_SIZE'],
)
return self.wikimetrics_engine
@@ -168,7 +169,8 @@
engine = create_engine(
engine_template.format(project),
echo=self.config['SQL_ECHO'],
- convert_unicode=True
+ convert_unicode=True,
+ pool_size=self.config['MEDIAWIKI_POOL_SIZE'],
)
self.mediawiki_engines[project] = engine
return engine
--
To view, visit https://gerrit.wikimedia.org/r/149123
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iddafd2bb9e90824757cd71da3e2649585404a79d
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits