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

Add Debugging Instructions to Devcontainer Setup in CONTRIBUTING.md #7673

Merged
merged 3 commits into from
Aug 23, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,16 @@ To get citus installed from source we run `make install -s` in the first termina

With the Citus cluster running you can connect to the coordinator in the first terminal via `psql -p9700`. Because the coordinator is the most common entrypoint the `PGPORT` environment is set accordingly, so a simple `psql` will connect directly to the coordinator.

### Debugging in the VS code

1. Start Debugging: Press F5 to start debugging. You'll be prompted to select the running PostgreSQL process to attach the debugger to. Typically, if you're executing a psql command, you'll want to attach to a process named something like:
```
postgres: citus citus [local] idle
```
Copy link
Member

Choose a reason for hiding this comment

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

Although this works great when having a single psql session open, it fails when multiple sessions open, or when you are connecting over the tcp stack instead of the named pipe.

Not saying to remove this, as it could cover a good portion of the simple workflows.

However, it would be great to add a section on the pid of the backend you are connected to. When running in the devcontainer a .psqlrc is installed in the devcontainer which changes the prompt of psql to show the pid of the running process.

citus@07de2e6180a9:/data$ psql
Timing is on.
Line style is unicode.
Border style is 2.
psql (16.2)
Type "help" for help.


[local] citus@citus:9700-3783=# 

The last number in the prompt, 3783 is the pid of the backend that psql session is connected to.

If you have the process selector open for the debugger you can simply type these numbers, which is generally easier than typing the name of the process - although a tactical [local] will filter it down to the sessions connected via the named pipe.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the feedback! @thanodnl

You're right, this method works well for simple workflows with a single psql session but can be tricky when dealing with multiple sessions or TCP connections. I added a section to clarify how to locate the pid of the backend you're connected to in the container setup. The .psqlrc prompt tweak showing the pid is a great tip—I included it.

2. Set Breakpoints and Debug: Once the debugger attaches to the correct process, you can set breakpoints within the code. From here, you'll be able to step through the code execution, inspect variables, and fully debug the PostgreSQL instance running within the devcontainer.

This setup provides a seamless way to troubleshoot and optimize the Citus extension by taking advantage of the integrated debugging features in VS Code.

### Getting and building

[PostgreSQL documentation](https://www.postgresql.org/support/versioning/) has a
Expand Down
Loading