mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-21 18:11:22 +00:00
Make 'pod' package to use unified checkpointManager
Signed-off-by: vikaschoudhary16 <choudharyvikas16@gmail.com>
This commit is contained in:
committed by
vikaschoudhary16
parent
d62bd9ef65
commit
cedbd93255
@@ -22,7 +22,7 @@ go_test(
|
||||
srcs = ["checkpoint_manager_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//pkg/kubelet/checkpointmanager/errors:go_default_library",
|
||||
"//pkg/kubelet/checkpointmanager/checksum:go_default_library",
|
||||
"//pkg/kubelet/checkpointmanager/testing:go_default_library",
|
||||
"//pkg/kubelet/checkpointmanager/testing/example_checkpoint_formats/v1:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||
|
@@ -1,8 +1,9 @@
|
||||
## DISCLAIMER
|
||||
Sig-Node community has reached a general consensus, as a best practice, to
|
||||
- Sig-Node community has reached a general consensus, as a best practice, to
|
||||
avoid introducing any new checkpointing support. We reached this understanding
|
||||
after struggling with some hard-to-debug issues in the production environments
|
||||
caused by the checkpointing.
|
||||
- Any changes to the checkpointed data structure would be considered incompatible and a component should add its own handling if it needs to ensure backward compatibility of reading old-format checkpoint files.
|
||||
|
||||
## Introduction
|
||||
This folder contains a framework & primitives, Checkpointing Manager, which is
|
||||
|
@@ -18,6 +18,7 @@ package checkpointmanager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors"
|
||||
utilstore "k8s.io/kubernetes/pkg/kubelet/util/store"
|
||||
@@ -48,8 +49,10 @@ type CheckpointManager interface {
|
||||
type impl struct {
|
||||
path string
|
||||
store utilstore.Store
|
||||
mutex sync.Mutex
|
||||
}
|
||||
|
||||
// NewCheckpointManager returns a new instance of a checkpoint manager
|
||||
func NewCheckpointManager(checkpointDir string) (CheckpointManager, error) {
|
||||
fstore, err := utilstore.NewFileStore(checkpointDir, utilfs.DefaultFs{})
|
||||
if err != nil {
|
||||
@@ -88,6 +91,7 @@ func (manager *impl) GetCheckpoint(checkpointKey string, checkpoint Checkpoint)
|
||||
return err
|
||||
}
|
||||
|
||||
// RemoveCheckpoint will not return error if checkpoint does not exist.
|
||||
func (manager *impl) RemoveCheckpoint(checkpointKey string) error {
|
||||
manager.mutex.Lock()
|
||||
defer manager.mutex.Unlock()
|
||||
|
@@ -18,12 +18,11 @@ package checkpointmanager
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"hash/fnv"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors"
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager/checksum"
|
||||
utilstore "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/testing"
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager/testing/example_checkpoint_formats/v1"
|
||||
)
|
||||
@@ -50,7 +49,7 @@ type CheckpointDataV2 struct {
|
||||
type protocol string
|
||||
|
||||
// portMapping is the port mapping configurations of a sandbox.
|
||||
type portMapping struct {
|
||||
type PortMapping struct {
|
||||
// protocol of the port mapping.
|
||||
Protocol *protocol
|
||||
// Port number within the container.
|
||||
@@ -153,7 +152,7 @@ func TestCheckpointManager(t *testing.T) {
|
||||
port443 := int32(443)
|
||||
proto := protocol("tcp")
|
||||
|
||||
portMappings := []*portMapping{
|
||||
portMappings := []*PortMapping{
|
||||
{
|
||||
&proto,
|
||||
&port80,
|
||||
|
@@ -18,5 +18,8 @@ package errors
|
||||
|
||||
import "fmt"
|
||||
|
||||
var CorruptCheckpointError = fmt.Errorf("checkpoint is corrupted.")
|
||||
var CheckpointNotFoundError = fmt.Errorf("checkpoint is not found.")
|
||||
// ErrCorruptCheckpoint error is reported when checksum does not match
|
||||
var ErrCorruptCheckpoint = fmt.Errorf("checkpoint is corrupted")
|
||||
|
||||
// ErrCheckpointNotFound is reported when checkpoint is not found for a given key
|
||||
var ErrCheckpointNotFound = fmt.Errorf("checkpoint is not found")
|
||||
|
@@ -27,10 +27,12 @@ type MemStore struct {
|
||||
sync.Mutex
|
||||
}
|
||||
|
||||
// NewMemStore returns an instance of MemStore
|
||||
func NewMemStore() *MemStore {
|
||||
return &MemStore{mem: make(map[string][]byte)}
|
||||
}
|
||||
|
||||
// Write writes the data to the store
|
||||
func (mstore *MemStore) Write(key string, data []byte) error {
|
||||
mstore.Lock()
|
||||
defer mstore.Unlock()
|
||||
@@ -38,6 +40,7 @@ func (mstore *MemStore) Write(key string, data []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Read returns data read from store
|
||||
func (mstore *MemStore) Read(key string) ([]byte, error) {
|
||||
mstore.Lock()
|
||||
defer mstore.Unlock()
|
||||
@@ -48,6 +51,7 @@ func (mstore *MemStore) Read(key string) ([]byte, error) {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// Delete deletes data from the store
|
||||
func (mstore *MemStore) Delete(key string) error {
|
||||
mstore.Lock()
|
||||
defer mstore.Unlock()
|
||||
@@ -55,6 +59,7 @@ func (mstore *MemStore) Delete(key string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// List returns all the keys from the store
|
||||
func (mstore *MemStore) List() ([]string, error) {
|
||||
mstore.Lock()
|
||||
defer mstore.Unlock()
|
||||
|
Reference in New Issue
Block a user