fix: Tidy up closes for nicer output (#4605)

* fix: Tidy up closes for nicer output

There was a context canceled message that would appear
because of traces, and this was using the wrong close.

I don't think it was causing any specific problems, but
it could make a replica warning appear on restart.

* Fix migration and experimental
This commit is contained in:
Kyle Carberry 2022-10-17 18:36:23 -05:00 committed by GitHub
parent e0a14f68fa
commit c5afaffa7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 14 deletions

View File

@ -609,7 +609,8 @@ func (h *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
// ExperimentalEnabled returns if the experimental feature flag is enabled. // ExperimentalEnabled returns if the experimental feature flag is enabled.
func ExperimentalEnabled(cmd *cobra.Command) bool { 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. // EnsureExperimental will ensure that the experimental feature flag is set if the given flag is set.

View File

@ -476,14 +476,13 @@ func Server(dflags *codersdk.DeploymentFlags, newAPI func(context.Context, *code
), dflags.PromAddress.Value, "prometheus")() ), 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 // can have it's own close functions. This is cleaner
// than abstracting the Coder API itself. // than abstracting the Coder API itself.
coderAPI, closer, err := newAPI(ctx, options) coderAPI, coderAPICloser, err := newAPI(ctx, options)
if err != nil { if err != nil {
return err return err
} }
defer closer.Close()
client := codersdk.New(localURL) client := codersdk.New(localURL)
if dflags.TLSEnable.Value { if dflags.TLSEnable.Value {
@ -663,7 +662,7 @@ func Server(dflags *codersdk.DeploymentFlags, newAPI func(context.Context, *code
wg.Wait() wg.Wait()
cmd.Println("Waiting for WebSocket connections to close...") cmd.Println("Waiting for WebSocket connections to close...")
_ = coderAPI.Close() _ = coderAPICloser.Close()
cmd.Println("Done waiting for WebSocket connections") cmd.Println("Done waiting for WebSocket connections")
// Close tunnel after we no longer have in-flight connections. // Close tunnel after we no longer have in-flight connections.

View File

@ -1,9 +1,5 @@
-- Code generated by 'make coderd/database/generate'. DO NOT EDIT. -- 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 ( CREATE TYPE api_key_scope AS ENUM (
'all', 'all',
'application_connect' 'application_connect'

View File

@ -14,9 +14,6 @@ BEGIN;
-- Drop the primary key on hash. -- Drop the primary key on hash.
ALTER TABLE files DROP CONSTRAINT files_pkey; 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. -- Add an 'id' column and designate it the primary key.
ALTER TABLE files ADD COLUMN ALTER TABLE files ADD COLUMN
id uuid NOT NULL PRIMARY KEY DEFAULT gen_random_uuid (); id uuid NOT NULL PRIMARY KEY DEFAULT gen_random_uuid ();

View File

@ -3,6 +3,7 @@ package tracing
import ( import (
"context" "context"
"github.com/go-logr/logr"
"go.opentelemetry.io/otel" "go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "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...) tracerProvider := sdktrace.NewTracerProvider(tracerOpts...)
otel.SetTracerProvider(tracerProvider) otel.SetTracerProvider(tracerProvider)
// Ignore otel errors!
otel.SetErrorHandler(otel.ErrorHandlerFunc(func(err error) {}))
otel.SetTextMapPropagator( otel.SetTextMapPropagator(
propagation.NewCompositeTextMapPropagator( propagation.NewCompositeTextMapPropagator(
propagation.TraceContext{}, propagation.TraceContext{},
propagation.Baggage{}, propagation.Baggage{},
), ),
) )
otel.SetLogger(logr.Discard())
return tracerProvider, func(ctx context.Context) error { return tracerProvider, func(ctx context.Context) error {
for _, close := range closers { for _, close := range closers {

View File

@ -215,7 +215,7 @@ func (c *haCoordinator) ServeAgent(conn net.Conn, id uuid.UUID) error {
for { for {
node, err := c.handleAgentUpdate(id, decoder) node, err := c.handleAgentUpdate(id, decoder)
if err != nil { 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 nil
} }
return xerrors.Errorf("handle next agent message: %w", err) return xerrors.Errorf("handle next agent message: %w", err)

View File

@ -1,6 +1,7 @@
package tailnet package tailnet
import ( import (
"context"
"encoding/json" "encoding/json"
"errors" "errors"
"io" "io"
@ -289,7 +290,7 @@ func (c *coordinator) ServeAgent(conn net.Conn, id uuid.UUID) error {
for { for {
err := c.handleNextAgentMessage(id, decoder) err := c.handleNextAgentMessage(id, decoder)
if err != nil { if err != nil {
if errors.Is(err, io.EOF) { if errors.Is(err, io.EOF) || errors.Is(err, context.Canceled) {
return nil return nil
} }
return xerrors.Errorf("handle next agent message: %w", err) return xerrors.Errorf("handle next agent message: %w", err)