mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-17 20:00:07 +00:00
Add logging error when UpdatePod finds no existing PodGroup with the pod to update
This commit is contained in:
@@ -17,12 +17,14 @@ limitations under the License.
|
||||
package workloadmanager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/utils/ptr"
|
||||
)
|
||||
|
||||
@@ -39,6 +41,19 @@ type podGroupKey struct {
|
||||
replicaKey string
|
||||
}
|
||||
|
||||
func (pgk podGroupKey) GetName() string {
|
||||
if pgk.replicaKey == "" {
|
||||
return fmt.Sprintf("%s-%s", pgk.workloadName, pgk.podGroupName)
|
||||
}
|
||||
return fmt.Sprintf("%s-%s-%s", pgk.workloadName, pgk.podGroupName, pgk.replicaKey)
|
||||
}
|
||||
|
||||
func (pgk podGroupKey) GetNamespace() string {
|
||||
return pgk.namespace
|
||||
}
|
||||
|
||||
var _ klog.KMetadata = &podGroupKey{}
|
||||
|
||||
func newPodGroupKey(namespace string, workloadRef *v1.WorkloadReference) podGroupKey {
|
||||
return podGroupKey{
|
||||
namespace: namespace,
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
"sync"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/klog/v2"
|
||||
fwk "k8s.io/kube-scheduler/framework"
|
||||
)
|
||||
|
||||
@@ -46,12 +47,15 @@ type workloadManager struct {
|
||||
|
||||
// podGroupStates stores the runtime state for each known pod group.
|
||||
podGroupStates map[podGroupKey]*podGroupState
|
||||
|
||||
logger klog.Logger
|
||||
}
|
||||
|
||||
// New initializes a new workload manager and returns it.
|
||||
func New() *workloadManager {
|
||||
func New(logger klog.Logger) *workloadManager {
|
||||
return &workloadManager{
|
||||
podGroupStates: make(map[podGroupKey]*podGroupState),
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +93,7 @@ func (wm *workloadManager) UpdatePod(oldPod, newPod *v1.Pod) {
|
||||
state = newPodGroupState()
|
||||
wm.podGroupStates[key] = state
|
||||
state.addPod(newPod)
|
||||
wm.logger.Error(nil, "UpdatePod found no existing PodGroup for pod. Created new PodGroup for the pod", "pod", klog.KObj(newPod), "podGroupKey", klog.KObj(key))
|
||||
return
|
||||
}
|
||||
state.updatePod(oldPod, newPod)
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"testing"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/klog/v2/ktesting"
|
||||
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||
)
|
||||
|
||||
@@ -76,7 +77,9 @@ func TestWorkloadManager_AddPod(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
manager := New()
|
||||
logger, _ := ktesting.NewTestContext(t)
|
||||
|
||||
manager := New(logger)
|
||||
for _, p := range tt.initPods {
|
||||
manager.AddPod(p)
|
||||
}
|
||||
@@ -178,7 +181,9 @@ func TestWorkloadManager_UpdatePod(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
manager := New()
|
||||
logger, _ := ktesting.NewTestContext(t)
|
||||
|
||||
manager := New(logger)
|
||||
|
||||
manager.AddPod(tt.oldPod)
|
||||
if tt.assumePod {
|
||||
@@ -250,7 +255,9 @@ func TestWorkloadManager_DeletePod(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
manager := New()
|
||||
logger, _ := ktesting.NewTestContext(t)
|
||||
|
||||
manager := New(logger)
|
||||
for _, p := range tt.initPods {
|
||||
manager.AddPod(p)
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ limitations under the License.
|
||||
package gangscheduling
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
@@ -260,11 +259,8 @@ func TestGangSchedulingFlow(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
_, ctx := ktesting.NewTestContext(t)
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
manager := workloadmanager.New()
|
||||
logger, ctx := ktesting.NewTestContext(t)
|
||||
manager := workloadmanager.New(logger)
|
||||
|
||||
informerFactory := informers.NewSharedInformerFactory(fake.NewClientset(), 0)
|
||||
workloadInformer := informerFactory.Scheduling().V1alpha1().Workloads()
|
||||
|
||||
@@ -350,7 +350,7 @@ func New(ctx context.Context,
|
||||
}
|
||||
var workloadManager internalworkloadmanager.WorkloadManager
|
||||
if feature.DefaultFeatureGate.Enabled(features.GenericWorkload) {
|
||||
workloadManager = internalworkloadmanager.New()
|
||||
workloadManager = internalworkloadmanager.New(logger)
|
||||
}
|
||||
|
||||
profiles, err := profile.NewMap(ctx, options.profiles, registry, recorderFactory,
|
||||
|
||||
Reference in New Issue
Block a user