diff --git a/generators/core_constants.go b/generators/core_constants.go index 0d3de7a8522fdd45bf2d63336a7a8a1bcde14080..0274f845a23bd77ca69443db4c7d4fda8eebeb2a 100644 --- a/generators/core_constants.go +++ b/generators/core_constants.go @@ -1,3 +1,4 @@ package generators const MODULE_ROOT string = "gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler" +const VERSION string = "0.0.2" diff --git a/generators/core_main_visitor.go b/generators/core_main_visitor.go index 52d466401671a3a59f0a43a80fa0e5fb4b5a71bc..ad2bc42f93f200772b5f948397ac7806132ba91b 100644 --- a/generators/core_main_visitor.go +++ b/generators/core_main_visitor.go @@ -86,7 +86,7 @@ func (v *MainVisitor) modifySpecModFile() { } f.Module.Mod.Path = "spec" f.Module.Syntax.Token = []string{"module", "spec"} - err = f.AddRequire("gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler", "v0.0.1") + err = f.AddRequire("gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler", "v0.0.2") if err != nil { v.logger.Fatal(err) } @@ -220,7 +220,7 @@ func (v *MainVisitor) generateModFile(ctr_dir string, n *DockerContainerNode) { if err != nil { v.logger.Fatal(err) } - err = f.AddRequire("gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler", "v0.0.1") + err = f.AddRequire("gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler", "v0.0.2") if err != nil { v.logger.Fatal(err) } diff --git a/stdlib/choices/cache/memcached.go b/stdlib/choices/cache/memcached.go index 5c97ab4be418ddff353a96446b2b10b82dbc3b0e..b37667e6bb3572a12cf5a1bfaeb953e818381974 100644 --- a/stdlib/choices/cache/memcached.go +++ b/stdlib/choices/cache/memcached.go @@ -8,23 +8,27 @@ import ( "gitlab.mpi-sws.org/cld/blueprint/blueprint-compiler/stdlib" ) -type MCConnection struct{} +type MCConnection struct{ + Client *memcache.Client +} -func NewCacheConn() *MCConnection { - return &MCConnection{} +func NewCacheConn(addr string, port string) *MCConnection { + conn_addr := addr + ":" + port + client := memcache.New(conn_addr) + client.MaxIdleConns = 60000 + return &MCConnection{Client : client} } type Memcached struct { - client *memcache.Client connPool *stdlib.ClientPool[*MCConnection] } func NewMemcachedClient(addr string, port string) *Memcached { - conn_addr := addr + ":" + port - client := memcache.New(conn_addr) - client.MaxIdleConns = 60000 - pool := stdlib.NewClientPool[*MCConnection](1024, NewCacheConn) - return &Memcached{client: client, connPool: pool} + NewConn := func() *MCConnection { + return NewCacheConn(addr, port) + } + pool := stdlib.NewClientPool[*MCConnection](1024, NewConn) + return &Memcached{connPool: pool} } func (m *Memcached) Put(key string, value interface{}) error { @@ -34,13 +38,13 @@ func (m *Memcached) Put(key string, value interface{}) error { if err != nil { return err } - return m.client.Set(&memcache.Item{Key: key, Value: marshaled_val}) + return conn.Client.Set(&memcache.Item{Key: key, Value: marshaled_val}) } func (m *Memcached) Get(key string, value interface{}) error { conn := m.connPool.Pop() defer m.connPool.Push(conn) - it, err := m.client.Get(key) + it, err := conn.Client.Get(key) if err != nil { return err } @@ -50,20 +54,20 @@ func (m *Memcached) Get(key string, value interface{}) error { func (m *Memcached) Incr(key string) (int64, error) { conn := m.connPool.Pop() defer m.connPool.Push(conn) - val, err := m.client.Increment(key, 1) + val, err := conn.Client.Increment(key, 1) return int64(val), err } func (m *Memcached) Delete(key string) error { conn := m.connPool.Pop() defer m.connPool.Push(conn) - return m.client.Delete(key) + return conn.Client.Delete(key) } func (m *Memcached) Mget(keys []string, values []interface{}) error { conn := m.connPool.Pop() defer m.connPool.Push(conn) - val_map, err := m.client.GetMulti(keys) + val_map, err := conn.Client.GetMulti(keys) if err != nil { return err } @@ -84,9 +88,7 @@ func (m *Memcached) Mset(keys []string, values []interface{}) error { err_chan := make(chan error, len(keys)) for idx, key := range keys { go func(key string, val interface{}) { - conn := m.connPool.Pop() defer wg.Done() - defer m.connPool.Push(conn) err_chan <- m.Put(key, val) }(key, values[idx]) }