You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ambari.apache.org by "Jonathan Hurley (JIRA)" <ji...@apache.org> on 2015/02/20 22:07:13 UTC

[jira] [Updated] (AMBARI-9736) Ambari Exhausts Connection Pool When Using MySQL Due To Invalid Connections

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

Jonathan Hurley updated AMBARI-9736:
------------------------------------
    Attachment: AMBARI-9736.patch

> Ambari Exhausts Connection Pool When Using MySQL Due To Invalid Connections
> ---------------------------------------------------------------------------
>
>                 Key: AMBARI-9736
>                 URL: https://issues.apache.org/jira/browse/AMBARI-9736
>             Project: Ambari
>          Issue Type: Bug
>          Components: ambari-server
>    Affects Versions: 1.7.0, 2.0.0
>            Reporter: Jonathan Hurley
>            Assignee: Jonathan Hurley
>            Priority: Critical
>             Fix For: 1.7.0, 2.0.0
>
>         Attachments: AMBARI-9736.patch
>
>
> When using MySQL, Ambari appears to try to use invalid connections about about 8 hours of use. 
> {noformat}
> Exception EclipseLink-4002 (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
> Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
> The last packet successfully received from the server was 909,270 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
> Error Code: 0
> Call: SELECT t0.service_config_id, t0.cluster_id, t0.create_timestamp, t0.group_id, t0.note, t0.service_name, t0.user_name, t0.version FROM serviceconfig t0 WHERE ((t0.cluster_id = ?) AND (t0.create_timestamp = (SELECT MAX(t1.create_timestamp) FROM serviceconfig t1 WHERE (((t1.service_name = t0.service_name) AND (t1.cluster_id = ?)) AND (t1.group_id IS NULL)))))
> bind => 2 parameters bound
> Query: ReadAllQuery(referenceClass=ServiceConfigEntity sql="SELECT t0.service_config_id, t0.cluster_id, t0.create_timestamp, t0.group_id, t0.note, t0.service_name, t0.user_name, t0.version FROM serviceconfig t0 WHERE ((t0.cluster_id = ?) AND (t0.create_timestamp = (SELECT MAX(t1.create_timestamp) FROM serviceconfig t1 WHERE (((t1.service_name = t0.service_name) AND (t1.cluster_id = ?)) AND (t1.group_id IS NULL)))))")
> {noformat}
> EclipseLink does not appear to correctly handle connections that have been invalidated by MySQL after the default timeout time of 8 hours. 
> STR:
> - Set MySQL's timeouts via /etc/my.cnf
> {noformat}
> [mysqld]
> interactive_timeout=120
> wait_timeout=120
> {noformat}
> - Verify the connection timeouts are lowered
> {noformat}
> mysql> SHOW VARIABLES LIKE "%timeout%";
> +----------------------------+----------+
> | Variable_name              | Value    |
> +----------------------------+----------+
> | connect_timeout            | 10       |
> | delayed_insert_timeout     | 300      |
> | innodb_lock_wait_timeout   | 50       |
> | innodb_rollback_on_timeout | OFF      |
> | interactive_timeout        | 120      |
> | lock_wait_timeout          | 31536000 |
> | net_read_timeout           | 30       |
> | net_write_timeout          | 60       |
> | slave_net_timeout          | 3600     |
> | wait_timeout               | 120      |
> +----------------------------+----------+
> 10 rows in set (0.00 sec)
> {noformat}
> - Launch Ambari and wait a few minutes. The exceptions will begin and Ambari will stop working properly. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)