public BucketKeysEnumerator(string dbName, string colName, string queryString, NodeContext context) { _dbName = dbName; _colName = colName; if (context != null) { _databasesManager = context.DatabasesManager; } Alachisoft.NosDB.Common.Server.Engine.Impl.Query query = new Alachisoft.NosDB.Common.Server.Engine.Impl.Query(); query.QueryText = queryString; Alachisoft.NosDB.Common.Server.Engine.Impl.ReadQueryOperation readQueryOperation = new Alachisoft.NosDB.Common.Server.Engine.Impl.ReadQueryOperation(); readQueryOperation.Database = dbName; readQueryOperation.Collection = colName; readQueryOperation.Query = query; if (_databasesManager != null) { response = _databasesManager.ExecuteReader(readQueryOperation); } if (response == null || !response.IsSuccessfull) { throw new Exception(Common.ErrorHandling.ErrorMessages.GetErrorMessage(response.ErrorCode) + ":Query failed on collection" + colName); } if (response != null && response.DataChunk != null && response.DataChunk.Documents != null && response.DataChunk.Documents.Count > 0) { lastDataChunk = response.DataChunk; isLastChunk = response.DataChunk.IsLastChunk; this.dataChunkEnumerator = response.DataChunk.Documents.GetEnumerator(); } }
internal StateTxfrCorresponder(NodeContext context, IDispatcher dispatcher, StateTransferIdentity identity, bool isLocal)//,String dbName,String colName,NodeIdentity requestingShard, StateTransferType transferType) { _context = context; _dispatcher = dispatcher; _isLocal = isLocal; if (_context != null) { _databasesManager = _context.DatabasesManager; } corresponderIdentity = identity; _currentBucketkeys = new ClusteredList <DocumentKey>(); // Create Collection for keeping keys being transfered collectionCreated = CreateBucketKeysCollection(); transferedBuckets = new ConcurrentQueue <IResourceRemovalInfo>(); _statsIdentity = new StatsIdentity(context.LocalShardName, corresponderIdentity.DBName); loggingModule = corresponderIdentity.DBName + ":" + corresponderIdentity.ColName + ":" + GetType().ToString(); _resourceID = Guid.NewGuid().ToString(); }
internal void Initialize(IDatabasesManager store) { _store = store.GetDatabase(MiscUtil.SYSTEM_DATABASE); _isInitialized = true; }
//BucketRemovalInfo info; //IDatabasesManager _databasesManager; //public BucketRemoval(BucketRemovalInfo info, NodeContext context) //{ // this.info = info; // if (context != null) // _databasesManager = context.DatabasesManager; //} public static void Execute(BucketRemovalInfo info, IDatabasesManager _databasesManager, bool forLocal) { if (info.KeysEnumrator == null) { if (LoggerManager.Instance.StateXferLogger != null && LoggerManager.Instance.StateXferLogger.IsDebugEnabled) { LoggerManager.Instance.StateXferLogger.Debug("AysncBucketRemoval.Execute", "Keys for Bucket " + info.BucketID + " is null"); } return; } var operation = new LocalDeleteOperation(); operation.OperationType = DatabaseOperationType.StateTransferDelete; operation.Collection = info.Collection; operation.Database = info.Database; operation.Documents = new List <IJSONDocument>(); operation.Context = new OperationContext(); operation.Context.Add(Common.Enum.ContextItem.AllowCappedDelete, true); if (forLocal) { operation.Context.Add(ContextItem.DoNotLog, true); } while (info.KeysEnumrator.MoveNext()) { var docKey = info.KeysEnumrator.Current; if (docKey == null) { continue; } var jdoc = new JSONDocument { Key = docKey.Value as string }; operation.Documents.Add(jdoc); } try { IDBResponse resposne = null; if (_databasesManager != null) { resposne = _databasesManager.DeleteDocuments(operation); } if (resposne != null && !resposne.IsSuccessfull) { throw new DatabaseException(ErrorMessages.GetErrorMessage(resposne.ErrorCode, resposne.ErrorParams)); } } catch (Exception ex) { //Log AsyncBucketRemovalTask.Excetue fail to delete key on state txfer completed LoggerManager.Instance.StateXferLogger.Error("AsyncBucketRemovalTask", ex); } //try //{ // OperationParam param = new OperationParam(); // param.SetParamValue(ParamName.BucketID, info.BucketID); // if (_databasesManager != null) // _databasesManager.OnOperationRecieved(new StateTransferOperation(info.TaskIdentity, StateTransferOpCode.RemoveLocalBucket, param)); //} //catch (Exception ex) //{ // if (LoggerManager.Instance.StateXferLogger != null && LoggerManager.Instance.StateXferLogger.IsErrorEnabled) // LoggerManager.Instance.StateXferLogger.Error("AysncBucketRemoval.Execute", ex.Message); //} }
public DatabasesController(IDatabasesManager databasesManager) { this.databasesManager = databasesManager; }