Red Hat Bugzilla – Bug 1148863
Pcsd backward/forward compatibility issues
Last modified: 2015-11-19 04:32:54 EST
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.)
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
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