Skip to content

Conversation

@starius
Copy link
Collaborator

@starius starius commented Oct 31, 2025

Previously the daemon crashed with a panic. Now the CLI returns the following message:

[loop] rpc error: code = Unimplemented desc = Restart loop with --experimental

Pull Request Checklist

  • Update release_notes.md if your PR contains major features, breaking changes or bugfixes

Previously the daemon crashed with a panic. Now the CLI returns the following
message:

[loop] rpc error: code = Unimplemented desc = Restart loop with --experimental
@gemini-code-assist
Copy link

Summary of Changes

Hello @starius, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a critical stability issue in the loopd daemon. Previously, attempting to use instant features without enabling them via the --experimental flag would lead to a daemon panic. The changes introduce robust error handling to gracefully manage this scenario, providing a user-friendly Unimplemented RPC error message to the CLI, thereby enhancing the daemon's reliability and user experience.

Highlights

  • Crash Fix: The daemon previously crashed with a panic when instant features were invoked without the --experimental flag. This pull request resolves the issue by preventing the crash.
  • Improved Error Handling: Instead of crashing, the CLI now receives a clear Unimplemented RPC error message: "Restart loop with --experimental", guiding the user on how to properly enable the feature.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request addresses a crash that occurs when instant out features are used without the --experimental flag. The fix involves adding nil checks for instantOutManager in InstantOut, InstantOutQuote, and ListInstantOuts, which correctly prevents a panic and instead returns an informative error. My review includes a suggestion to refactor the duplicated check into a helper function to improve code maintainability.

Comment on lines +1493 to +1496
if s.instantOutManager == nil {
return nil, status.Error(codes.Unimplemented,
"Restart loop with --experimental")
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This check is duplicated in InstantOutQuote (line 1537) and ListInstantOuts (line 1561). To improve maintainability and reduce code duplication, consider extracting this logic into a private helper method on swapClientServer.

For example:

func (s *swapClientServer) requireInstantOutManager() error {
	if s.instantOutManager == nil {
		return status.Error(codes.Unimplemented, "Restart loop with --experimental")
	}
	return nil
}

You could then call this helper at the beginning of InstantOut, InstantOutQuote, and ListInstantOuts:

if err := s.requireInstantOutManager(); err != nil {
	return nil, err
}

This would also make the code more consistent, as ListReservations has a similar check for reservationManager.

@starius starius merged commit 6c8bb7f into lightninglabs:master Oct 31, 2025
5 of 6 checks passed
@starius starius deleted the check-experimental-in-instant branch October 31, 2025 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants