Skip to content

openshift/openshift-azure: pkg/util/azureclient/fake/compute/virtualmachinescalesets.go; 7 LoC #7117

Open
@githubvet

Description

@githubvet

Found a possible issue in openshift/openshift-azure at pkg/util/azureclient/fake/compute/virtualmachinescalesets.go

Below is the message reported by the analyzer for this snippet of code. Beware that the analyzer only reports the first issue it finds, so please do not limit your consideration to the contents of the below message.

function call which takes a reference to ss at line 118 may start a goroutine

Click here to see the code in its original context.

Click here to show the 7 line(s) of Go which triggered the analyzer.
for _, ss := range s.rp.Ssc {
	if VMScaleSetName == *ss.Name {
		// the scaler changes the capacity
		ss.Sku.Capacity = parameters.Sku.Capacity
		return s.scale(ctx, resourceGroupName, &ss)
	}
}
Click here to show extra information the analyzer produced.
The following graphviz dot graph describes paths through the callgraph that could lead to a function calling a goroutine:
digraph G {
  "(NewMainKubelet, 31)" -> {}
  "(setup, 1)" -> {"(StartTestServerOrDie, 4)";"(NewUnsecuredEtcd3TestClientServer, 1)";}
  "(visitInstr, 2)" -> {}
  "(append, 1)" -> {}
  "(Add, 2)" -> {"(add, 1)";}
  "(referrers, 1)" -> {"(globalReferrersPkgLevel, 3)";}
  "(updatePod, 2)" -> {"(AddPod, 1)";"(addPod, 1)";}
  "(clientHandshake, 2)" -> {"(newClientTransport, 6)";}
  "(reload, 1)" -> {}
  "(Decode, 2)" -> {"(Read, 1)";"(f, 2)";}
  "(WaitUntilFreshAndList, 2)" -> {"(waitUntilFreshAndBlock, 2)";}
  "(RemoveMember, 2)" -> {"(removeMember, 2)";}
  "(RetrieveValidatedClusterInfo, 1)" -> {"(Check, 1)";}
  "(run, 1)" -> {"(newControllerTestTestController, 1)";"(Complete, 3)";}
  "(Complete, 3)" -> {"(parseFile, 2)";}
  "(addPod, 1)" -> {"(AddPod, 1)";}
  "(Start, 3)" -> {"(Start, 2)";}
  "(Get, 3)" -> {"(RoundTrip, 1)";"(Copy, 2)";"(Write, 1)";}
  "(New, 2)" -> {"(Complete, 2)";"(run, 2)";"(ServeHTTP, 2)";"(Write, 1)";}
  "(Write, 1)" -> {"(Capture, 2)";}
  "(create, 1)" -> {"(New, 2)";}
  "(For, 1)" -> {"(GetValidatedClusterInfoObject, 1)";}
  "(StartTestServerOrDie, 4)" -> {"(StartTestServer, 4)";}
  "(initInformers, 1)" -> {}
  "(Handle, 2)" -> {"(f, 2)";}
  "(Initialize, 1)" -> {"(Write, 1)";}
  "(restartAsStandaloneNode, 2)" -> {"(RestartNode, 1)";}
  "(run, 4)" -> {"(Interpret, 5)";"(NewDynamicResourceConsumer, 12)";}
  "(configureKubeConfigForClientCertRotation, 2)" -> {"(RefreshCertificateAfterExpiry, 4)";}
  "(getFreshApiserverAndClient, 3)" -> {"(withConfigGetFreshApiserverAndClient, 2)";}
  "(New, 1)" -> {"(NewBroker, 3)";"(New, 2)";"(addReadinessCheckRoute, 3)";"(initOAuthAuthorizationServerMetadataRoute, 2)";"(newClient, 1)";"(Run, 1)";"(Run, 2)";"(fn, 1)";"(Route, 3)";"(Parse, 1)";"(newAuthenticator, 2)";"(get, 1)";"(Start, 1)";"(Decode, 2)";"(Handle, 2)";}
  "(dial, 2)" -> {"(NewServerConn, 2)";"(NewClientConn, 3)";}
  "(CreateControllerContext, 4)" -> {}
  "(ForEachPackage, 2)" -> {"(allPackages, 3)";}
  "(startKubelet, 5)" -> {}
  "(AddToManager, 4)" -> {"(addGroupController, 4)";"(addNamespaceController, 2)";"(addRolebindingController, 2)";}
  "(addGroupController, 4)" -> {}
  "(Watch, 2)" -> {}
  "(drainRespBody, 1)" -> {"(Copy, 2)";}
  "(Create, 2)" -> {"(Write, 1)";"(Get, 1)";"(Decode, 2)";"(Do, 3)";"(initInformers, 1)";}
  "(Set, 1)" -> {"(Copy, 2)";"(New, 2)";"(add, 1)";"(Parse, 1)";"(Get, 1)";}
  "(ServeHTTP, 2)" -> {"(tryUpgrade, 2)";"(RemoveMember, 2)";"(serveUpgrade, 2)";"(Validate, 2)";}
  "(scaleReplicaSetAndRecordEvent, 3)" -> {"(scaleReplicaSet, 4)";}
  "(createConfigMapMonitorWorker, 2)" -> {}
  "(Run, 3)" -> {"(Run, 4)";"(run, 3)";"(NewServer, 1)";"(run, 4)";}
  "(RefreshCertificateAfterExpiry, 4)" -> {}
  "(newClientTransport, 6)" -> {}
  "(Interpret, 5)" -> {"(call, 5)";}
  "(update, 1)" -> {"(UpdatePod, 2)";}
  "(RunKubelet, 4)" -> {"(startKubelet, 5)";"(CreateAndInitKubelet, 31)";}
  "(List, 1)" -> {"(New, 1)";"(List, 5)";"(Get, 0)";"(Has, 1)";"(Set, 1)";"(Decode, 2)";"(List, 2)";"(Validate, 1)";"(Set, 2)";"(Do, 2)";"(Do, 3)";}
  "(Accept, 2)" -> {}
  "(addReadinessCheckRoute, 3)" -> {"(Write, 1)";}
  "(implements, 1)" -> {"(Build, 1)";}
  "(awaitOpenSlotForRequest, 1)" -> {}
  "(handle, 1)" -> {}
  "(Start, 2)" -> {"(NewServer, 1)";}
  "(AddPod, 1)" -> {"(UpdatePod, 1)";}
  "(parseFile, 2)" -> {"(iterInterfaces, 1)";}
  "(serveUpgrade, 2)" -> {}
  "(Validate, 1)" -> {"(Parse, 1)";"(Get, 1)";}
  "(post, 1)" -> {}
  "(Apply, 1)" -> {"(fn, 1)";}
  "(tryUpgrade, 2)" -> {}
  "(run, 2)" -> {"(load, 1)";}
  "(StartNode, 2)" -> {}
  "(NewBroker, 3)" -> {}
  "(parsePackageFiles, 2)" -> {"(parseFiles, 6)";}
  "(List, 2)" -> {"(Accept, 2)";"(Write, 1)";}
  "(newWatchBroadcast, 3)" -> {}
  "(Register, 2)" -> {"(addEndpoint, 1)";}
  "(openBackend, 1)" -> {}
  "(startNode, 3)" -> {"(StartNode, 2)";}
  "(restartNode, 2)" -> {"(RestartNode, 1)";}
  "(Terminate, 1)" -> {}
  "(Check, 1)" -> {}
  "(startControllers, 5)" -> {}
  "(convertCall, 2)" -> {"(fn, 1)";}
  "(withAggregator, 4)" -> {"(createAggregatorServer, 3)";}
  "(ConfigureTransport, 1)" -> {"(configureTransport, 1)";}
  "(NewServer, 1)" -> {"(startNode, 3)";"(restartNode, 2)";"(restartAsStandaloneNode, 2)";"(openBackend, 1)";}
  "(Run, 2)" -> {"(implements, 1)";"(referrers, 1)";"(run, 1)";"(parse, 2)";"(createConfigMapMonitorWorker, 2)";"(Copy, 2)";"(run, 3)";"(Run, 3)";"(Read, 1)";"(createWorker, 7)";"(Run, 1)";"(fn, 1)";"(Write, 1)";}
  "(Init, 2)" -> {"(Init, 1)";}
  "(addRolebindingController, 2)" -> {"(Watch, 2)";}
  "(NewDynamicResourceConsumer, 12)" -> {"(newResourceConsumer, 18)";}
  "(initOAuthAuthorizationServerMetadataRoute, 2)" -> {"(Write, 1)";}
  "(UpdatePod, 2)" -> {"(updatePod, 2)";}
  "(Init, 1)" -> {"(loadWAL, 1)";}
  "(Watch, 3)" -> {"(Start, 3)";}
  "(add, 1)" -> {"(newWatchBroadcasts, 1)";"(post, 1)";"(newWatchBroadcast, 3)";}
  "(run, 3)" -> {"(UpdateTransport, 4)";"(RunKubelet, 4)";"(New, 5)";}
  "(Route, 3)" -> {"(f, 2)";}
  "(Put, 3)" -> {"(Copy, 2)";}
  "(configureTransport, 1)" -> {"(addConnIfNeeded, 3)";}
  "(CreateAndInitKubelet, 31)" -> {"(NewMainKubelet, 31)";}
  "(RestartNode, 1)" -> {}
  "(NewClientConn, 3)" -> {"(clientHandshake, 2)";}
  "(GetValidatedClusterInfoObject, 1)" -> {"(RetrieveValidatedClusterInfo, 1)";}
  "(Do, 2)" -> {"(RoundTrip, 1)";"(Write, 1)";"(Get, 1)";"(Parse, 1)";}
  "(newClient, 1)" -> {"(dial, 2)";}
  "(parseText, 1)" -> {"(append, 1)";}
  "(WaitUntilFreshAndGet, 3)" -> {"(waitUntilFreshAndBlock, 2)";}
  "(wrapTLS, 4)" -> {"(newTLSListener, 2)";}
  "(scale, 3)" -> {"(Watch, 1)";"(Create, 1)";"(scaleReplicaSet, 4)";"(scaleReplicaSetAndRecordEvent, 3)";"(List, 1)";}
  "(processPkg, 2)" -> {}
  "(NewListener, 3)" -> {"(wrapTLS, 4)";}
  "(UpdatePod, 1)" -> {}
  "(Watch, 1)" -> {"(Add, 1)";"(Watch, 3)";"(New, 1)";"(Get, 0)";}
  "(createAggregatorServer, 3)" -> {}
  "(StartTestServer, 4)" -> {}
  "(Capture, 2)" -> {"(Init, 1)";}
  "(Build, 1)" -> {"(ForEachPackage, 2)";}
  "(parse, 2)" -> {"(Init, 1)";}
  "(Complete, 2)" -> {"(parseFile, 2)";}
  "(newAuthenticator, 2)" -> {"(SetTransportDefaults, 1)";}
  "(Set, 2)" -> {"(Get, 1)";}
  "(addNamespaceController, 2)" -> {"(Watch, 2)";}
  "(NewSSHTunnelList, 4)" -> {}
  "(Run, 4)" -> {}
  "(Read, 1)" -> {"(Decrypt, 2)";}
  "(updateTransport, 5)" -> {}
  "(Has, 1)" -> {"(Get, 1)";}
  "(fn, 1)" -> {"(append, 1)";}
  "(Register, 1)" -> {"(Register, 2)";}
  "(roundTrip, 1)" -> {"(awaitOpenSlotForRequest, 1)";}
  "(Run, 1)" -> {"(Write, 1)";"(For, 1)";"(processPkg, 2)";"(startControllers, 5)";"(Register, 2)";"(Register, 1)";"(reload, 1)";"(BuildHandlerChain, 5)";"(NewSSHTunnelList, 4)";"(run, 1)";"(New, 5)";"(StartControllers, 5)";"(withAggregator, 4)";"(NewListener, 3)";"(CreateControllerContext, 4)";}
  "(Create, 1)" -> {"(Update, 1)";"(Get, 2)";"(drainRespBody, 1)";"(New, 1)";"(Create, 2)";"(create, 1)";"(convertCall, 2)";"(Apply, 1)";}
  "(Open, 2)" -> {"(ServeHTTP, 2)";}
  "(f, 2)" -> {}
  "(newWatchBroadcasts, 1)" -> {}
  "(New, 5)" -> {"(configureKubeConfigForClientCertRotation, 2)";}
  "(addConnIfNeeded, 3)" -> {}
  "(NewServerConn, 2)" -> {"(serverHandshake, 1)";}
  "(newResourceConsumer, 18)" -> {}
  "(NewClusterV3, 2)" -> {"(Launch, 1)";}
  "(RoundTrip, 1)" -> {"(roundTrip, 1)";"(RoundTripOpt, 2)";}
  "(Get, 0)" -> {"(Get, 2)";"(Get, 3)";"(Initialize, 1)";"(Get, 5)";"(get, 1)";}
  "(createWorker, 7)" -> {}
  "(BuildHandlerChain, 5)" -> {}
  "(globalReferrersPkgLevel, 3)" -> {}
  "(UpdateTransport, 4)" -> {"(updateTransport, 5)";}
  "(call, 5)" -> {"(callSSA, 6)";}
  "(callSSA, 6)" -> {"(runFrame, 1)";}
  "(Start, 1)" -> {"(Run, 1)";"(start, 1)";"(run, 1)";"(run, 2)";}
  "(Get, 2)" -> {"(Open, 2)";"(Do, 3)";"(Do, 2)";"(Get, 3)";"(Write, 1)";"(Parse, 1)";"(Run, 1)";"(Decode, 2)";"(handle, 1)";"(Accept, 2)";"(Put, 3)";"(get, 1)";"(Get, 1)";"(f, 2)";}
  "(Update, 1)" -> {"(update, 1)";"(drainRespBody, 1)";"(Add, 1)";"(Get, 2)";"(New, 1)";"(Get, 1)";"(Update, 2)";"(convertCall, 2)";}
  "(Parse, 1)" -> {"(parseText, 1)";"(parse, 2)";"(parse, 3)";}
  "(addEndpoint, 1)" -> {}
  "(Add, 1)" -> {"(Set, 1)";"(New, 1)";"(add, 1)";"(add, 2)";"(Add, 2)";"(Parse, 1)";"(get, 1)";"(Start, 1)";}
  "(StartControllers, 5)" -> {}
  "(newControllerTestTestController, 1)" -> {"(getFreshApiserverAndClient, 3)";"(setup, 1)";}
  "(Get, 5)" -> {"(WaitUntilFreshAndGet, 3)";}
  "(Launch, 1)" -> {}
  "(Copy, 2)" -> {"(ServeHTTP, 2)";}
  "(scaleReplicaSet, 4)" -> {"(Update, 1)";}
  "(waitUntilFreshAndBlock, 2)" -> {}
  "(withConfigGetFreshApiserverAndClient, 2)" -> {}
  "(NewUnsecuredEtcd3TestClientServer, 1)" -> {"(NewClusterV3, 2)";}
  "(newServerTransport, 4)" -> {}
  "(Do, 3)" -> {"(Copy, 2)";"(Parse, 1)";}
  "(Decrypt, 2)" -> {"(Open, 4)";}
  "(newTLSListener, 2)" -> {}
  "(RoundTripOpt, 2)" -> {"(roundTrip, 1)";}
  "(parse, 3)" -> {"(Init, 2)";}
  "(Validate, 2)" -> {}
  "(SetTransportDefaults, 1)" -> {"(ConfigureTransport, 1)";}
  "(parseFiles, 6)" -> {}
  "(removeMember, 2)" -> {"(Terminate, 1)";}
  "(serverHandshake, 1)" -> {"(newServerTransport, 4)";}
  "(List, 5)" -> {"(WaitUntilFreshAndList, 2)";}
  "(Get, 1)" -> {"(New, 2)";"(Read, 1)";"(get, 1)";}
  "(Open, 4)" -> {}
  "(get, 1)" -> {"(SetTransportDefaults, 1)";}
  "(iterInterfaces, 1)" -> {}
  "(start, 1)" -> {"(AddToManager, 4)";}
  "(Update, 2)" -> {"(Write, 1)";"(run, 1)";"(get, 1)";}
  "(runFrame, 1)" -> {"(visitInstr, 2)";}
  "(add, 2)" -> {"(add, 1)";}
  "(loadWAL, 1)" -> {}
  "(load, 1)" -> {"(parsePackageFiles, 2)";}
  "(allPackages, 3)" -> {}
}

Leave a reaction on this issue to contribute to the project by classifying this instance as a Bug 👎, Mitigated 👍, or Desirable Behavior 🚀
See the descriptions of the classifications here for more information.

commit ID: 2be6ef0b6affb2bfec7f6c37412970c1868fc3b0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions