RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1824206 - pcs should keep XML IDs to a reasonable length
Summary: pcs should keep XML IDs to a reasonable length
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: pcs
Version: 7.7
Hardware: x86_64
OS: Linux
high
medium
Target Milestone: rc
: ---
Assignee: Tomas Jelinek
QA Contact: cluster-qe@redhat.com
URL:
Whiteboard:
Depends On: 1822125
Blocks: 1892685
TreeView+ depends on / blocked
 
Reported: 2020-04-15 14:25 UTC by Ken Gaillot
Modified: 2020-10-29 13:04 UTC (History)
19 users (show)

Fixed In Version: pcs-0.9.169-2.el7
Doc Type: Bug Fix
Doc Text:
Cause: User creates a set constraint referencing several resources. Pcs generates an ID for such constraint by concatenating all the resources' names. Consequence: Resulting IDs may be extremely long which causes various issues. The IDs do not fit in pcs output and logs and are generally hard to work with. Fix: Auto-generated set constraints' IDs no longer consist of all resources referenced in constraints. Result: Reasonably short IDs fit better in pcs output, logs and are generally easier to work with.
Clone Of: 1822125
: 1892685 (view as bug list)
Environment:
Last Closed: 2020-09-29 20:10:26 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
proposed fix + tests (44.65 KB, patch)
2020-04-17 14:58 UTC, Tomas Jelinek
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1387358 1 None None None 2023-05-27 09:47:35 UTC
Red Hat Knowledge Base (Solution) 3570291 0 None None None 2020-07-20 14:58:52 UTC
Red Hat Knowledge Base (Solution) 5236281 0 None None None 2020-07-20 15:01:56 UTC
Red Hat Product Errata RHBA-2020:3964 0 None None None 2020-09-29 20:10:42 UTC

Internal Links: 1387358

Description Ken Gaillot 2020-04-15 14:25:39 UTC
In a different BZ it was discovered that pacemaker's CIB crashes with XML IDs somewhere between 1K and 5000 characters in length. The ID in question was created by pcs from a large resource set.

Pacemaker will be fixed to handle long IDs, but it is still a bad idea to create  them for manageability (status output, pcs commands) and CIB size. I'm thinking maybe if the generated ID is above a certain length, a UUID or a short name with a random number at the end could be used.

--- Additional comment from Ken Gaillot on 2020-04-14 16:16:55 UTC ---

The first unusual thing I noticed is an insanely long XML id in the CIB change just before the core dump:

Jan 30 07:38:39 [5568] sinlxsveshi01        cib:     info: cib_perform_op:      ++ /cib/configuration/constraints:  <rsc_colocation score="INFINITY" id="pcs_rsc_colocation_set_sv.svtest.aa.partition.10_sv.svtest.aa.partition.11_sv.svtest.aa.partition.12_sv.svtest.aa.partition.13_sv.svtest.aa.partition.14_sv.svtest.aa.partition.15_sv.svtest.aa.partition.16_sv.svtest.aa.partition.17_sv.svtest.aa.partition.18_sv.svtest.aa.partition.19_sv.svtest.aa.partition.20_sv.svtest.aa.partition.21_sv.svtest.aa.partition.22_sv

The log message cuts off after a certain number of characters, so there's no telling how long it actually is. I did some tests, and I was able to reproduce the core dump with an id 5000 characters long (1024 was OK, haven't checked what the exact threshhold is).

Hopefully I can get a fix in 7.9.

The obvious workaround is to keep XML IDs under 1KB.

--- Additional comment from  on 2020-04-14 22:54:20 UTC ---

Thanks Guys for the assessment. 

I had thought it linked to the number of resources which is why I asked the customer to drop the number (whereupon it worked).
However as you can see from this excerpt from our trace file we do not directly create this XML id.

We do perform a 'pcs constraint order' and a 'pcs constraint colocation' prior to the 'pcs resource update' which triggers the core dump.
The number of resource listed (about 90) are required for a 7 node cluster supporting a number of data partitions per node (about 7).
The only things I could think to do would be to reduce the length of the names  or attempt to break these commands up which either may not work or not suport the required semantics.

It would seem that the creation of the id is performed by pacemaker from the list of associated resources.
The length of the Id would be 2730 byte i think.

Is the reference to 7.9 for Linux version?
I concerned that the Severity has been altered to medium when I still can't see a viable workaround yet (although I will be looking for it now!)

Regards Michael

P.S. Jan I am relieved that the comment is incorrect .. I couldn't find any sign of thread locking!
-----@@@@-----
pcs constraint order set sv.svtest.aa.sv.monitor-clone action=start set sv.svtest.aa.partition.10 sv.svtest.aa.partition.11 sv.svtest.aa.partition.12 sv.svtest.aa.partition.13 sv.svtest.aa.partition.14 sv.svtest.aa.partition.15 sv.svtest.aa.partition.16 sv.svtest.aa.partition.17 sv.svtest.aa.partition.18 sv.svtest.aa.partition.19 sv.svtest.aa.partition.20 sv.svtest.aa.partition.21 sv.svtest.aa.partition.22 sv.svtest.aa.partition.23 sv.svtest.aa.partition.24 sv.svtest.aa.partition.25 sv.svtest.aa.partition.26 sv.svtest.aa.partition.27 sv.svtest.aa.partition.28 sv.svtest.aa.partition.29 sv.svtest.aa.partition.30 sv.svtest.aa.partition.31 sv.svtest.aa.partition.32 sv.svtest.aa.partition.33 sv.svtest.aa.partition.34 sv.svtest.aa.partition.35 sv.svtest.aa.partition.36 sv.svtest.aa.partition.37 sv.svtest.aa.partition.38 sv.svtest.aa.partition.39 sv.svtest.aa.partition.40 sv.svtest.aa.partition.41 sv.svtest.aa.partition.42 sv.svtest.aa.partition.43 sv.svtest.aa.partition.44 sv.svtest.aa.partition.45 sv.svtest.aa.partition.46 sv.svtest.aa.partition.47 sv.svtest.aa.partition.48 sv.svtest.aa.partition.49 sv.svtest.aa.partition.50 sv.svtest.aa.partition.51 sv.svtest.aa.partition.52 sv.svtest.aa.partition.53 sv.svtest.aa.partition.54 sv.svtest.aa.partition.56 sv.svtest.aa.partition.backup.10 sv.svtest.aa.partition.backup.11 sv.svtest.aa.partition.backup.12 sv.svtest.aa.partition.backup.13 sv.svtest.aa.partition.backup.14 sv.svtest.aa.partition.backup.15 sv.svtest.aa.partition.backup.16 sv.svtest.aa.partition.backup.17 sv.svtest.aa.partition.backup.18 sv.svtest.aa.partition.backup.19 sv.svtest.aa.partition.backup.20 sv.svtest.aa.partition.backup.21 sv.svtest.aa.partition.backup.22 sv.svtest.aa.partition.backup.23 sv.svtest.aa.partition.backup.24 sv.svtest.aa.partition.backup.25 sv.svtest.aa.partition.backup.26 sv.svtest.aa.partition.backup.27 sv.svtest.aa.partition.backup.28 sv.svtest.aa.partition.backup.29 sv.svtest.aa.partition.backup.30 sv.svtest.aa.partition.backup.31 sv.svtest.aa.partition.backup.32 sv.svtest.aa.partition.backup.33 sv.svtest.aa.partition.backup.34 sv.svtest.aa.partition.backup.35 sv.svtest.aa.partition.backup.36 sv.svtest.aa.partition.backup.37 sv.svtest.aa.partition.backup.38 sv.svtest.aa.partition.backup.39 sv.svtest.aa.partition.backup.40 sv.svtest.aa.partition.backup.41 sv.svtest.aa.partition.backup.42 sv.svtest.aa.partition.backup.43 sv.svtest.aa.partition.backup.44 sv.svtest.aa.partition.backup.45 sv.svtest.aa.partition.backup.46 sv.svtest.aa.partition.backup.47 sv.svtest.aa.partition.backup.48 sv.svtest.aa.partition.backup.49 sv.svtest.aa.partition.backup.50 sv.svtest.aa.partition.backup.51 sv.svtest.aa.partition.backup.52 sv.svtest.aa.partition.backup.53 sv.svtest.aa.partition.backup.54 sv.svtest.aa.partition.backup.56 sv.svtest.aa.std sequential=false action=start require-all=true setoptions kind=Optional symmetrical=true => Return=0

