@@ -62,6 +62,7 @@ import (
6262"github.com/coder/coder/v2/buildinfo"
6363"github.com/coder/coder/v2/cli/clibase"
6464"github.com/coder/coder/v2/cli/cliui"
65+ "github.com/coder/coder/v2/cli/cliutil"
6566"github.com/coder/coder/v2/cli/config"
6667"github.com/coder/coder/v2/coderd"
6768"github.com/coder/coder/v2/coderd/autobuild"
@@ -86,6 +87,7 @@ import (
8687"github.com/coder/coder/v2/coderd/unhanger"
8788"github.com/coder/coder/v2/coderd/updatecheck"
8889"github.com/coder/coder/v2/coderd/util/slice"
90+ stringutil"github.com/coder/coder/v2/coderd/util/strings"
8991"github.com/coder/coder/v2/coderd/workspaceapps"
9092"github.com/coder/coder/v2/codersdk"
9193"github.com/coder/coder/v2/cryptorand"
@@ -875,9 +877,14 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
875877defer provisionerdWaitGroup .Wait ()
876878provisionerdMetrics := provisionerd .NewMetrics (options .PrometheusRegistry )
877879for i := int64 (0 );i < vals .Provisioner .Daemons .Value ();i ++ {
880+ suffix := fmt .Sprintf ("%d" ,i )
881+ // The suffix is added to the hostname, so we may need to trim to fit into
882+ // the 64 character limit.
883+ hostname := stringutil .Truncate (cliutil .Hostname (),63 - len (suffix ))
884+ name := fmt .Sprintf ("%s-%s" ,hostname ,suffix )
878885daemonCacheDir := filepath .Join (cacheDir ,fmt .Sprintf ("provisioner-%d" ,i ))
879886daemon ,err := newProvisionerDaemon (
880- ctx ,coderAPI ,provisionerdMetrics ,logger ,vals ,daemonCacheDir ,errCh ,& provisionerdWaitGroup ,
887+ ctx ,coderAPI ,provisionerdMetrics ,logger ,vals ,daemonCacheDir ,errCh ,& provisionerdWaitGroup ,name ,
881888)
882889if err != nil {
883890return xerrors .Errorf ("create provisioner daemon: %w" ,err )
@@ -1243,6 +1250,7 @@ func newProvisionerDaemon(
12431250cacheDir string ,
12441251errCh chan error ,
12451252wg * sync.WaitGroup ,
1253+ name string ,
12461254) (srv * provisionerd.Server ,err error ) {
12471255ctx ,cancel := context .WithCancel (ctx )
12481256defer func () {
@@ -1334,9 +1342,9 @@ func newProvisionerDaemon(
13341342return provisionerd .New (func (ctx context.Context ) (proto.DRPCProvisionerDaemonClient ,error ) {
13351343// This debounces calls to listen every second. Read the comment
13361344// in provisionerdserver.go to learn more!
1337- return coderAPI .CreateInMemoryProvisionerDaemon (ctx )
1345+ return coderAPI .CreateInMemoryProvisionerDaemon (ctx , name )
13381346},& provisionerd.Options {
1339- Logger :logger .Named ("provisionerd" ),
1347+ Logger :logger .Named (fmt . Sprintf ( "provisionerd-%s" , name ) ),
13401348UpdateInterval :time .Second ,
13411349ForceCancelInterval :cfg .Provisioner .ForceCancelInterval .Value (),
13421350Connector :connector ,