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

Duplicate ConsoleLink is possible #163

Closed
ebaron opened this issue Feb 25, 2021 · 1 comment · Fixed by #230
Closed

Duplicate ConsoleLink is possible #163

ebaron opened this issue Feb 25, 2021 · 1 comment · Fixed by #230
Labels
bug Something isn't working
Milestone

Comments

@ebaron
Copy link
Member

ebaron commented Feb 25, 2021

I've observed a duplicate ConsoleLink, where one is created immediately after the other:

$ kubectl get consolelinks -l rhjmc.redhat.com/containerjfr-consolelink-namespace=default,rhjmc.redhat.com/containerjfr-consolelink-name=containerjfr
NAME                 TEXT                            URL                                             MENU   AGE
containerjfr-bl7f7   Container JDK Flight Recorder   https://containerjfr-default.apps-crc.testing          7m28s
containerjfr-k5fmg   Container JDK Flight Recorder   https://containerjfr-default.apps-crc.testing          7m28s

I suspect this is due to caching in the client, combined with using GenerateName.

Relevant part of log:

{"level":"info","ts":1614273919.8731487,"logger":"controller_containerjfr","msg":"Reconciling ContainerJFR","Request.Namespace":"default","Request.Name":"containerjfr"}
{"level":"info","ts":1614273919.873307,"logger":"controller_containerjfr","msg":"Spec","Request.Namespace":"default","Request.Name":"containerjfr","Minimal":false}
{"level":"info","ts":1614273919.873374,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.PersistentVolumeClaim"}
{"level":"info","ts":1614273919.8734727,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana-basic","Kind":"*v1.Secret"}
{"level":"info","ts":1614273919.8735385,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-jmx-auth","Kind":"*v1.Secret"}
{"level":"info","ts":1614273919.8735795,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-self-signed","Kind":"*v1.Issuer"}
{"level":"info","ts":1614273919.8736908,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-ca","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273919.8737473,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-ca","Kind":"*v1.Issuer"}
{"level":"info","ts":1614273919.8737965,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-keystore","Kind":"*v1.Secret"}
{"level":"info","ts":1614273919.8738847,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273919.873926,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273919.874041,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Service"}
{"level":"info","ts":1614273919.8741307,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-grafana-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc0007ef740)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273919.8742008,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Service"}
{"level":"info","ts":1614273919.8742437,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc0007efa20)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273919.8742902,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-command","Kind":"*v1.Service"}
{"level":"info","ts":1614273919.874327,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr-command","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-command-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc0007efc20)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273919.8743982,"logger":"controller_containerjfr","msg":"Not found","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Deployment"}
{"level":"info","ts":1614273919.894727,"logger":"controller_containerjfr","msg":"Created","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Deployment"}
{"level":"info","ts":1614273919.8947475,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Deployment"}
{"level":"info","ts":1614273920.022174,"logger":"controller_containerjfr","msg":"Created ConsoleLink","Request.Namespace":"default","Request.Name":"containerjfr","linkName":"containerjfr-bl7f7"}
{"level":"info","ts":1614273920.022203,"logger":"controller_containerjfr","msg":"Skip reconcile: Deployment already exists","Request.Namespace":"default","Request.Name":"containerjfr","Deployment.Namespace":"default","Deployment.Name":"containerjfr"}
{"level":"debug","ts":1614273920.022214,"logger":"controller","msg":"Successfully Reconciled","controller":"containerjfr-controller","name":"containerjfr","namespace":"default"}
{"level":"info","ts":1614273920.0222485,"logger":"controller_containerjfr","msg":"Reconciling ContainerJFR","Request.Namespace":"default","Request.Name":"containerjfr"}
{"level":"info","ts":1614273920.0222864,"logger":"controller_containerjfr","msg":"Spec","Request.Namespace":"default","Request.Name":"containerjfr","Minimal":false}
{"level":"info","ts":1614273920.0223322,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.PersistentVolumeClaim"}
{"level":"info","ts":1614273920.0223684,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana-basic","Kind":"*v1.Secret"}
{"level":"info","ts":1614273920.0223963,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-jmx-auth","Kind":"*v1.Secret"}
{"level":"info","ts":1614273920.0224645,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-self-signed","Kind":"*v1.Issuer"}
{"level":"info","ts":1614273920.0224848,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-ca","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273920.022498,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-ca","Kind":"*v1.Issuer"}
{"level":"info","ts":1614273920.0225298,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-keystore","Kind":"*v1.Secret"}
{"level":"info","ts":1614273920.022552,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273920.0225725,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Certificate"}
{"level":"info","ts":1614273920.022666,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Service"}
{"level":"info","ts":1614273920.022719,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr-grafana","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-grafana-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc00076e1c0)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273920.0227938,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Service"}
{"level":"info","ts":1614273920.0228302,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc00076e860)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273920.0228536,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr-command","Kind":"*v1.Service"}
{"level":"info","ts":1614273920.022879,"logger":"controller_containerjfr","msg":"Route created","Request.Namespace":"default","Name":"containerjfr-command","Kind":"*v1.Route","Service.Status":"v1.RouteStatus{Ingress:[]v1.RouteIngress{v1.RouteIngress{Host:\"containerjfr-command-default.apps-crc.testing\", RouterName:\"default\", Conditions:[]v1.RouteIngressCondition{v1.RouteIngressCondition{Type:\"Admitted\", Status:\"True\", Reason:\"\", Message:\"\", LastTransitionTime:(*v1.Time)(0xc00076eaa0)}}, WildcardPolicy:\"None\", RouterCanonicalHostname:\"apps-crc.testing\"}}}"}
{"level":"info","ts":1614273920.0229266,"logger":"controller_containerjfr","msg":"Already exists","Request.Namespace":"default","Name":"containerjfr","Kind":"*v1.Deployment"}
{"level":"info","ts":1614273920.0278764,"logger":"controller_containerjfr","msg":"Created ConsoleLink","Request.Namespace":"default","Request.Name":"containerjfr","linkName":"containerjfr-k5fmg"}
{"level":"info","ts":1614273920.0279102,"logger":"controller_containerjfr","msg":"Skip reconcile: Deployment already exists","Request.Namespace":"default","Request.Name":"containerjfr","Deployment.Namespace":"default","Deployment.Name":"containerjfr"}
{"level":"debug","ts":1614273920.027921,"logger":"controller","msg":"Successfully Reconciled","controller":"containerjfr-controller","name":"containerjfr","namespace":"default"}
@ebaron ebaron added the bug Something isn't working label Aug 9, 2021
@ebaron
Copy link
Member Author

ebaron commented Aug 9, 2021

We can fix this by replacing GenerateName with a suffix using the SHA256 hash of the namespace/name of the Cryostat CR. The same is done in #229.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant