Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions pkg/core/store/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (

coremodel "github.com/apache/dubbo-admin/pkg/core/resource/model"
"github.com/apache/dubbo-admin/pkg/core/runtime"
"github.com/apache/dubbo-admin/pkg/core/store/index"
)

func init() {
Expand Down Expand Up @@ -77,13 +76,6 @@ func (sc *storeComponent) Init(ctx runtime.BuilderContext) error {
return err
}
sc.stores[kind] = store
indexers := index.IndexersRegistry().Indexers(kind)
if indexers == nil {
continue
}
if err := store.AddIndexers(indexers); err != nil {
return err
}
if err = store.Init(ctx); err != nil {
return err
}
Expand Down
7 changes: 6 additions & 1 deletion pkg/core/store/index/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ func IndexersRegistry() IndexerRegistry {
}

type IndexerRegistry interface {
// Indexers returns the indexers for the given resource kind
// if no indexers are registered for the resource kind, an empty map is returned
Indexers(model.ResourceKind) cache.Indexers
}

Expand All @@ -60,7 +62,10 @@ func newIndexRegistry() MutableIndexerRegistry {
}

func (i *indexerRegistry) Indexers(k model.ResourceKind) cache.Indexers {
return i.rIndexers[k]
if indexers, exists := i.rIndexers[k]; exists && indexers != nil {
return indexers
}
return make(cache.Indexers)
}

func (i *indexerRegistry) Register(k model.ResourceKind, indexers cache.Indexers) {
Expand Down
6 changes: 6 additions & 0 deletions pkg/store/dbcommon/gorm_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
"github.com/apache/dubbo-admin/pkg/core/resource/model"
"github.com/apache/dubbo-admin/pkg/core/runtime"
"github.com/apache/dubbo-admin/pkg/core/store"
"github.com/apache/dubbo-admin/pkg/core/store/index"
)

// GormStore is a GORM-backed store implementation for Dubbo resources
Expand Down Expand Up @@ -65,6 +66,11 @@ func (gs *GormStore) Init(_ runtime.BuilderContext) error {
if err := db.Scopes(TableScope(gs.kind.ToString())).AutoMigrate(&ResourceModel{}); err != nil {
return fmt.Errorf("failed to migrate schema for %s: %w", gs.kind.ToString(), err)
}
// Register indexers for the resource kind
indexers := index.IndexersRegistry().Indexers(gs.kind)
if err := gs.AddIndexers(indexers); err != nil {
return err
}

// Rebuild indices from existing data in the database
if err := gs.rebuildIndices(); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions pkg/store/memory/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@ func (sf *storeFactory) Support(s storecfg.Type) bool {
return s == storecfg.Memory
}

func (sf *storeFactory) New(_ coremodel.ResourceKind, _ *storecfg.Config) (store.ManagedResourceStore, error) {
return NewMemoryResourceStore(), nil
func (sf *storeFactory) New(rk coremodel.ResourceKind, _ *storecfg.Config) (store.ManagedResourceStore, error) {
return NewMemoryResourceStore(rk), nil
}
9 changes: 6 additions & 3 deletions pkg/store/memory/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,22 @@ import (
coremodel "github.com/apache/dubbo-admin/pkg/core/resource/model"
"github.com/apache/dubbo-admin/pkg/core/runtime"
"github.com/apache/dubbo-admin/pkg/core/store"
"github.com/apache/dubbo-admin/pkg/core/store/index"
)

type resourceStore struct {
rk coremodel.ResourceKind
storeProxy cache.Indexer
}

var _ store.ManagedResourceStore = &resourceStore{}

func NewMemoryResourceStore() store.ManagedResourceStore {
return &resourceStore{}
func NewMemoryResourceStore(rk coremodel.ResourceKind) store.ManagedResourceStore {
return &resourceStore{rk: rk}
}

func (rs *resourceStore) Init(_ runtime.BuilderContext) error {
indexers := index.IndexersRegistry().Indexers(rs.rk)
rs.storeProxy = cache.NewIndexer(
func(obj interface{}) (string, error) {
r, ok := obj.(coremodel.Resource)
Expand All @@ -50,7 +53,7 @@ func (rs *resourceStore) Init(_ runtime.BuilderContext) error {
}
return r.ResourceKey(), nil
},
cache.Indexers{},
indexers,
)
return nil
}
Expand Down
30 changes: 15 additions & 15 deletions pkg/store/memory/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (mr *mockResource) String() string {
}

func TestNewMemoryResourceStore(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
assert.NotNil(t, store)
}

Expand All @@ -88,7 +88,7 @@ func TestResourceStore_Init(t *testing.T) {
}

func TestResourceStore_AddAndGet(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -121,7 +121,7 @@ func TestResourceStore_AddAndGet(t *testing.T) {
}

func TestResourceStore_Update(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -163,7 +163,7 @@ func TestResourceStore_Update(t *testing.T) {
}

func TestResourceStore_Delete(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -193,7 +193,7 @@ func TestResourceStore_Delete(t *testing.T) {
}

func TestResourceStore_List(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -226,7 +226,7 @@ func TestResourceStore_List(t *testing.T) {
}

func TestResourceStore_ListKeys(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -259,7 +259,7 @@ func TestResourceStore_ListKeys(t *testing.T) {
}

func TestResourceStore_Replace(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -295,7 +295,7 @@ func TestResourceStore_Replace(t *testing.T) {
}

func TestResourceStore_GetByKeys(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -331,7 +331,7 @@ func TestResourceStore_GetByKeys(t *testing.T) {
}

func TestResourceStore_ListByIndexes(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -386,7 +386,7 @@ func TestResourceStore_ListByIndexes(t *testing.T) {
}

func TestResourceStore_PageListByIndexes(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -467,7 +467,7 @@ func TestResourceStore_PageListByIndexes(t *testing.T) {
}

func TestResourceStore_MultipleIndexes(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -558,7 +558,7 @@ func TestResourceStore_MultipleIndexes(t *testing.T) {
}

func TestResourceStore_IndexKeys(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -631,7 +631,7 @@ func TestResourceStore_IndexKeys(t *testing.T) {
}

func TestResourceStore_ByIndex(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -690,7 +690,7 @@ func TestResourceStore_ByIndex(t *testing.T) {
}

func TestResourceStore_GetIndexers(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down Expand Up @@ -718,7 +718,7 @@ func TestResourceStore_GetIndexers(t *testing.T) {
}

func TestResourceStore_ListIndexFuncValues(t *testing.T) {
store := NewMemoryResourceStore()
store := NewMemoryResourceStore("TestResource")
err := store.Init(nil)
assert.NoError(t, err)

Expand Down
Loading