docker-mailman icon indicating copy to clipboard operation
docker-mailman copied to clipboard

[BUG] Fail to start mailman-core with MySQL

Open pgmillon opened this issue 4 years ago • 1 comments

Tag/version of Container Images 0.4.*

When trying to run mailman-core against a standalone MySQL instance, entrypoint fails:

MySQL is up - continuing
Using Postfix configuration
HYPERKITTY_API_KEY found, setting up HyperKitty archiver...
HYPERKITTY_URL not set, using the default value of http://mailman-web:8000/hyperkitty
Traceback (most recent call last):
File "/usr/bin/mailman", line 8, in <module>
sys.exit(main())
File "/usr/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/click/core.py", line 1052, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "/usr/lib/python3.8/site-packages/click/core.py", line 914, in make_context
self.parse_args(ctx, args)
File "/usr/lib/python3.8/site-packages/click/core.py", line 1615, in parse_args
rest = super().parse_args(ctx, args)
File "/usr/lib/python3.8/site-packages/click/core.py", line 1370, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/usr/lib/python3.8/site-packages/click/core.py", line 2347, in handle_parse_result
value = self.process_value(ctx, value)
File "/usr/lib/python3.8/site-packages/click/core.py", line 2309, in process_value
value = self.callback(ctx, self, value)
File "/usr/lib/python3.8/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
initialize(value)
File "/usr/lib/python3.8/site-packages/mailman/core/initialize.py", line 218, in initialize
initialize_2(propagate_logs=propagate_logs)
File "/usr/lib/python3.8/site-packages/mailman/core/initialize.py", line 177, in initialize_2
config.db = getUtility(IDatabaseFactory, utility_name).create()
File "/usr/lib/python3.8/site-packages/mailman/database/factory.py", line 55, in create
SchemaManager(database).setup_database()
File "/usr/lib/python3.8/site-packages/mailman/database/factory.py", line 83, in setup_database
context = MigrationContext.configure(self._database.store.connection())
File "/usr/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1142, in connection
return self._connection_for_bind(
File "/usr/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1150, in _connection_for_bind
return self.transaction._connection_for_bind(
File "/usr/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 433, in _connection_for_bind
conn = bind._contextual_connect()
File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2302, in _contextual_connect
self._wrap_pool_connect(self.pool.connect, None),
File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2336, in _wrap_pool_connect
return fn()
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 364, in connect
return _ConnectionFairy._checkout(self)
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 778, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 495, in checkout
rec = pool._do_get()
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 140, in _do_get
self._dec_overflow()
File "/usr/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
compat.raise_(
File "/usr/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
raise exception
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 137, in _do_get
return self._create_connection()
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 309, in _create_connection
return _ConnectionRecord(self)
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 440, in __init__
self.__connect(first_connect_check=True)
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 661, in __connect
pool.logger.debug("Error on connect(): %s", e)
File "/usr/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
compat.raise_(
File "/usr/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
raise exception
File "/usr/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 656, in __connect
connection = pool._invoke_creator(self)
File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 508, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/usr/lib/python3.8/site-packages/pymysql/connections.py", line 353, in __init__
self.connect()
File "/usr/lib/python3.8/site-packages/pymysql/connections.py", line 633, in connect
self._request_authentication()
File "/usr/lib/python3.8/site-packages/pymysql/connections.py", line 932, in _request_authentication
auth_packet = _auth.caching_sha2_password_auth(self, auth_packet)
File "/usr/lib/python3.8/site-packages/pymysql/_auth.py", line 265, in caching_sha2_password_auth
data = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)
File "/usr/lib/python3.8/site-packages/pymysql/_auth.py", line 143, in sha2_rsa_encrypt
raise RuntimeError(
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

Adding py-cryptography package seems to solve the issue.

pgmillon avatar Dec 15 '21 22:12 pgmillon

#533 fixes this issue

pgmillon avatar Dec 16 '21 21:12 pgmillon

This issue has not been updated for more than 1year

github-actions[bot] avatar Dec 16 '22 22:12 github-actions[bot]