diff --git a/cli/root.go b/cli/root.go index 91d4551916..ea803cdfa5 100644 --- a/cli/root.go +++ b/cli/root.go @@ -609,7 +609,8 @@ func (h *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) { // ExperimentalEnabled returns if the experimental feature flag is enabled. func ExperimentalEnabled(cmd *cobra.Command) bool { - return cliflag.IsSetBool(cmd, varExperimental) + enabled, _ := cmd.Flags().GetBool(varExperimental) + return enabled } // EnsureExperimental will ensure that the experimental feature flag is set if the given flag is set. diff --git a/cli/server.go b/cli/server.go index c2dbeac07e..b9861bf141 100644 --- a/cli/server.go +++ b/cli/server.go @@ -476,14 +476,13 @@ func Server(dflags *codersdk.DeploymentFlags, newAPI func(context.Context, *code ), dflags.PromAddress.Value, "prometheus")() } - // We use a separate closer so the Enterprise API + // We use a separate coderAPICloser so the Enterprise API // can have it's own close functions. This is cleaner // than abstracting the Coder API itself. - coderAPI, closer, err := newAPI(ctx, options) + coderAPI, coderAPICloser, err := newAPI(ctx, options) if err != nil { return err } - defer closer.Close() client := codersdk.New(localURL) if dflags.TLSEnable.Value { @@ -663,7 +662,7 @@ func Server(dflags *codersdk.DeploymentFlags, newAPI func(context.Context, *code wg.Wait() cmd.Println("Waiting for WebSocket connections to close...") - _ = coderAPI.Close() + _ = coderAPICloser.Close() cmd.Println("Done waiting for WebSocket connections") // Close tunnel after we no longer have in-flight connections. diff --git a/coderd/database/dump.sql b/coderd/database/dump.sql index 36e1bd583a..f68f8194f6 100644 --- a/coderd/database/dump.sql +++ b/coderd/database/dump.sql @@ -1,9 +1,5 @@ -- Code generated by 'make coderd/database/generate'. DO NOT EDIT. -CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; - -COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; - CREATE TYPE api_key_scope AS ENUM ( 'all', 'application_connect' diff --git a/coderd/database/migrations/000059_file_id.up.sql b/coderd/database/migrations/000059_file_id.up.sql index 640876e7b7..f1b6f96edd 100644 --- a/coderd/database/migrations/000059_file_id.up.sql +++ b/coderd/database/migrations/000059_file_id.up.sql @@ -14,9 +14,6 @@ BEGIN; -- Drop the primary key on hash. ALTER TABLE files DROP CONSTRAINT files_pkey; --- This extension is required by gen_random_uuid -CREATE EXTENSION IF NOT EXISTS pgcrypto; - -- Add an 'id' column and designate it the primary key. ALTER TABLE files ADD COLUMN id uuid NOT NULL PRIMARY KEY DEFAULT gen_random_uuid (); diff --git a/coderd/tracing/exporter.go b/coderd/tracing/exporter.go index b516e196d7..56a8d7dcc6 100644 --- a/coderd/tracing/exporter.go +++ b/coderd/tracing/exporter.go @@ -3,6 +3,7 @@ package tracing import ( "context" + "github.com/go-logr/logr" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" @@ -59,12 +60,15 @@ func TracerProvider(ctx context.Context, service string, opts TracerOpts) (*sdkt tracerProvider := sdktrace.NewTracerProvider(tracerOpts...) otel.SetTracerProvider(tracerProvider) + // Ignore otel errors! + otel.SetErrorHandler(otel.ErrorHandlerFunc(func(err error) {})) otel.SetTextMapPropagator( propagation.NewCompositeTextMapPropagator( propagation.TraceContext{}, propagation.Baggage{}, ), ) + otel.SetLogger(logr.Discard()) return tracerProvider, func(ctx context.Context) error { for _, close := range closers { diff --git a/enterprise/tailnet/coordinator.go b/enterprise/tailnet/coordinator.go index 5749d9ef47..c24107fe2a 100644 --- a/enterprise/tailnet/coordinator.go +++ b/enterprise/tailnet/coordinator.go @@ -215,7 +215,7 @@ func (c *haCoordinator) ServeAgent(conn net.Conn, id uuid.UUID) error { for { node, err := c.handleAgentUpdate(id, decoder) if err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrClosedPipe) { + if errors.Is(err, io.EOF) || errors.Is(err, io.ErrClosedPipe) || errors.Is(err, context.Canceled) { return nil } return xerrors.Errorf("handle next agent message: %w", err) diff --git a/tailnet/coordinator.go b/tailnet/coordinator.go index fc48974ca7..9203bbebff 100644 --- a/tailnet/coordinator.go +++ b/tailnet/coordinator.go @@ -1,6 +1,7 @@ package tailnet import ( + "context" "encoding/json" "errors" "io" @@ -289,7 +290,7 @@ func (c *coordinator) ServeAgent(conn net.Conn, id uuid.UUID) error { for { err := c.handleNextAgentMessage(id, decoder) if err != nil { - if errors.Is(err, io.EOF) { + if errors.Is(err, io.EOF) || errors.Is(err, context.Canceled) { return nil } return xerrors.Errorf("handle next agent message: %w", err)