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

Tibber: resubscribe on clean disconnect #18643

Merged
merged 9 commits into from
Feb 14, 2025

Conversation

GrimmiMeloni
Copy link
Collaborator

fix #17925

Resubscribes in case of a clean exit.

@GrimmiMeloni
Copy link
Collaborator Author

@andig I refactored the existing subscription logic into a function (subscribe), and added an optional unsubscribe to it (in case we have a subscriptionId from a previous subscribe).

For the reconnect loop, I am using the presence of an error to decide wether to just restart Run() or also additionally re-subscribe. Maybe we can also get rid of that decision by simply always resubscribing? WDYT?

@GrimmiMeloni GrimmiMeloni self-assigned this Feb 6, 2025
@GrimmiMeloni GrimmiMeloni added the bug Something isn't working label Feb 6, 2025
@GrimmiMeloni GrimmiMeloni requested a review from andig February 6, 2025 21:10
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
@andig
Copy link
Member

andig commented Feb 7, 2025

Ich habs nicht versucht im Detail zu verstehen, aber die Idee ist klar- bin gespannt...

@andig
Copy link
Member

andig commented Feb 9, 2025

ping @GrimmiMeloni

@GrimmiMeloni
Copy link
Collaborator Author

Sorry. Gerade unpässlich 🤒

@andig
Copy link
Member

andig commented Feb 9, 2025

Ohje- gute Besserung!

meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
meter/tibber-pulse.go Outdated Show resolved Hide resolved
@andig andig merged commit 4f97824 into evcc-io:master Feb 14, 2025
6 checks passed
@andig
Copy link
Member

andig commented Feb 14, 2025

Mir fällt grad noch auf:

	go func() {
		<-ctx.Done()
		if err := client.Close(); err != nil {
			log.ERROR.Println(err)
		}
	}()

das ist vmtl. kontraproduktiv mit den Run darunter ;) Zumindest wird dort ja auch schon das Logging mit erledigt.

@GrimmiMeloni
Copy link
Collaborator Author

das ist vmtl. kontraproduktiv mit den Run darunter ;) Zumindest wird dort ja auch schon das Logging mit erledigt.

Was genau meinst Du wird kontraproduktiv sein? Für den Client ist es zumindest OK wenn dieser hier via Close() parallel geschlossen wird. Der stellt im schlimmsten Fall dann fest, das Ihm der parent Context zwichenzeitlich zugemacht wurde und beendet sich dann direkt wieder.

Oder siehst Du hier noch ein anderes Problem? Den Hinweis mit dem Logging verstehe ich nicht.

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 this pull request may close these issues.

Tibber: evcc hängt nach kurzzeitigem Ausfall von Tibber
2 participants