Open
Description
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