Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WEB TRACEBACK exception com.redhat.rhn.domain.channel.ChannelSyncFlag #8693

Closed
StefanSa opened this issue May 3, 2024 · 14 comments
Closed
Labels
bug Something isn't working P2

Comments

@StefanSa
Copy link

StefanSa commented May 3, 2024

Problem description

Hi there,
Since the last version v2024.03, when i click on different software channels or their objects in the WebUI, i get this error message.

The following exception occurred while executing this request:
GET /rhn/software/packages/Details.do

Date:5/3/24 3:08:37 PM CEST
Headers:
  host: test.local
  connection: keep-alive
  sec-ch-ua: "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"
  sec-ch-ua-mobile: ?0
  sec-ch-ua-platform: "Windows"
  Upgrade-Insecure-Requests: 1
  user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
  accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
  Sec-Fetch-Site: same-origin
  Sec-Fetch-Mode: navigate
  Sec-Fetch-User: ?1
  Sec-Fetch-Dest: document
  referer: https://test.local/rhn/channels/ChannelPackages.do?cid=226
  accept-encoding: gzip, deflate, br, zstd
  accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
  cookie: JSESSIONID=63D0F3D6AA607D713248C42BD7231293; pxt-session-cookie=2715352x0a2d5fa75cbf0d51d03f42756b882638af3df52da7f247e93e3c19aad09788f0

Request:
Local Name = test.local
Server Name = test.local
Requested Session Id came from Cookie
Requested Session Valid = true
Session = [org.apache.catalina.session.StandardSessionFacade@7852a19c[session=StandardSession[63D0F3D6AA607D713248C42BD7231293](mailto:org.apache.catalina.session.StandardSessionFacade@7852a19c[session=StandardSession[63D0F3D6AA607D713248C42BD7231293)]]
Protocol = https
Request Locale = en_US
Request Character Encoding = UTF-8
Attribute Names = rhnActiveLang, org.apache.struts.action.MESSAGE, org.apache.struts.action.mapping.instance, org.apache.tomcat.util.net.secure_protocol_version, requestedUri, isDebugPackage, session, javax.servlet.request.key_size, org.apache.struts.action.MODULE, javax.servlet.request.cipher_suite, url, javax.servlet.request.ssl_session_id, __sitemesh__filterapplied, package_key, javax.servlet.jsp.jstl.fmt.timeZone.request, package_name, 


User Information:
User StefanS (id 2, org_id 1)

Exception:
javax.servlet.ServletException: javax.persistence.PersistenceException: org.hibernate.HibernateException: More than one row with the given identifier was found: 228, for class: com.redhat.rhn.domain.channel.ChannelSyncFlag
	at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:237)
	at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:104)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:110)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142)
	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:59)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:424)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: More than one row with the given identifier was found: 228, for class: com.redhat.rhn.domain.channel.ChannelSyncFlag
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1575)
	at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:275)
	at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:219)
	at com.redhat.rhn.domain.channel.ChannelFactory.getAccessibleChannelsByOrg(ChannelFactory.java:386)
	at com.redhat.rhn.frontend.action.rhnpackage.PackageDetailsAction.execute(PackageDetailsAction.java:120)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	... 47 more
Caused by: org.hibernate.HibernateException: More than one row with the given identifier was found: 228, for class: com.redhat.rhn.domain.channel.ChannelSyncFlag
	at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.extractEntityResult(AbstractLoadPlanBasedEntityLoader.java:254)
	at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:198)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4290)
	at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604)
	at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:572)
	at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:226)
	at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:350)
	at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:127)
	at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:93)
	at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1277)
	at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1149)
	at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:682)
	at org.hibernate.type.EntityType.resolve(EntityType.java:464)
	at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:205)
	at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:160)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1172)
	at org.hibernate.loader.Loader.processResultSet(Loader.java:1022)
	at org.hibernate.loader.Loader.doQuery(Loader.java:960)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:351)
	at org.hibernate.loader.Loader.doList(Loader.java:2787)
	at org.hibernate.loader.Loader.doList(Loader.java:2770)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2604)
	at org.hibernate.loader.Loader.list(Loader.java:2599)
	at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
	at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2243)
	at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1069)
	at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:173)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1566)
	... 52 more

I don't know if it has anything to do with it, but since a few weeks the automatic synchronization of the repos doesn't work anymore. You have to start this manually, e.g. in the WebUI.

Thanks for any help here.
Stefan

Steps to reproduce

...

Uyuni version

Informationen zu Paket Uyuni-Server-release:
--------------------------------------------
Repository         : Uyuni Server Stable
Name               : Uyuni-Server-release
Version            : 2024.03-230900.214.6.uyuni3
Arch               : x86_64
Anbieter           : obs://build.opensuse.org/systemsmanagement:Uyuni
Support Level      : Stufe 3
Installierte Größe : 1,4 KiB
Installiert        : Ja
Status             : aktuell
Quellpaket         : Uyuni-Server-release-2024.03-230900.214.6.uyuni3.src
Zusammenfassung    : Uyuni Server
Beschreibung       :
    Uyuni lets you efficiently manage physical, virtual,
    and cloud-based Linux systems. It provides automated and cost-effective
    configuration and software management, asset management, and system
    provisioning.

Uyuni proxy version (if used)

No response

Useful logs

No response

Additional information

No response

@StefanSa StefanSa added bug Something isn't working P5 labels May 3, 2024
@rjmateus
Copy link
Member

rjmateus commented May 3, 2024

what do you have on that table?
run the following command to check:
spacewalk-sql --select-mode - <<< "select * from rhnChannelSyncFlag where channel_id = 228;" > query.out

You should see if more than one entry for that id is present. if yes, delete one of it

@StefanSa
Copy link
Author

StefanSa commented May 3, 2024

Hi Ricardo,
the Selecect / Query gives no information, empty output.

@rjmateus
Copy link
Member

rjmateus commented May 3, 2024

then run it again, but without the where clause, and check if any duplicated id is present

@StefanSa
Copy link
Author

StefanSa commented May 3, 2024

Ricardo,
You mean this one?
spacewalk-sql --select-mode - <<< "select * from rhnChannelSyncFlag ;" > query.out

If so, no output either.

@rjmateus
Copy link
Member

rjmateus commented May 3, 2024

did you check inside the file "query.out"? Not even the column names?

@StefanSa
Copy link
Author

StefanSa commented May 3, 2024

Sorry @rjmateus,
i was actually looking on the wrong server. Here is the result of the first query.

 channel_id | no_strict | no_errata | only_latest | create_tree | quit_on_error
------------+-----------+-----------+-------------+-------------+---------------
        228 | f         | f         | f           | f           | f
        228 | f         | f         | f           | f           | f
(2 Lines)

@gabjef
Copy link

gabjef commented May 4, 2024

After upgrading to 2024.03 we are having the same issue for channel_id 101:

# spacewalk-sql --select-mode - <<< "select * from rhnChannelSyncFlag where channel_id = 101;"
 channel_id | no_strict | no_errata | only_latest | create_tree | quit_on_error
------------+-----------+-----------+-------------+-------------+---------------
        101 | f         | f         | f           | f           | f
        101 | f         | f         | f           | f           | f
(2 rows)

What is the magic command to delete the duplicate?

Additional logging info from a traceback:

Exception:
javax.servlet.ServletException: org.hibernate.HibernateException: More than one row with the given identifier was found: 101, for class: com.redhat.rhn.domain.channel.Channel
	at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:237)
	at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:104)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:110)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142)
	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:59)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:424)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.hibernate.HibernateException: More than one row with the given identifier was found: 101, for class: com.redhat.rhn.domain.channel.Channel
	at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.extractEntityResult(AbstractLoadPlanBasedEntityLoader.java:254)
	at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:198)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4290)
	at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604)
	at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:572)
	at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:226)
	at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:350)
	at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:127)
	at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:93)
	at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1277)
	at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1265)
	at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:208)
	at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2901)
	at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2875)
	at org.hibernate.internal.SessionImpl.get(SessionImpl.java:1097)
	at com.redhat.rhn.domain.channel.ChannelFactory.lookupById(ChannelFactory.java:85)
	at com.redhat.rhn.frontend.dto.ChannelTreeNode.compareTo(ChannelTreeNode.java:405)
	at com.redhat.rhn.frontend.dto.ChannelTreeNode.compareTo(ChannelTreeNode.java:33)
	at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:325)
	at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java:202)
	at java.base/java.util.Arrays.sort(Arrays.java:1315)
	at java.base/java.util.Arrays.sort(Arrays.java:1509)
	at java.base/java.util.ArrayList.sort(ArrayList.java:1750)
	at java.base/java.util.Collections.sort(Collections.java:145)
	at com.redhat.rhn.frontend.filter.TreeFilter.handleOrphans(TreeFilter.java:197)
	at com.redhat.rhn.frontend.filter.TreeFilter.filterData(TreeFilter.java:93)
	at com.redhat.rhn.frontend.listview.ListControl.filterData(ListControl.java:167)
	at com.redhat.rhn.manager.BaseManager.processListControl(BaseManager.java:184)
	at com.redhat.rhn.manager.BaseManager.makeDataResult(BaseManager.java:94)
	at com.redhat.rhn.manager.channel.ChannelManager.allChannelTree(ChannelManager.java:301)
	at com.redhat.rhn.frontend.action.channel.AllChannelTreeAction.getDataResult(AllChannelTreeAction.java:36)
	at com.redhat.rhn.frontend.action.channel.BaseChannelTreeAction.execute(BaseChannelTreeAction.java:55)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	... 47 more

@mcalmer
Copy link
Contributor

mcalmer commented May 4, 2024

Can you try the following statement on the database?

$> spacewalk-sql --select-mode - <<< "
ALTER TABLE rhnChannelSyncFlag DROP CONSTRAINT IF EXISTS rhn_chsf_cid_pk;
ALTER TABLE rhnChannelSyncFlag DROP CONSTRAINT IF EXISTS rhn_chsf_cid_fk;

DELETE FROM rhnChannelSyncFlag T1
      USING rhnChannelSyncFlag T2
WHERE  T1.ctid       < T2.ctid          -- delete the "older" ones
  AND  T1.channel_id = T2.channel_id;   -- list columns that define duplicates

ALTER TABLE rhnChannelSyncFlag ADD CONSTRAINT rhn_chsf_cid_pk PRIMARY KEY (channel_id);
ALTER TABLE rhnChannelSyncFlag ADD CONSTRAINT rhn_chsf_cid_fk FOREIGN KEY (channel_id) REFERENCES rhnChannel(id) ON DELETE CASCADE;
"

It will remove the foreign key, remove the duplicates by keeping the row with is "newer" and create a primary key and a foreign key in channel_id.

I expect that you might hit other problem in the UI when you try to change the flags.
This would be very interesting for us to know when you hit them.

@mcalmer
Copy link
Contributor

mcalmer commented May 5, 2024

@StefanSa @gabjef do you remember how you get into this situation? Just by using the Web UI I cannot produce duplicate entries in this table. Are you using API / spacecmd or something else?

@StefanSa
Copy link
Author

StefanSa commented May 6, 2024

Can you try the following statement on the database?

$> spacewalk-sql --select-mode - <<< "
ALTER TABLE rhnChannelSyncFlag DROP CONSTRAINT IF EXISTS rhn_chsf_cid_pk;
ALTER TABLE rhnChannelSyncFlag DROP CONSTRAINT IF EXISTS rhn_chsf_cid_fk;

DELETE FROM rhnChannelSyncFlag T1
      USING rhnChannelSyncFlag T2
WHERE  T1.ctid       < T2.ctid          -- delete the "older" ones
  AND  T1.channel_id = T2.channel_id;   -- list columns that define duplicates

ALTER TABLE rhnChannelSyncFlag ADD CONSTRAINT rhn_chsf_cid_pk PRIMARY KEY (channel_id);
ALTER TABLE rhnChannelSyncFlag ADD CONSTRAINT rhn_chsf_cid_fk FOREIGN KEY (channel_id) REFERENCES rhnChannel(id) ON DELETE CASCADE;
"

It will remove the foreign key, remove the duplicates by keeping the row with is "newer" and create a primary key and a foreign key in channel_id.

I expect that you might hit other problem in the UI when you try to change the flags. This would be very interesting for us to know when you hit them.

Hallo Michael @mcalmer (SuSe Firewall 2002) :)
i can confirm that this has been fixed with this statement.

best regards.
Stefan

@StefanSa
Copy link
Author

StefanSa commented May 6, 2024

@StefanSa @gabjef do you remember how you get into this situation? Just by using the Web UI I cannot produce duplicate entries in this table. Are you using API / spacecmd or something else?

@mcalmer Not really.
Two major things have happened here, the version upgrade of the uyuni server itself and the addition of the microos repo.

@StefanSa
Copy link
Author

StefanSa commented May 6, 2024

The automatic synchronization of the repo is now also working again.

@avshiliaev avshiliaev added P2 and removed P5 labels May 6, 2024
@gabjef
Copy link

gabjef commented May 6, 2024

@StefanSa @gabjef do you remember how you get into this situation? Just by using the Web UI I cannot produce duplicate entries in this table. Are you using API / spacecmd or something else?

@mcalmer

1 - The SQL statement fixed our issue (at least from what I have seen so far). Thanks!

2 - For this server instance we originally used the Web UI to create probably 30% of our channels, but for the rest we started using spacewalk-common-channels. Note that we also have a number of channels created using CLM app stream filter via a recurring job. So our channel creation is a combination of Web UI, spacewalk-common-channels and CLM project.

@mcalmer
Copy link
Contributor

mcalmer commented May 15, 2024

fix merged. Will be part of 2024.06

@mcalmer mcalmer closed this as completed May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working P2
Projects
None yet
Development

No branches or pull requests

5 participants