...
- As
CollectionAlias
works as an extra pointer to the existing collection in theRootCoordinator
, we can implement collection hot reloading at a low cost. - When
AddAlias
,DropAlias
andAlterAlias
, the change of relationship between alias and collection should not affect the operations online, i.e. these operations shoud use the relationship when the task begin to excute. - When
AddAlias
,DropAlias
andAlterAlias
, all proxy should receive the change in the same timestamp to ensure the atomicity between the proxy cache and the rootcoord data. - Users can't drop the
collection
if thecollection
is referenced by analias
, which can simplify the operation and make it easier to ensure the atomicity property about alias changes.
Public Interfaces
Change to Existing APIs
Metatable
now addts2alias2name
andnewestAliasTs
member variables
Code Block |
---|
type immutablemap_string2string struct{ storemap map[string]string } func (imstr2str * immutablemap_string2string) get(key string) (string, error){ rstr,ok := imstr2str.storemap[key] if(!ok){ return nil, fmt.Errorf("key not exist") } return rstr, nil } func (imstr2str * immutablemap_string2string) put(key string, val string) (string, error){ return nil, fmt.Errorf("not allowed put in immutablemap") } type metatable struct{ ... ts2alias2name map[Timestamp]immutablemap_string2string newestAliasTs Timestamp ... } |