Commit Graph
2524 Commits
Author SHA1 Message Date
Timothy Messier a2c529b9d1 fix(controller): Use max request duration cluster listener (#4805)
The cluster listener supports a `max_request_duration` option, and
defaults to 90 seconds. However, this configuration was not being use
when processing grpc requests from the listener. This meant that
requests from worker to controller could hang indefinitely and
contributed to the recently fixed issue with database connections being
stuck in `idle in transaction`.

This commit adds a grpc interceptor that ensures each request has a
deadline set to the max request duration for the listener.

Refs: 29cd7bc9d6
2024-05-17 11:59:50 -04:00
Timothy Messier 29cd7bc9d6 fix(session): Move encryption/decryption out of database transactions (#4803)
Several session.Repository methods need to encrypt or decrypt fields
when persisting or retrieving a Session. These encrypt/decrypt
operations where being performed while within a database transaction.

The first step in the encrypt/decrypt operation is to retrieve the
kms.Wrapper. While the wrappers get cached in memory, the retrieval
still results in a database query to check that the kms collection
version has not changed. This query happens with a separate db.Reader,
and therefore uses a separate database connection from the transaction
being used by the session.Repository.

If the controllers are configured with a relatively low
`max_open_connections`, and be under sufficient load interactive with
sessions, the controller can consume all of the available database
connections, and get stuck with open transactions while waiting for a
database connection to execute the kms related queries. This can be see
by checking pg_stat_activity and seeing transactions stuck in `idle in
transaction` with a wait_event of ClientRead.

This commit changes all of the Repository methods the perform any
encryption or decryption operations, including the retrieval of the
kms.Wrapper, outside of a database transaction. An alternative approach
would be to unsure that the kms.Wrapper retrieval happens within the
same database transaction. However, it seems preferable to avoid doing
these relatively expensive operations within a transaction when it is
not necessary.

As part of this fix, it also eliminates some logic that is no longer
needed. During previous would with KMS wrapping, the method of how
sessions were encrypted was changed, and some logic to lazily re-encrypt
sessions was introduced. However, given that terminated sessions are
deleted, and the KMS changes was introduced several versions ago
(0.13.0), this lazy re-encrypt logic should no longer be necessary.

Refs: edd323b73a
See:
    https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW
    https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT
    https://developer.hashicorp.com/boundary/docs/configuration/controller#max_open_connections
2024-05-16 08:45:45 -04:00
Johan Brandhorst-Satzkorn 111b8fbecf internal/cmd/ferry: add sessions command (#4800) 2024-05-15 13:10:18 -07:00
Todd 5a06e4fe66 Auto generate the permissions pages. (#4786)
* Auto generate the permissions pages.

* Add add- set- remove- auto descriptions. Hide scope line when no scope provided

* Document the resource info struct
2024-05-10 12:49:48 -07:00
Todd c3f9fde5d7 Wait to select tokens until we know we need to (#4794)
AuthToken selection involves checking to seeing if the one we are picking has been canceled or expired on the boundary controller. If we are only searching locally and not performing a refresh, there is no need to check if the tokens have expired or not.
2024-05-10 09:38:30 -07:00
Irena Rindos 6f09819e9f chore: fix workers tag cmd help strings (#4780) 2024-05-08 11:52:16 -04:00
Irena Rindos 325949c23a chore: removed commented out time.sleep calls (#4770) 2024-05-07 12:22:15 -04:00
Michael Milton f7e59d5d04 Add hidden ferry pause and resume commands (#4771)
* Add hidden ferry pause and resume functions

* add check for 200 status

* include pause/resume status in ferry status, fix output

* put error string back to previous state
2024-05-06 17:54:27 -04:00
Irena Rindos 52f53a149c bug: test fails on end of month (#4748) 2024-05-06 09:03:01 -04:00
Kerim Satirli e54519975b adds missing space in mlock warning (#4286) 2024-05-02 17:36:45 -04:00
Stan Ryzhov 99f7e470f2 test(bats): Verify alias can be created with host id 2024-05-02 10:59:08 -04:00
Stan Ryzhov 60706a49e5 test(bats): Verify invalid inputs for aliases 2024-05-02 10:58:30 -04:00
Cameron Perera e0306293be chore: bump ui commit to dd92321 (#4745) 2024-04-29 14:13:57 -05:00
Lisbet Alvarez 5876b29758 bump ui commit (#4740) 2024-04-29 07:30:40 -07:00
Todd 3cae272c27 Hide ferry specific flags (#4737) 2024-04-26 13:48:56 -07:00
Zhihe Li 3b66f0651c chore: bump ui commit (#4734) 2024-04-26 14:08:42 -04:00
Irena Rindos 16d23fa55f bug(scopes): scopes list returns 500 without perms (#4731) 2024-04-26 11:55:30 -04:00
Todd 7ccc099807 Use the default retry limit across client cache (#4727) 2024-04-25 15:18:23 -07:00
Cameron Perera e792dd0ea5 chore: bump ui commit to dccf06c (#4724) 2024-04-25 11:57:18 -05:00
Cameron Perera 7018234724 chore: bump ui commit to 5ae490c (#4713) 2024-04-24 13:48:58 -05:00
Lisbet Alvarez a73076d666 bump ui commit to a6bdc4f (#4707) 2024-04-24 08:41:21 -07:00
Cameron Perera 4b48943c12 chore: bump ui commit to 3e9a06a (#4702) 2024-04-23 11:10:38 -05:00
Timothy MessierandSorawis Nilparuk 7c14aeaf41 fix(session): Use active transaction (#4592)
When closing orphaned connections and checking if a session is not
active, the repository was opening a transaction, but then calling the
original reader instead of using the reader/writer from the transaction.
This would result in a transaction being opend, then a separate
transaction being used to run the query, and finally the original
transaction would commit without any statements being executed.

Co-authored-by: Sorawis Nilparuk (Bo) <sorawis.nilparuk@hashicorp.com>
2024-04-19 10:40:42 -07:00
Sorawis Nilparuk (Bo) 8f457c9c93 make newSendCtx also handle context.DeadlineExceeded (#4603)
* make newSendCtx also handle context.DeadlineExceeded

* add assertion to check that context is valid
2024-04-19 09:23:40 -07:00
Todd 7df9144fbf Fix typos in request validation errors for aliases (#4671)
* Fix typos in request validation errors for aliases

* Add format validation for destination id field.
2024-04-19 07:49:11 -07:00
Michael LiandElim Tsiagbey ca1196cdc9 test(worker): Address flake in TestMonitorUpstreamConnectionState (#4668)
* test(worker): Address flake

* test(worker): refactor `TestMonitorUpstreamConnectionState` tests

* test(worker): remove assertion for grpc shutdown state

---------

Co-authored-by: Elim Tsiagbey <elim.tsiagbey@hashicorp.com>
2024-04-19 10:38:03 -04:00
Carlos Alcaide Corvo db2a4d9015 Bump UI version (#4664) 2024-04-18 11:00:01 -07:00
Todd 55cf055285 Fix build and test breakage. (#4659) 2024-04-17 14:02:31 -07:00
Cameron Perera 15737b0ca8 chore: bump ui commit to f9cd1c3 (#4658) 2024-04-17 15:31:53 -05:00
Todd adea8e0f14 Change aliases to resolvable aliases in client cache (#4656) 2024-04-17 12:37:42 -07:00
Irena Rindos 0160258bb5 bug: fix data race in hclogger (#4645)
* bug: fix data race in hclogger
2024-04-17 14:53:24 -04:00
Todd 608b6bb2b7 Add ListResolvableAliases SDK changes (#4653)
* Add API changs for list resolvable aliases
2024-04-17 11:13:08 -07:00
Todd 0d67b86543 Add ListResolvableAliases to the user service (#4609)
* Add ListResolvableAliases to the user service

There are a few non common ways this method uses our ACL
and grant system. A user is able to list resolvable
aliases for another user if they are granted permission
to do so. That means we had to load the grants for
the user being listed for and not the requester when
determining if an alias is able to resolve to a destination
for which the requested user has permission.

Similarly, the grant hash used for the list pagination
is required to be that of the user being listed and not
the requester.
2024-04-17 08:26:46 -07:00
Carlos Alcaide Corvo 267b8ab972 Bump UI version to include MinIO support (#4650) 2024-04-16 15:02:07 -07:00
Cameron Perera 87b0866d8f chore: bump ui commit to 98c16ad (#4647) 2024-04-16 12:19:19 -05:00
Cameron Perera 200524126d chore: bump ui commit to 80b633a (#4642) 2024-04-15 12:05:15 -05:00
dani 1a77e4da86 Boundary Plugin MinIO (#4621)
feat(storage): Add storage support for MinIO via new built-in plugin
2024-04-12 11:28:40 -04:00
Louis Ruch 2e6edb843d feat(vault): Add headers to client interface 2024-04-11 09:08:49 -07:00
Louis Ruch 0cfca44cf5 fix(vault): Fixes credential_vault_credential_private view
The worker_filter column was dropped from the
credential_vault_credential_private view in the
56/02_add_data_key_foreign_key_references.up.sql migration.
Any credential renewal/revocations that relied on the worker filter
would not successfully renew.
2024-04-11 09:08:49 -07:00
Louis Ruch c376d06355 feat: Add support for correlationId 2024-04-11 09:08:45 -07:00
Johan Brandhorst-Satzkorn 31f4b73584 proto/api: improve auth method service API docs (#4616) 2024-04-09 14:14:30 -07:00
6b53766aa6 internal/proto: improvements to OpenAPIv2 spec (#4555)
* internal/gen: better API docs

Add various pieces of metadata that can be used by the API docs renderer.
Improve the service labels by specifying explicit tags.
Specify error responses. Specify version at generation time.

* internal/gen: add better errors

The default error entry is now used to cover all errors, as
adding a new error for every possible status code was a bit much.
This also properly includes the real error type now!

* Add various pieces of metadata that can be used by the API docs renderer. Improve the service labels by specifying explicit tags.

* make auth method API docs

* make API docs better

* make auth methods API docs nicer

* internal/gen: better attribute examples

Replace Output Only comments with a field behavior annotation in accounts.
Mark some fields as required.
Add elaborate description for attributes.

* Make API docs better

* Make API docs better

* Make API docs better

* internal/proto: regenerate files

* internal/proto: finish off account service

* Make API docs better

* internal/proto: add better API docs for aliases

* Tidy up service descriptions

* Added description for Boundary controller  API doc

* internal/gen: add better API intro

Copy parts of the API docs into the description

* sdk: add openapi dependency

* internal/gen: move global API doc to separate file

* internal/gen: remove required annotations

Unfortunately, while these help with the creating of resources, they still
appear required in contexts where they are not, such as when
updating a resource.

* Review comments

---------

Co-authored-by: jigar-hashicorp <jigar.shah@hashicorp.com>
Co-authored-by: Isaac Christian (he/him) <112639904+isaacchristian@users.noreply.github.com>
2024-04-08 13:55:17 -07:00
Elim Tsiagbey a23c57e7c6 feat: add storageEventListener nil check
Only shutdown the storageEventListener if the storageEventListener is not nil
2024-04-05 17:27:20 -04:00
Elim Tsiagbey 2c140b1e09 feat: Local Storage State API & CLI
- add `local_storage_state` value to API & CLI
2024-04-05 16:47:22 -04:00
Elim Tsiagbey 3bef063c72 feat: Filter workers by local storage state function
- add functionality to filter worker by local storage state.
- add feature constraint for local storage state
2024-04-05 16:47:10 -04:00
Elim Tsiagbey 3f94c900f0 feat: Add worker event listener
- add worker event listener
- add worker event handler
- start event listener when a worker starts
2024-04-05 16:46:22 -04:00
Elim Tsiagbey 8506ed3e2c feat: Report Local Storage State Status
- add `LocalStorageState` to worker status reports
- update worker service handler to process `LocalStorageState`. If is empty for workers older workers, we set the `LocalStorageState` to `unknown`
- update field mask paths to support `LocalStorageState`
2024-04-05 16:46:06 -04:00
Damian Debkowski aea473c77b feat: new worker config for minimumAvailableCapacity 2024-04-05 16:45:52 -04:00
Elim Tsiagbey f483d1417c feat: Update Proto Definition for Local Storage State
Update `ServerWorkerStatus` Proto Definition to include Local Storage State
2024-04-05 16:45:35 -04:00
Elim Tsiagbey 79917f74b8 feat(worker): Worker Local Storage State DB Column
- Add new `local_storage_state` column to `server_worker` table which keeps track of the state of the local disk space.

- The valid values for `local_storage_state` are:
-- `available`: The worker local storage state is at an acceptable state
-- `lowStorage`: The worker is below the minimum threshold for local storage
-- `criticallyLowStorage`: The worker local storage state is below the critical minimum threshold for local storage
-- `outOfStorage`: The worker is out of local disk space
-- `notConfigured`: The worker does not have a local storage path configured
-- `unknown`: The default local storage state of a worker. Used when the local storage state of a worker is not yet known
2024-04-05 16:44:54 -04:00