This clone is to make sure we fix this problem in rhn-upgrade errata for customers who are just about to upgrade / migrate to Satellite 5.6. +++ This bug was initially created as a clone of Bug #1024826 +++ Description of problem: After upgrade to Satellite 5.6 (using external Oracle), satellite-sync may fail with the following error: Exception Handler Information Traceback (most recent call last): File "/usr/bin/satellite-sync", line 139, in main return satsync.Runner().main() File "/usr/lib/python2.4/site-packages/spacewalk/satellite_tools/satsync.py", line 229, in main ret = method() File "/usr/lib/python2.4/site-packages/spacewalk/satellite_tools/satsync.py", line 305, in _step_channels self.syncer.process_channels() File "/usr/lib/python2.4/site-packages/spacewalk/satellite_tools/satsync.py", line 682, in process_channels master=OPTIONS.master or None) File "/usr/lib/python2.4/site-packages/spacewalk/satellite_tools/sync_handlers.py", line 248, in import_channels importer.run() File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/importLib.py", line 647, in run self.submit() File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/channelImport.py", line 155, in submit self.backend.processChannels(nullParentBatch, True) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 938, in processChannels 'channel_id', uploadForce=4, ignoreUploaded=1, forceVerify=1) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 1508, in __processObjectCollection return self.__processObjectCollection__(objColl, parentTable, childDict, **kwargs) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 1678, in __processObjectCollection__ return self.__doDML(dml) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 1786, in __doDML self.__doInsert(dml.insert, dml.tables) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 1793, in __doInsert self.__doInsertTable(tname, dict) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backend.py", line 1807, in __doInsertTable insertObj.query(hash) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backendLib.py", line 431, in query executeStatement(statement, values, chunksize) File "/usr/lib/python2.4/site-packages/spacewalk/server/importlib/backendLib.py", line 456, in executeStatement count += statement.executemany(**tempdict) File "/usr/lib/python2.4/site-packages/spacewalk/server/rhnSQL/sql_base.py", line 172, in executemany return apply(self._execute_wrapper, (self._executemany, ) + p, kw) File "/usr/lib/python2.4/site-packages/spacewalk/server/rhnSQL/driver_cx_Oracle.py", line 108, in _execute_wrapper retval = apply(function, p, kw) File "/usr/lib/python2.4/site-packages/spacewalk/server/rhnSQL/driver_cx_Oracle.py", line 208, in _executemany self._real_cursor.executemany(None, arr) rhnFault: (54, 'ORA-00001: unique constraint (RHNSAT.RHN_DCM_RELEASE_CAID_OID_UQ) violated\n', '\n Package Upload Failed due to uniqueness constraint violation.\n Make sure the package does not have any duplicate dependencies or\n does not already exists on the server\n ') Version-Release number of selected component (if applicable): Satellite 5.6 How reproducible: Random. Steps to Reproduce: 1. Satellite 5.5 or earlier, using external Oracle, synchronized RHEL content (RHEL-5,6 with child channels). 2. Upgrade the Satellite to version 5.6 3. Run satellite-sync Actual results: The satellite-sync may fail with the above traceback. Expected results: satellite-sync works. Additional info: This problem is caused by the fact that the rhnDistChannelMap table before the upgrade may contain (release, channel_arch_id) pairs pointing (via channel_id column) to some RHEL child channels (VT, Cluster, ...). The upgrade (as well as migration) to Satellite 5.6 contains the following: delete from rhnDistChannelMap a where a.rowid > any ( select b.rowid from rhnDistChannelMap b where a.release = b.release and a.channel_arch_id = b.channel_arch_id ); which is supposed to delete duplicate (release, channel_arch_id) pairs from rhnDistChannelMap table. As it happens, rowid of the row pointing to a child channel can be lower than rowid of its parent -> we delete the parent record. In Satellite 5.6 sat-sync, we no longer process the mappings for child channels, but still process the parent channel mappings -> sat-sync tries to insert the (release, channel_arch_id) pair for the parent channel -> potential conflict with the child record we already have -> unique constraint violation on Oracle. To fix this issue, we need to release a schema errata, which would delete the records pointing to child channels and subsequent satellite-sync would return the correct mappings back.
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. http://rhn.redhat.com/errata/RHBA-2013-1828.html