2020-01-30 07:38:39.205 [18804:sinlxsveshi01] sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4739) <Rc=0 Errno=0
2020-01-30 07:38:39.205 [18804:sinlxsveshi01] sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4685) > noexec=0 always=0 <pcs constraint colocation set sv.svtest.aa.partition.10 sv.svtest.aa.partition.11 sv.svtest.aa.partition.12 sv.svtest.aa.partition.13 sv.svtest.aa.partition.14 sv.svtest.aa.partition.15 sv.svtest.aa.partition.16 sv.svtest.aa.partition.17 sv.svtest.aa.partition.18 sv.svtest.aa.partition.19 sv.svtest.aa.partition.20 sv.svtest.aa.partition.21 sv.svtest.aa.partition.22 sv.svtest.aa.partition.23 sv.svtest.aa.partition.24 sv.svtest.aa.partition.25 sv.svtest.aa.partition.26 sv.svtest.aa.partition.27 sv.svtest.aa.partition.28 sv.svtest.aa.partition.29 sv.svtest.aa.partition.30 sv.svtest.aa.partition.31 sv.svtest.aa.partition.32 sv.svtest.aa.partition.33 sv.svtest.aa.partition.34 sv.svtest.aa.partition.35 sv.svtest.aa.partition.36 sv.svtest.aa.partition.37 sv.svtest.aa.partition.38 sv.svtest.aa.partition.39 sv.svtest.aa.partition.40 sv.svtest.aa.partition.41 sv.svtest.aa.partition.42 sv.svtest.aa.partition.43 sv.svtest.aa.partition.44 sv.svtest.aa.partition.45 sv.svtest.aa.partition.46 sv.svtest.aa.partition.47 sv.svtest.aa.partition.48 sv.svtest.aa.partition.49 sv.svtest.aa.partition.50 sv.svtest.aa.partition.51 sv.svtest.aa.partition.52 sv.svtest.aa.partition.53 sv.svtest.aa.partition.54 sv.svtest.aa.partition.56 sv.svtest.aa.partition.backup.10 sv.svtest.aa.partition.backup.11 sv.svtest.aa.partition.backup.12 sv.svtest.aa.partition.backup.13 sv.svtest.aa.partition.backup.14 sv.svtest.aa.partition.backup.15 sv.svtest.aa.partition.backup.16 sv.svtest.aa.partition.backup.17 sv.svtest.aa.partition.backup.18 sv.svtest.aa.partition.backup.19 sv.svtest.aa.partition.backup.20 sv.svtest.aa.partition.backup.21 sv.svtest.aa.partition.backup.22 sv.svtest.aa.partition.backup.23 sv.svtest.aa.partition.backup.24 sv.svtest.aa.partition.backup.25 sv.svtest.aa.partition.backup.26 sv.svtest.aa.partition.backup.27 sv.svtest.aa.partition.backup.28 sv.svtest.aa.partition.backup.29 sv.svtest.aa.partition.backup.30 sv.svtest.aa.partition.backup.31 sv.svtest.aa.partition.backup.32 sv.svtest.aa.partition.backup.33 sv.svtest.aa.partition.backup.34 sv.svtest.aa.partition.backup.35 sv.svtest.aa.partition.backup.36 sv.svtest.aa.partition.backup.37 sv.svtest.aa.partition.backup.38 sv.svtest.aa.partition.backup.39 sv.svtest.aa.partition.backup.40 sv.svtest.aa.partition.backup.41 sv.svtest.aa.partition.backup.42 sv.svtest.aa.partition.backup.43 sv.svtest.aa.partition.backup.44 sv.svtest.aa.partition.backup.45 sv.svtest.aa.partition.backup.46 sv.svtest.aa.partition.backup.47 sv.svtest.aa.partition.backup.48 sv.svtest.aa.partition.backup.49 sv.svtest.aa.partition.backup.50 sv.svtest.aa.partition.backup.51 sv.svtest.aa.partition.backup.52 sv.svtest.aa.partition.backup.53 sv.svtest.aa.partition.backup.54 sv.svtest.aa.partition.backup.56 sv.svtest.aa.std sequential=false set sv.svtest.aa.sv.monitor-clone setoptions score=INFINITY> Errno=0
2020-01-30 07:38:39.205 [18804:sinlxsveshi01] CM_Pacemaker sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4683)>
2020-01-30 07:38:39.764 [18804:sinlxsveshi01] CM_Pacemaker sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4683)<
pcs constraint colocation set sv.svtest.aa.partition.10 sv.svtest.aa.partition.11 sv.svtest.aa.partition.12 sv.svtest.aa.partition.13 sv.svtest.aa.partition.14 sv.svtest.aa.partition.15 sv.svtest.aa.partition.16 sv.svtest.aa.partition.17 sv.svtest.aa.partition.18 sv.svtest.aa.partition.19 sv.svtest.aa.partition.20 sv.svtest.aa.partition.21 sv.svtest.aa.partition.22 sv.svtest.aa.partition.23 sv.svtest.aa.partition.24 sv.svtest.aa.partition.25 sv.svtest.aa.partition.26 sv.svtest.aa.partition.27 sv.svtest.aa.partition.28 sv.svtest.aa.partition.29 sv.svtest.aa.partition.30 sv.svtest.aa.partition.31 sv.svtest.aa.partition.32 sv.svtest.aa.partition.33 sv.svtest.aa.partition.34 sv.svtest.aa.partition.35 sv.svtest.aa.partition.36 sv.svtest.aa.partition.37 sv.svtest.aa.partition.38 sv.svtest.aa.partition.39 sv.svtest.aa.partition.40 sv.svtest.aa.partition.41 sv.svtest.aa.partition.42 sv.svtest.aa.partition.43 sv.svtest.aa.partition.44 sv.svtest.aa.partition.45 sv.svtest.aa.partition.46 sv.svtest.aa.partition.47 sv.svtest.aa.partition.48 sv.svtest.aa.partition.49 sv.svtest.aa.partition.50 sv.svtest.aa.partition.51 sv.svtest.aa.partition.52 sv.svtest.aa.partition.53 sv.svtest.aa.partition.54 sv.svtest.aa.partition.56 sv.svtest.aa.partition.backup.10 sv.svtest.aa.partition.backup.11 sv.svtest.aa.partition.backup.12 sv.svtest.aa.partition.backup.13 sv.svtest.aa.partition.backup.14 sv.svtest.aa.partition.backup.15 sv.svtest.aa.partition.backup.16 sv.svtest.aa.partition.backup.17 sv.svtest.aa.partition.backup.18 sv.svtest.aa.partition.backup.19 sv.svtest.aa.partition.backup.20 sv.svtest.aa.partition.backup.21 sv.svtest.aa.partition.backup.22 sv.svtest.aa.partition.backup.23 sv.svtest.aa.partition.backup.24 sv.svtest.aa.partition.backup.25 sv.svtest.aa.partition.backup.26 sv.svtest.aa.partition.backup.27 sv.svtest.aa.partition.backup.28 sv.svtest.aa.partition.backup.29 sv.svtest.aa.partition.backup.30 sv.svtest.aa.partition.backup.31 sv.svtest.aa.partition.backup.32 sv.svtest.aa.partition.backup.33 sv.svtest.aa.partition.backup.34 sv.svtest.aa.partition.backup.35 sv.svtest.aa.partition.backup.36 sv.svtest.aa.partition.backup.37 sv.svtest.aa.partition.backup.38 sv.svtest.aa.partition.backup.39 sv.svtest.aa.partition.backup.40 sv.svtest.aa.partition.backup.41 sv.svtest.aa.partition.backup.42 sv.svtest.aa.partition.backup.43 sv.svtest.aa.partition.backup.44 sv.svtest.aa.partition.backup.45 sv.svtest.aa.partition.backup.46 sv.svtest.aa.partition.backup.47 sv.svtest.aa.partition.backup.48 sv.svtest.aa.partition.backup.49 sv.svtest.aa.partition.backup.50 sv.svtest.aa.partition.backup.51 sv.svtest.aa.partition.backup.52 sv.svtest.aa.partition.backup.53 sv.svtest.aa.partition.backup.54 sv.svtest.aa.partition.backup.56 sv.svtest.aa.std sequential=false set sv.svtest.aa.sv.monitor-clone setoptions score=INFINITY => Return=0

2020-01-30 07:38:39.765 [18804:sinlxsveshi01] sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4739) <Rc=0 Errno=0
2020-01-30 07:38:39.765 [18804:sinlxsveshi01] sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4685) > noexec=0 always=0 <pcs resource update sv.svtest.aa.sv.monitor sv_ha_cluster_managed=0 --wait=30 --force> Errno=0
2020-01-30 07:38:39.765 [18804:sinlxsveshi01] CM_Pacemaker sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4683)>
2020-01-30 07:38:45.667 [18804:sinlxsveshi01] CM_Pacemaker sv_ha_ctl(6850).Main(6724).zClusterCreate(3190).zClusterCreateActiveActive(3256).zCreateResource(3376).CM_ResourceCreate(353).CM_ResourceCreate(1995).zCM_Exec(4683)<
pcs resource update sv.svtest.aa.sv.monitor sv_ha_cluster_managed=0 --wait=30 --force => Return=1
Warning: Agent 'ocf:csg:sv' is not installed or does not provide valid metadata: Metadata query for ocf:csg:sv failed: Input/output error
-----@@@@@@@-------

Comment 2 Tomas Jelinek 2020-04-17 14:58:47 UTC
Created attachment 1679679 [details]
proposed fix + tests

Changed the way IDs for set constraints are generated, they no longer consist of full names of all resources in the constraints.

