Bug 1148863

Summary: Pcsd backward/forward compatibility issues
Product: Red Hat Enterprise Linux 7 Reporter: Radek Steiger <rsteiger>
Component: pcsAssignee: Tomas Jelinek <tojeline>
Status: CLOSED ERRATA QA Contact: cluster-qe <cluster-qe>
Severity: unspecified Docs Contact:
Priority: high    
Version: 7.1CC: cluster-maint, tojeline
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: pcs-0.9.140-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 09:32:54 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: 1189857    
Bug Blocks: 1205796    

Description Radek Steiger 2014-10-02 14:40:43 UTC
Description of problem:

In the process of implementing stuff into the PCS GUI, the data structure used by the javascript framework is sometimes changed in a way that makes one version backward incompatible with others, causing the GUI to fall apart when 

This is not only problem when the cluster is only partially updated, but it causes problems where PCSD should be able to manage multiple clusters from a single instance.

Two things to consider:

1. API versioning;
2. provide a graceful message instead of falling apart, when an incompatibility problem occurs.

The issue is clearly visible between version pcs-0.9.130-1.el7 and version pcs-0.9.129-1.el7.

In this case I have 4 nodes with following pcs versions:
 virt-041: pcs-0.9.130-1.el7
 virt-042: pcs-0.9.130-1.el7
 virt-043: pcs-0.9.129-1.el7
 virt-044: pcs-0.9.129-1.el7

When the cluster is imported into those two versions, both GUIs will be broken, although each of those in a different way:

 build 129: the node list is completely empty
 build 130: node list is stuck at loading, only nodes with the same build can be seen in the background


(Screenshots below.)

Comment 6 Tomas Jelinek 2015-06-05 09:10:05 UTC
The pcs builds mentioned in the description were not released.

We took following actions to prevent this kind of issues:
- focus on forward and backward compatibility when designing new data structures and API calls
- check if an item is present in a data structure sent from other pcsd instances instead of simply reading it and rely on its presence
- check for cases when a pcsd instance does not support requested operation (e.g. returns HTTP 404 code) and handle them appropriately
- keep a backward compatibility layer when changing functionalities
- implement functions to discover capabilities of a pcsd instance
- check for cases when it is not possible to fulfill a request due to incompatibility, handle them gracefully and display an error message

Comment 13 errata-xmlrpc 2015-11-19 09:32:54 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-2290.html