You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Ash Berlin-Taylor (JIRA)" <ji...@apache.org> on 2019/01/15 21:56:00 UTC

[jira] [Resolved] (AIRFLOW-3108) MsSqlHook.run fails to commit if autocommit=False (Default config)

     [ https://issues.apache.org/jira/browse/AIRFLOW-3108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ash Berlin-Taylor resolved AIRFLOW-3108.
----------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.10.3

> MsSqlHook.run fails to commit if autocommit=False (Default config)
> ------------------------------------------------------------------
>
>                 Key: AIRFLOW-3108
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-3108
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: hooks
>    Affects Versions: 1.10.0
>            Reporter: kkkkk
>            Priority: Major
>              Labels: usability
>             Fix For: 1.10.3
>
>
> The MsSqlHook.run method doesn't execute conn.commit() if autocommit is set to False.
>  
> It looks like this bug has existed for a very long time, but wasn't apparent in 1.9, because the default value for autocommit was True. In 1.10 the default value was changed to False and the MsSqlHook and Operator have started failing silently.
>  
> The bug happens because the MssqlHook doesn't implement a custom get_autocommit(self, conn) method.The superclass' DbiApiHook method always returns True even if autocommit wasn't enabled in pymssql. Therefore the hook doesn't call commit and pymsql doesn't autocommit.
>  
> The below patch fixes the issue. Please consider including this fix in airflow 1.10.1, because it is a very frustrating issue to debug.
>  
> {code:java}
> --- mssql_hook.py
> +++ mssql_hook.py
> @@ -50,3 +50,13 @@ class MsSqlHook(DbApiHook):
>  
> def set_autocommit(self, conn, autocommit):
> conn.autocommit(autocommit)
> +
> + def get_autocommit(self, conn):
> + """
> + MS SQL connection gets autocommit in a different way.
> + :param conn: connection to get autocommit setting from.
> + :type conn: connection object.
> + :return: connection autocommit setting
> + :rtype bool
> + """
> + return conn.autocommit_state
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)