Generating other IDs was not changed. Plain constraints reference two resources, therefore there is no risk of 1KB+ IDs (unless the resource IDs are that long). Other IDs are either provided by the user or reasonably short. If you find it's not the case, feel free to open another BZ with a reproducer. If plain constraint IDs are still too long, feel free to open a BZ for that as well.


Test: Create set constraints with several resources. Check that the auto-generated constraint IDs are reasonably short.

Comment 5 Ivan Devat 2020-04-20 14:16:12 UTC
Before Fix

[kid76 ~] $ rpm -q pcs
pcs-0.9.169-1.el7.x86_64

[kid76 ~] $ pcs constraint colocation set A B C
[kid76 ~] $ pcs cluster cib |grep pcs_rsc_colocation_set_A_B_C
      <rsc_colocation score="INFINITY" id="pcs_rsc_colocation_set_A_B_C">


After Fix

[kid76 ~] $ rpm -q pcs
pcs-0.9.169-2.el7.x86_64
kid76 ~] $ pcs constraint colocation set A B C
[kid76 ~] $ pcs cluster cib |grep colocation_set_AABBCC
      <rsc_colocation score="INFINITY" id="colocation_set_AABBCC">
        <resource_set id="colocation_set_AABBCC_set">

Comment 8 michael.oldham 2020-04-20 23:55:46 UTC
Hi, just to confirm behaviour here because your example does not really show me the solution.
We have 100+ resources with names like sv.svtest.aa.partition.17.

Can you show your solution output when using longer resource names?
Thanks
Michael

Comment 9 Tomas Jelinek 2020-04-21 07:15:56 UTC
(In reply to michael.oldham from comment #8)
> Hi, just to confirm behaviour here because your example does not really show
> me the solution.
> We have 100+ resources with names like sv.svtest.aa.partition.17.
> 
> Can you show your solution output when using longer resource names?
> Thanks
> Michael


Sure, here it is:

# pcs constraint order set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 set sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6
# pcs constraint order set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 set sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 set sv.svtest.aa.partition.5 sv.svtest.aa.partition.6
# pcs cluster cib | grep order
      <rsc_order id="order_set_s1s2s3">
        <resource_set id="order_set_s1s2s3_set">
        <resource_set id="order_set_s1s2s3_set-1">
      </rsc_order>
      <rsc_order id="order_set_s1s2s3-1">
        <resource_set id="order_set_s1s2s3-1_set">
        <resource_set id="order_set_s1s2s3-1_set-1">
        <resource_set id="order_set_s1s2s3-1_set-2">
      </rsc_order>

Hopefully, this gives you better idea about how it works. Let me know if you have any questions.

Regards,
Tomas

Comment 10 michael.oldham 2020-04-21 07:24:49 UTC
Yes it does thank you very much .. looks good

Regards
Michael

Comment 11 michael.oldham 2020-04-23 06:17:42 UTC
Hi, have you any idea of the timeline for this fix .. I understand it would be available with RHEL7.9 but when would that be available.

Is there anyway of getting the fix into the existing 7.7 release?

Cheers
Michael

Comment 12 Chris Feist 2020-04-27 21:58:16 UTC
Michael,

Currently I don't believe this is planned for 7.7, however if this is critical for you, please raise this with your support representative and we can evaluate the possibility of a backport/z-stream.

Comment 13 Michal Mazourek 2020-04-28 16:06:36 UTC
BEFORE:
=======

[root@virt-202 ~]# rpm -q pcs
pcs-0.9.168-4.el7.x86_64


## Creating resources

[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.1 ocf:heartbeat:Dummy
[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.2 ocf:heartbeat:Dummy
[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.3 ocf:heartbeat:Dummy
[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.4 ocf:heartbeat:Dummy
[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.5 ocf:heartbeat:Dummy
[root@virt-202 ~]# pcs resource create sv.svtest.aa.partition.6 ocf:heartbeat:Dummy

[root@virt-202 ~]# pcs resource
 sv.svtest.aa.partition.1	(ocf::heartbeat:Dummy):	Started virt-202
 sv.svtest.aa.partition.2	(ocf::heartbeat:Dummy):	Started virt-203
 sv.svtest.aa.partition.3	(ocf::heartbeat:Dummy):	Started virt-202
 sv.svtest.aa.partition.4	(ocf::heartbeat:Dummy):	Started virt-203
 sv.svtest.aa.partition.5	(ocf::heartbeat:Dummy):	Started virt-202
 sv.svtest.aa.partition.6	(ocf::heartbeat:Dummy):	Started virt-203


## Creating order set constraint

[root@virt-202 ~]# pcs constraint order set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6


## Checking the constraint ID

[root@virt-202 ~]# pcs constraint --full
Location Constraints:
Ordering Constraints:
  Resource Sets:
    set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6 (id:pcs_rsc_set_sv.svtest.aa.partition.1_sv.svtest.aa.partition.2_sv.svtest.aa.partition.3_sv.svtest.aa.partition.4_sv.svtest.aa.partition.5_sv.svtest.aa.partition.6) (id:pcs_rsc_order_set_sv.svtest.aa.partition.1_sv.svtest.aa.partition.2_sv.svtest.aa.partition.3_sv.svtest.aa.partition.4_sv.svtest.aa.partition.5_sv.svtest.aa.partition.6)
Colocation Constraints:
Ticket Constraints:

[root@virt-202 ~]# pcs cluster cib | grep \<constraints\> -A 11
    <constraints>
      <rsc_order id="pcs_rsc_order_set_sv.svtest.aa.partition.1_sv.svtest.aa.partition.2_sv.svtest.aa.partition.3_sv.svtest.aa.partition.4_sv.svtest.aa.partition.5_sv.svtest.aa.partition.6">
        <resource_set id="pcs_rsc_set_sv.svtest.aa.partition.1_sv.svtest.aa.partition.2_sv.svtest.aa.partition.3_sv.svtest.aa.partition.4_sv.svtest.aa.partition.5_sv.svtest.aa.partition.6">
          <resource_ref id="sv.svtest.aa.partition.1"/>
          <resource_ref id="sv.svtest.aa.partition.2"/>
          <resource_ref id="sv.svtest.aa.partition.3"/>
          <resource_ref id="sv.svtest.aa.partition.4"/>
          <resource_ref id="sv.svtest.aa.partition.5"/>
          <resource_ref id="sv.svtest.aa.partition.6"/>
        </resource_set>
      </rsc_order>
    </constraints>

> The constraint ID is too long


AFTER:
======

[root@virt-029 ~]# rpm -q pcs
pcs-0.9.169-2.el7.x86_64


## Creating resources

[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.1 ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.2 ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.3 ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.4 ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.5 ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sv.svtest.aa.partition.6 ocf:heartbeat:Dummy

[root@virt-029 ~]# pcs resource
 sv.svtest.aa.partition.1	(ocf::heartbeat:Dummy):	Started virt-029
 sv.svtest.aa.partition.2	(ocf::heartbeat:Dummy):	Started virt-030
 sv.svtest.aa.partition.3	(ocf::heartbeat:Dummy):	Started virt-029
 sv.svtest.aa.partition.4	(ocf::heartbeat:Dummy):	Started virt-030
 sv.svtest.aa.partition.5	(ocf::heartbeat:Dummy):	Started virt-029
 sv.svtest.aa.partition.6	(ocf::heartbeat:Dummy):	Started virt-030


## Creating order set constraint

[root@virt-029 ~]# pcs constraint order set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6

## Checking the constraint ID

[root@virt-029 ~]# pcs constraint --full
Location Constraints:
Ordering Constraints:
  Resource Sets:
    set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6 (id:order_set_s1s2s3_set) (id:order_set_s1s2s3)
Colocation Constraints:
Ticket Constraints:

[root@virt-029 ~]# pcs cluster cib | grep \<constraints\> -A 11
    <constraints>
      <rsc_order id="order_set_s1s2s3">
        <resource_set id="order_set_s1s2s3_set">
          <resource_ref id="sv.svtest.aa.partition.1"/>
          <resource_ref id="sv.svtest.aa.partition.2"/>
          <resource_ref id="sv.svtest.aa.partition.3"/>
          <resource_ref id="sv.svtest.aa.partition.4"/>
          <resource_ref id="sv.svtest.aa.partition.5"/>
          <resource_ref id="sv.svtest.aa.partition.6"/>
        </resource_set>
      </rsc_order>
    </constraints>

> OK: The ID is no longer consist of full names of all resources in the constraint and is reasonable short.


## Removing constraint via ID

[root@virt-029 ~]# pcs constraint remove order_set_s1s2s3

[root@virt-029 ~]# pcs constraint
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:

> OK


## Creating multiple sets

[root@virt-029 ~]# pcs constraint order set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 set sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 set sv.svtest.aa.partition.5 sv.svtest.aa.partition.6

## Checking the ID

[root@virt-029 ~]# pcs constraint --full
Location Constraints:
Ordering Constraints:
  Resource Sets:
    set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 (id:order_set_s1s2s3_set) set sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 (id:order_set_s1s2s3_set-1) set sv.svtest.aa.partition.5 sv.svtest.aa.partition.6 (id:order_set_s1s2s3_set-2) (id:order_set_s1s2s3)
Colocation Constraints:
Ticket Constraints:

[root@virt-029 ~]# pcs cluster cib | grep \<constraints\> -A 15
    <constraints>
      <rsc_order id="order_set_s1s2s3">
        <resource_set id="order_set_s1s2s3_set">
          <resource_ref id="sv.svtest.aa.partition.1"/>
          <resource_ref id="sv.svtest.aa.partition.2"/>
        </resource_set>
        <resource_set id="order_set_s1s2s3_set-1">          
          <resource_ref id="sv.svtest.aa.partition.3"/>
          <resource_ref id="sv.svtest.aa.partition.3"/>
          <resource_ref id="sv.svtest.aa.partition.4"/>
        </resource_set>
        <resource_set id="order_set_s1s2s3_set-2">
          <resource_ref id="sv.svtest.aa.partition.5"/>
          <resource_ref id="sv.svtest.aa.partition.6"/>
        </resource_set>
      </rsc_order>
    </constraints>

> OK


[root@virt-029 ~]# pcs constraint remove order_set_s1s2s3


## Creating colocation set

[root@virt-029 ~]# pcs constraint colocation set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6

## Checking the ID

[root@virt-029 ~]# pcs constraint --full
Location Constraints:
Ordering Constraints:
Colocation Constraints:
  Resource Sets:
    set sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 sv.svtest.aa.partition.3 sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 sv.svtest.aa.partition.6 (id:colocation_set_s1s2s3_set) setoptions score=INFINITY (id:colocation_set_s1s2s3)
Ticket Constraints:

[root@virt-029 ~]# pcs cluster cib | grep \<constraints\> -A 11
    <constraints>
      <rsc_colocation score="INFINITY" id="colocation_set_s1s2s3">
        <resource_set id="colocation_set_s1s2s3_set">
          <resource_ref id="sv.svtest.aa.partition.1"/>
          <resource_ref id="sv.svtest.aa.partition.2"/>
          <resource_ref id="sv.svtest.aa.partition.3"/>
          <resource_ref id="sv.svtest.aa.partition.4"/>
          <resource_ref id="sv.svtest.aa.partition.5"/>
          <resource_ref id="sv.svtest.aa.partition.6"/>
        </resource_set>
      </rsc_colocation>
    </constraints>

> OK


[root@virt-029 ~]# pcs constraint remove colocation_set_s1s2s3


## Checking, how the ID is created (semi-random ID)
## Creating more resources with distinctive names

[root@virt-029 ~]# pcs resource create apache ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create sqlserver ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create virtualIP ocf:heartbeat:Dummy
[root@virt-029 ~]# pcs resource create dummy ocf:heartbeat:Dummy

## Creating constraint set

[root@virt-029 ~]# pcs constraint order set apache sqlserver virtualIP dummy

## Checking the ID's name

[root@virt-029 ~]# pcs cluster cib | grep order
      <rsc_order id="order_set_aesrvP">
        <resource_set id="order_set_aesrvP_set">
      </rsc_order>

> The ID is created by taking the first and the last character from the first thee resources names

[root@virt-029 ~]# pcs constraint remove order_set_aesrvP

[root@virt-029 ~]# pcs constraint order set sv.svtest.aa.partition.6 apache dummy sv.svtest.aa.partition.4 sv.svtest.aa.partition.5 virtualIP sqlserver

[root@virt-029 ~]# pcs cluster cib | grep order
      <rsc_order id="order_set_s6aedy">
        <resource_set id="order_set_s6aedy_set">
      </rsc_order>

> OK


[root@virt-029 ~]# pcs constraint delete order_set_s6aedy


## Creating plain constraint

[root@virt-029 ~]# pcs constraint order sv.svtest.aa.partition.1 then sv.svtest.aa.partition.2
Adding sv.svtest.aa.partition.1 sv.svtest.aa.partition.2 (kind: Mandatory) (Options: first-action=start then-action=start)

[root@virt-029 ~]# pcs constraint --full
Location Constraints:
Ordering Constraints:
  start sv.svtest.aa.partition.1 then start sv.svtest.aa.partition.2 (kind:Mandatory) (id:order-sv.svtest.aa.partition.1-sv.svtest.aa.partition.2-mandatory)
Colocation Constraints:
Ticket Constraints:

[root@virt-029 ~]# pcs cluster cib | grep \<constraints\> -A 2
    <constraints>
      <rsc_order first="sv.svtest.aa.partition.1" first-action="start" id="order-sv.svtest.aa.partition.1-sv.svtest.aa.partition.2-mandatory" then="sv.svtest.aa.partition.2" then-action="start"/>
    </constraints>

> The ID is not shortened, since only two resource can be referenced in plain constraint


Marking as VERIFIED in pcs-0.9.169-2.el7

Comment 17 Dwayne 2020-07-01 21:22:08 UTC
SA Greg Richardson created internal ACE to  increase awareness, (EN-EN-31176).
Set the Customer Escalation Flag = Yes.

Comment 19 errata-xmlrpc 2020-09-29 20:10:26 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 (pcs bug fix and enhancement update), 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://access.redhat.com/errata/RHBA-2020:3964


Note You need to log in before you can comment on or make changes to this bug.