Example #1
0
        /// <summary>
        /// this method should be called by the event debouncer
        /// </summary>
        internal bool RemoveKeyspaceFromTokenMap(string name)
        {
            Metadata.Logger.Verbose("Removing keyspace metadata: " + name);
            var dropped = _keyspaces.TryRemove(name, out _);

            _tokenMap?.RemoveKeyspace(name);
            return(dropped);
        }
Example #2
0
        internal Task <bool> RemoveKeyspaceFromTokenMap(string name)
        {
            var currentCounter         = Interlocked.Read(ref _counterRebuild);
            var currentKeyspaceCounter = _keyspacesUpdateCounters.GetOrAdd(name, s => 0);

            return(_tokenMapTaskFactory.StartNew(
                       () =>
            {
                if (AnotherRebuildCompleted(currentCounter))
                {
                    return true;
                }

                if (!UpdateKeyspaceNecessary(name, currentKeyspaceCounter))
                {
                    return true;
                }

                Metadata.Logger.Verbose("Removing keyspace metadata: " + name);
                if (!_keyspaces.TryRemove(name, out var ks))
                {
                    //The keyspace didn't exist
                    return false;
                }
                _tokenMap?.RemoveKeyspace(ks);
                return true;
            }));
        }