Bug 1357759

Summary: Geo-rep silently ignores config parser errors
Product: [Community] GlusterFS Reporter: Aravinda VK <avishwan>
Component: geo-replicationAssignee: Aravinda VK <avishwan>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.7.13CC: bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.7.14 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1349273 Environment:
Last Closed: 2016-08-02 07:24:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1349273, 1357760    
Bug Blocks:    

Description Aravinda VK 2016-07-19 05:55:07 UTC
+++ This bug was initially created as a clone of Bug #1349273 +++

Description of problem:
If Session config or Template config not found, Geo-rep will silently ignore and causes other problems like wrong mount params, wrong paths etc.

Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1. Create Geo-rep session
2. Move Template config file and session config file from /var/lib/glusterd/geo-replication
3. Start Geo-replication

Actual results:
Geo-rep will not fail, but substitute wrong config values when used. 
(We can observe wrong Mount parameters, ps -ax | grep gsyncd | grep glusterfs)

Expected results:
Geo-rep should go to Faulty if unable to read config file.

--- Additional comment from Vijay Bellur on 2016-06-23 02:41:14 EDT ---

REVIEW: http://review.gluster.org/14777 (geo-rep: Handle Config parser errors) posted (#1) for review on master by Aravinda VK (avishwan)

--- Additional comment from Vijay Bellur on 2016-06-23 05:32:25 EDT ---

REVIEW: http://review.gluster.org/14777 (geo-rep: Handle Config parser errors) posted (#2) for review on master by Aravinda VK (avishwan)

--- Additional comment from Vijay Bellur on 2016-07-11 03:12:59 EDT ---

REVIEW: http://review.gluster.org/14777 (geo-rep: Handle Config parser errors) posted (#3) for review on master by Aravinda VK (avishwan)

--- Additional comment from Vijay Bellur on 2016-07-12 08:09:44 EDT ---

COMMIT: http://review.gluster.org/14777 committed in master by Jeff Darcy (jdarcy) 
------
commit d94bf608b16b82f2c8f8588a96459cb746773b32
Author: Aravinda VK <avishwan>
Date:   Thu Jun 23 11:53:36 2016 +0530

    geo-rep: Handle Config parser errors
    
    Python ConfigParser lib has two methods, readfp and read, it should
    be used as follows.
    
        readfp(open("defaults.conf"))
        read("custom.conf")
    
    ConfigParser.read(path) ignores any file errors, which is intentional
    since errors are handled while loading default config.
    
    Geo-rep uses only one config file(Session config in Master side and
    Template config on Slave side) so we should use readfp to avoid
    skipping OS errors.
    
    config.read is retained in case of `--config-set-rx` where glusterd
    creates new template config file.
    
    BUG: 1349273
    Change-Id: I15a14d3743facd7b8c7af0edc70fdefaa43efd04
    Signed-off-by: Aravinda VK <avishwan>
    Reviewed-on: http://review.gluster.org/14777
    Smoke: Gluster Build System <jenkins.org>
    NetBSD-regression: NetBSD Build System <jenkins.org>
    CentOS-regression: Gluster Build System <jenkins.org>
    Reviewed-by: Jeff Darcy <jdarcy>

Comment 1 Vijay Bellur 2016-07-19 05:56:43 UTC
REVIEW: http://review.gluster.org/14946 (geo-rep: Handle Config parser errors) posted (#1) for review on release-3.7 by Aravinda VK (avishwan)

Comment 2 Vijay Bellur 2016-07-28 10:46:27 UTC
COMMIT: http://review.gluster.org/14946 committed in release-3.7 by Aravinda VK (avishwan) 
------
commit deaecdf4320be44ae4a8300c969f724582959067
Author: Aravinda VK <avishwan>
Date:   Thu Jun 23 11:53:36 2016 +0530

    geo-rep: Handle Config parser errors
    
    Python ConfigParser lib has two methods, readfp and read, it should
    be used as follows.
    
        readfp(open("defaults.conf"))
        read("custom.conf")
    
    ConfigParser.read(path) ignores any file errors, which is intentional
    since errors are handled while loading default config.
    
    Geo-rep uses only one config file(Session config in Master side and
    Template config on Slave side) so we should use readfp to avoid
    skipping OS errors.
    
    config.read is retained in case of `--config-set-rx` where glusterd
    creates new template config file.
    
    BUG: 1357759
    Change-Id: I15a14d3743facd7b8c7af0edc70fdefaa43efd04
    Signed-off-by: Aravinda VK <avishwan>
    Reviewed-on: http://review.gluster.org/14777
    (cherry picked from commit d94bf608b16b82f2c8f8588a96459cb746773b32)
    Reviewed-on: http://review.gluster.org/14946
    Smoke: Gluster Build System <jenkins.org>
    NetBSD-regression: NetBSD Build System <jenkins.org>
    Reviewed-by: Kotresh HR <khiremat>
    CentOS-regression: Gluster Build System <jenkins.org>

Comment 3 Kaushal 2016-08-02 07:24:47 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.7.14, please open a new bug report.

glusterfs-3.7.14 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] https://www.gluster.org/pipermail/gluster-devel/2016-August/050319.html
[2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user