GetMemberlistKV will initialize Memberlist.KV on first call, and add it to service failure watcher.
()
| 47 | |
| 48 | // GetMemberlistKV will initialize Memberlist.KV on first call, and add it to service failure watcher. |
| 49 | func (kvs *KVInitService) GetMemberlistKV() (*KV, error) { |
| 50 | // Validate WatchPrefixBufferSize before initialization |
| 51 | if kvs.cfg.WatchPrefixBufferSize <= 0 { |
| 52 | return nil, fmt.Errorf("invalid WatchPrefixBufferSize: must be greater than 0") |
| 53 | } |
| 54 | |
| 55 | kvs.init.Do(func() { |
| 56 | kv := NewKV(*kvs.cfg, kvs.logger, kvs.dnsProvider, kvs.registerer) |
| 57 | kvs.watcher.WatchService(kv) |
| 58 | kvs.err = kv.StartAsync(context.Background()) |
| 59 | |
| 60 | kvs.kv.Store(kv) |
| 61 | }) |
| 62 | |
| 63 | return kvs.getKV(), kvs.err |
| 64 | } |
| 65 | |
| 66 | // Returns KV if it was initialized, or nil. |
| 67 | func (kvs *KVInitService) getKV() *KV { |