Project

General

Profile

Actions

Bug #3127

closed

Rudder chokes on inventories containing duplicated softwares with identical versions

Added by Matthieu CERDA about 11 years ago. Updated about 9 years ago.

Status:
Released
Priority:
1
Category:
Web - Nodes & inventories
Target version:
Severity:
UX impact:
User visibility:
Effort required:
Priority:
Name check:
Fix check:
Regression:

Description

On a test Rudder server, an inventory from a SLES machine containing duplicated softwares (namely, same gpg-pubkey's which are present multiple times) is refused by inventory-ldap with this error:

12:30:58.839 [qtp760805843-72] INFO  com.normation.inventory.provisioning.endpoint.FusionReportEndpoint - Report 'sles-11-sp1-64-2012-09-12-17-02-11.ocs' parsed in 1 second and 545 milliseconds, sending to save engine.
12:30:59.373 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - Several software ids found for filter '(&(cn=gpg-pubkey)(softwareVersion=436a4de2-50910b72))':
12:30:59.373 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - -> 10369448-caa2-4350-89fb-a51a8b29d77d
12:30:59.373 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - -> 1a1a6123-b54e-4189-86d9-ed199f2a025d
12:31:00.648 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - Several software ids found for filter '(&(cn=gpg-pubkey)(softwareVersion=436a4de2-50910b72))':
12:31:00.648 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - -> 10369448-caa2-4350-89fb-a51a8b29d77d
12:31:00.648 [ForkJoinPool-1-worker-3] INFO  com.normation.inventory.ldap.provisioning.NameAndVersionIdFinder - -> 1a1a6123-b54e-4189-86d9-ed199f2a025d
12:31:00.869 [ForkJoinPool-1-worker-3] DEBUG com.normation.inventory.services.provisioning.MachineDNFinderService - Processing machine id finder use_existing_id
12:31:00.898 [ForkJoinPool-1-worker-3] DEBUG com.normation.inventory.services.provisioning.MachineDNFinderService - Processing machine id finder check_mother_board_uuid_accepted
12:31:00.911 [ForkJoinPool-1-worker-3] DEBUG com.normation.inventory.services.provisioning.MachineDNFinderService - Machine Id 'MachineUuid(07486112-5329-4c6b-91e3-c0c18ae47f5f)' found with id finder 'check_mother_board_uuid_accepted'
12:31:00.911 [ForkJoinPool-1-worker-3] DEBUG com.normation.inventory.services.provisioning.NodeInventoryDNFinderService - Processing server id finder use_existing_id
12:31:00.913 [ForkJoinPool-1-worker-3] DEBUG com.normation.inventory.services.provisioning.NodeInventoryDNFinderService - All server finder executed, no id found
12:31:01.595 [ForkJoinPool-1-worker-3] ERROR com.normation.ldap.sdk.LDAPConnection - Exception ignored (by configuration) when trying to add entry 'nodeId=59e66fe7-7f0e-497d-8055-a103116b4a08,ou=Nodes,ou=Pending Inventories,ou=Inventories,cn=rudder-configuration'.  Reported exception was: software: value #722 provid
ed more than once
com.unboundid.ldap.sdk.LDAPException: software: value #722 provided more than once
        at com.unboundid.ldap.sdk.LDAPConnection.add(LDAPConnection.java:1648) ~[unboundid-ldapsdk-2.3.1.jar:2.3.1]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$10.apply(LDAPConnection.scala:495) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$10.apply(LDAPConnection.scala:493) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection.com$normation$ldap$sdk$LDAPConnection$$applyMod(LDAPConnection.scala:468) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$com$normation$ldap$sdk$LDAPConnection$$applyMods$2.apply(LDAPConnection.scala:460) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$com$normation$ldap$sdk$LDAPConnection$$applyMods$2.apply(LDAPConnection.scala:459) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.utils.Control$$anonfun$sequence$1.apply(Control.scala:53) [utils-2.4.2-SNAPSHOT.jar:na]
        at com.normation.utils.Control$$anonfun$sequence$1.apply(Control.scala:53) [utils-2.4.2-SNAPSHOT.jar:na]
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) [scala-library-2.9.2.jar:na]
        at scala.collection.immutable.List.foreach(List.scala:76) [scala-library-2.9.2.jar:na]
        at com.normation.utils.Control$.sequence(Control.scala:53) [utils-2.4.2-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection.com$normation$ldap$sdk$LDAPConnection$$applyMods(LDAPConnection.scala:459) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$12.apply(LDAPConnection.scala:507) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection$$anonfun$12.apply(LDAPConnection.scala:507) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection.addTree(LDAPConnection.scala:642) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnection.saveTree(LDAPConnection.scala:676) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.inventory.ldap.provisioning.DefaultReportSaver$$anonfun$3.apply(DefaultReportSaver.scala:97) [inventory-provisioning-core-2.4.2-SNAPSHOT.jar:na]
        at com.normation.inventory.ldap.provisioning.DefaultReportSaver$$anonfun$3.apply(DefaultReportSaver.scala:95) [inventory-provisioning-core-2.4.2-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnectionProvider$$anonfun$flatMap$1.apply(LDAPConnectionProvider.scala:116) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnectionProvider$$anonfun$flatMap$1.apply(LDAPConnectionProvider.scala:115) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnectionProvider$class.withCon(LDAPConnectionProvider.scala:153) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.PooledSimpleAuthConnectionProvider.withCon(LDAPConnectionProvider.scala:315) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.LDAPConnectionProvider$class.flatMap(LDAPConnectionProvider.scala:115) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.ldap.sdk.PooledSimpleAuthConnectionProvider.flatMap(LDAPConnectionProvider.scala:315) [scala-ldap-0.12-SNAPSHOT.jar:na]
        at com.normation.inventory.ldap.provisioning.DefaultReportSaver.commitChange(DefaultReportSaver.scala:95) [inventory-provisioning-core-2.4.2-SNAPSHOT.jar:na]
        at com.normation.inventory.services.provisioning.PipelinedReportSaver$$anonfun$save$2.liftedTree1$1(ReportSaver.scala:109) [inventory-api-2.4.2-SNAPSHOT.jar:na]
        at com.normation.inventory.services.provisioning.PipelinedReportSaver$$anonfun$save$2.apply(ReportSaver.scala:108) [inventory-api-2.4.2-SNAPSHOT.jar:na]
        at com.normation.inventory.services.provisioning.PipelinedReportSaver$$anonfun$save$2.apply(ReportSaver.scala:97) [inventory-api-2.4.2-SNAPSHOT.jar:na]
        at net.liftweb.common.Full.flatMap(Box.scala:493) [lift-common_2.9.1-2.4.jar:2.4]
        at com.normation.inventory.services.provisioning.PipelinedReportSaver$class.save(ReportSaver.scala:97) [inventory-api-2.4.2-SNAPSHOT.jar:na]
        at com.normation.inventory.ldap.provisioning.DefaultReportSaver.save(DefaultReportSaver.scala:58) [inventory-provisioning-core-2.4.2-SNAPSHOT.jar:na]

On the source machine, here is the returned softwares concerning this error:

sles-11-sp1-64:~ # rpm -qa |grep gpg-pubkey
gpg-pubkey-1d061a62-4bd70bfa
gpg-pubkey-436a4de2-50910b72
gpg-pubkey-a1912208-446a0899
gpg-pubkey-0dfb3188-41ed929b
gpg-pubkey-9c800aca-4be01999
gpg-pubkey-6f07d355-509cdb91
gpg-pubkey-3d25d3d9-36e12d04
gpg-pubkey-7e2e3b05-4be037ca
gpg-pubkey-474a19e8-4eea5279
gpg-pubkey-307e3d54-4be01a65
gpg-pubkey-436a4de2-50910b72
gpg-pubkey-b37b98a9-4be01a1a

This bug has been detected on a Rudder 2.4 machine, but there is a heavy suspicion that it impacts both 2.3 and 2.4.

Actions

Also available in: Atom PDF