From a72218378f0060676a0f5854507601e857fc5e2b Mon Sep 17 00:00:00 2001 From: Steven Li Date: Tue, 19 May 2020 00:44:14 -0700 Subject: [PATCH 01/85] Dicovered unpected database operation result, with ./crash_gen.sh -p -s 100 -t 3 -d --- tests/pytest/crash_gen.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 44c978957e0..6d4f1d828e6 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -45,6 +45,14 @@ def runThread(wt: WorkerThread): wt.run() +class CrashGenError(Exception): + def __init__(self, msg=None, errno=None): + self.msg = msg + self.errno = errno + + def __str__(self): + return self.msg + class WorkerThread: def __init__(self, pool: ThreadPool, tid, tc: ThreadCoordinator, @@ -493,6 +501,9 @@ def getTasksAtState(self): def transition(self, tasks): if ( len(tasks) == 0 ): # before 1st step, or otherwise empty return # do nothing + + self.execSql("show dnodes") # this should show up in the server log, separating steps + if ( self._state == self.STATE_EMPTY ): # self.assertNoSuccess(tasks, ReadFixedDataTask) # some read may be successful, since we might be creating a table if ( self.hasSuccess(tasks, CreateDbTask) ): @@ -531,10 +542,14 @@ def transition(self, tasks): if ( self.hasSuccess(tasks, DropFixedTableTask) ): self.assertAtMostOneSuccess(tasks, DropFixedTableTask) self._state = self.STATE_DB_ONLY - elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table + elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data self.assertNoTask(tasks, DropFixedTableTask) self._state = self.STATE_HAS_DATA - else: # did not drop table, did not insert data, that is impossible + elif ( self.hasSuccess(tasks, ReadFixedDataTask) ): # no success in prev cases, but was able to read data + self.assertNoTask(tasks, DropFixedTableTask) + self.assertNoTask(tasks, AddFixedDataTask) + self._state = self.STATE_TABLE_ONLY # no change + else: # did not drop table, did not insert data, did not read successfully, that is impossible raise RuntimeError("Unexpected no-success scenarios") elif ( self._state == self.STATE_HAS_DATA ): # Same as above, TODO: adjust @@ -577,7 +592,7 @@ def assertIfExistThenSuccess(self, tasks, cls): def assertNoTask(self, tasks, cls): for task in tasks : if isinstance(task, cls): - raise RuntimeError("Unexpected task: {}".format(cls)) + raise CrashGenError("This task: {}, is not expected to be present, given the success/failure of others".format(cls.__name__)) def assertNoSuccess(self, tasks, cls): for task in tasks : @@ -593,6 +608,8 @@ def hasSuccess(self, tasks, cls): return True return False + + class TaskExecutor(): def __init__(self, curStep): self._curStep = curStep From f15668cb7df09ce39608e359abb6ed62aa12893e Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Fri, 22 May 2020 02:35:37 +0000 Subject: [PATCH 02/85] [non-jira]change tsdb tag mechanism --- src/common/inc/tdataformat.h | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 51a5dad4869..eef2e51cc2b 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -198,6 +198,44 @@ void tdPopDataColsPoints(SDataCols *pCols, int pointsToPop); //!!!! int tdMergeDataCols(SDataCols *target, SDataCols *src, int rowsToMerge); void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SDataCols *src2, int *iter2, int tRows); + +// ----------------- Tag row structure + +/* A tag row, the format is like below: ++----------+-------------------------------------------------------------+---------------------------------+ +| int16 | int16 | int64 | int16 | int64 | ...| int16 | int64 | char | ++----------+-------------------------------------------------------------+---------------------------------+ +| ncols | colId1 | offset1 | colId2 | offset2 | ...| colIdN | offsetN | values | ++----------+-------------------------------------------------------------+---------------------------------+ + */ +typedef void *STagRowRaw; + +#define TD_TAG_ROW_HEAD_SIZE sizeof(int16_t) + +#define tagRowNum(r) (*(int16_t *)(r)) +#define tagRowArray(r) POINTER_SHIFT(r, TD_TAG_ROW_HEAD_SIZE) +//#define dataRowKey(r) (*(TSKEY *)(dataRowTuple(r))) +//#define dataRowSetLen(r, l) (dataRowLen(r) = (l)) +//#define dataRowCpy(dst, r) memcpy((dst), (r), dataRowLen(r)) +//#define dataRowMaxBytesFromSchema(s) (schemaTLen(s) + TD_DATA_ROW_HEAD_SIZE) + +typedef struct { + int16_t colId; // column ID + union{ + int64_t tagOffset; + int64_t tagValue; + }; +} STagCol; + +typedef struct { + int16_t nCols; // Total columns allocated + STagCol tagCols[]; +} STagRow; + + + + + #ifdef __cplusplus } #endif From 0f43e08f591d65812d38df9eeca994a41e751794 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Sat, 23 May 2020 03:37:07 +0000 Subject: [PATCH 03/85] [TD-90]Tag Schema --- src/common/inc/tdataformat.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index eef2e51cc2b..30fb18bb950 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -208,7 +208,7 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD | ncols | colId1 | offset1 | colId2 | offset2 | ...| colIdN | offsetN | values | +----------+-------------------------------------------------------------+---------------------------------+ */ -typedef void *STagRowRaw; + #define TD_TAG_ROW_HEAD_SIZE sizeof(int16_t) @@ -221,20 +221,20 @@ typedef void *STagRowRaw; typedef struct { int16_t colId; // column ID - union{ - int64_t tagOffset; - int64_t tagValue; - }; + int16_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar + int64_t valueOrOffset; //to store value for numeric col or offset for binary/Nchar } STagCol; typedef struct { - int16_t nCols; // Total columns allocated - STagCol tagCols[]; + int32_t len; + void * pBinaryData; // Space to store the binary and Nchar value + int16_t ncols; // Total columns allocated + STagCol tagCols[]; } STagRow; - - - +int tdInsertTagCol(SDataRow *row, void *value, int32_t bytes, int16_t colId); +int tdQuerTagByID(SDataRow row, void *value, int16_t colId); +SDataRow tdNewTagRowFromSchema(STSchema *pSchema); #ifdef __cplusplus } From df01a390d4fbd2f7832bf0e57183e95fd5623efe Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Sat, 23 May 2020 09:40:46 +0000 Subject: [PATCH 04/85] [TD-90] developing --- src/common/inc/tdataformat.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 30fb18bb950..4c3e578a9a1 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -221,20 +221,28 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD typedef struct { int16_t colId; // column ID - int16_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar - int64_t valueOrOffset; //to store value for numeric col or offset for binary/Nchar + int8_t colType; + int8_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar + int16_t offset; //to store value for numeric col or offset for binary/Nchar } STagCol; typedef struct { int32_t len; - void * pBinaryData; // Space to store the binary and Nchar value + void * pData; // Space to store the tag value int16_t ncols; // Total columns allocated STagCol tagCols[]; } STagRow; -int tdInsertTagCol(SDataRow *row, void *value, int32_t bytes, int16_t colId); -int tdQuerTagByID(SDataRow row, void *value, int16_t colId); + +#define tagColSize(r) (sizeof(STagCol) + r.colLen) + +int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information +int tdDeleteTagCol(SDataRow row, int16_t colId); // delete tag value and update all the information +int tdQuerTagByID(SDataRow row, int16_t colId, void *value); //if find tag, return value length, else return -1; +int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes); + SDataRow tdNewTagRowFromSchema(STSchema *pSchema); +STSchema *tdGetSchemaFromData(SDataRow *row); #ifdef __cplusplus } From 241646551917f17eae87bd7f3588b7b0eb9a6e10 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 24 May 2020 00:47:58 -0700 Subject: [PATCH 05/85] fixed a few bugs in state transition checks --- tests/pytest/crash_gen.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 6d4f1d828e6..56f01a35947 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -480,7 +480,7 @@ def cleanUp(self): def getTasksAtState(self): tasks = [] - tasks.append(ReadFixedDataTask(self)) # always + tasks.append(ReadFixedDataTask(self)) # always for everybody if ( self._state == self.STATE_EMPTY ): tasks.append(CreateDbTask(self)) tasks.append(CreateFixedTableTask(self)) @@ -535,11 +535,15 @@ def transition(self, tasks): self._state = self.STATE_TABLE_ONLY else: self._state = self.STATE_HAS_DATA - else: # no success in dropping db tasks, no success in create fixed table, not acceptable - raise RuntimeError("Unexpected no-success scenario") + # What about AddFixedData? + elif ( self.hasSuccess(tasks, AddFixedDataTask) ): + self._state = self.STATE_HAS_DATA + else: # no success in dropping db tasks, no success in create fixed table? read data should also fail + # raise RuntimeError("Unexpected no-success scenario") # We might just landed all failure tasks, + self._state = self.STATE_DB_ONLY # no change elif ( self._state == self.STATE_TABLE_ONLY ): - if ( self.hasSuccess(tasks, DropFixedTableTask) ): + if ( self.hasSuccess(tasks, DropFixedTableTask) ): # we are able to drop the table self.assertAtMostOneSuccess(tasks, DropFixedTableTask) self._state = self.STATE_DB_ONLY elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data @@ -556,11 +560,19 @@ def transition(self, tasks): if ( self.hasSuccess(tasks, DropFixedTableTask) ): self.assertAtMostOneSuccess(tasks, DropFixedTableTask) self._state = self.STATE_DB_ONLY - elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table - self.assertNoTask(tasks, DropFixedTableTask) - self._state = self.STATE_HAS_DATA - else: # did not drop table, did not insert data, that is impossible - raise RuntimeError("Unexpected no-success scenarios") + else: # no success dropping the table, table remains intact in this step + self.assertNoTask(tasks, DropFixedTableTask) # we should not have had such a task + + if ( self.hasSuccess(tasks, AddFixedDataTask) ): # added data + self._state = self.STATE_HAS_DATA + else: + self.assertNoTask(tasks, AddFixedDataTask) + + if ( self.hasSuccess(tasks, ReadFixedDataTask) ): # simple able to read some data + # which is ok, then no state change + self._state = self.STATE_HAS_DATA # no change + else: # did not drop table, did not insert data, that is impossible? yeah, we might only had ReadData task + raise RuntimeError("Unexpected no-success scenarios") else: raise RuntimeError("Unexpected DbState state: {}".format(self._state)) @@ -741,7 +753,7 @@ def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): class AddFixedDataTask(Task): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): ds = self._dbState - sql = "insert into db.table_{} values ('{}', {});".format(ds.getFixedTableName(), ds.getNextTick(), ds.getNextInt()) + sql = "insert into db.{} values ('{}', {});".format(ds.getFixedTableName(), ds.getNextTick(), ds.getNextInt()) wt.execSql(sql) # Deterministic random number generator From eb6b6e0c746c2968a77cfe8243f315e1f2dc2315 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Sun, 24 May 2020 08:48:51 +0000 Subject: [PATCH 06/85] [TD-90] alter tag function develop --- src/common/inc/tdataformat.h | 20 ++++++++++-------- src/common/src/tdataformat.c | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 4c3e578a9a1..0aec948015b 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -202,11 +202,15 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD // ----------------- Tag row structure /* A tag row, the format is like below: -+----------+-------------------------------------------------------------+---------------------------------+ -| int16 | int16 | int64 | int16 | int64 | ...| int16 | int64 | char | -+----------+-------------------------------------------------------------+---------------------------------+ -| ncols | colId1 | offset1 | colId2 | offset2 | ...| colIdN | offsetN | values | -+----------+-------------------------------------------------------------+---------------------------------+ ++----------+----------------------------------------------------------------+ +| STagRow | STagCol | STagCol | STagCol | STagCol | ...| STagCol | STagCol | ++----------+----------------------------------------------------------------+ + +pData ++----------+----------------------------------------------------------------+ +| value 1 | value 2 | value 3 | value 4 | ....|value n | ++----------+----------------------------------------------------------------+ + */ @@ -221,8 +225,8 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD typedef struct { int16_t colId; // column ID - int8_t colType; - int8_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar + int16_t colType; + int16_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar int16_t offset; //to store value for numeric col or offset for binary/Nchar } STagCol; @@ -238,7 +242,7 @@ typedef struct { int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information int tdDeleteTagCol(SDataRow row, int16_t colId); // delete tag value and update all the information -int tdQuerTagByID(SDataRow row, int16_t colId, void *value); //if find tag, return value length, else return -1; +int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len); //if find tag, 0, else return -1; int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes); SDataRow tdNewTagRowFromSchema(STSchema *pSchema); diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 9d81cd07af4..3df94452d81 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -151,6 +151,26 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) { return row; } +int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId){ //insert tag value and update all the information + return 0; +}; + +int tdDeleteTagCol(SDataRow row, int16_t colId){ // delete tag value and update all the information + return o; +}; + +int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len){ //if find tag, 0, else return -1; + return 0; +}; + +int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes){ + return 0; +}; + +SDataRow tdNewTagRowFromSchema(STSchema *pSchema) { + //todo +} + /** * Free the SDataRow object */ @@ -183,6 +203,25 @@ int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_ return 0; } +int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_t offset) { + ASSERT(value != NULL); + int32_t toffset = offset + TD_DATA_ROW_HEAD_SIZE; + char * ptr = POINTER_SHIFT(row, dataRowLen(row)); + + switch (type) { + case TSDB_DATA_TYPE_BINARY: + case TSDB_DATA_TYPE_NCHAR: + *(VarDataOffsetT *)POINTER_SHIFT(row, toffset) = dataRowLen(row); + memcpy(ptr, value, varDataTLen(value)); + dataRowLen(row) += varDataTLen(value); + break; + default: + memcpy(POINTER_SHIFT(row, toffset), value, TYPE_BYTES[type]); + break; + } + + return 0; +} SDataRow tdDataRowDup(SDataRow row) { SDataRow trow = malloc(dataRowLen(row)); From 5b4e7a6d54881f14b5e218eb2620d013f9c78de5 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 24 May 2020 15:15:05 -0700 Subject: [PATCH 07/85] refactoring, added exec stats, re-orged task/state relationships --- tests/pytest/crash_gen.py | 325 ++++++++++++++++++++++++++++---------- 1 file changed, 244 insertions(+), 81 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 56f01a35947..c060a5dae70 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -24,11 +24,13 @@ import threading import random +import time import logging import datetime import textwrap from typing import List +from typing import Dict from util.log import * from util.dnodes import * @@ -156,18 +158,19 @@ def querySql(self, sql): # not "execute", since we are out side the DB context return self._dbConn.query(sql) else: return self._tc.getDbState().getDbConn().query(sql) - + class ThreadCoordinator: - def __init__(self, pool, wd: WorkDispatcher, dbState): + def __init__(self, pool, dbState): self._curStep = -1 # first step is 0 self._pool = pool - self._wd = wd + # self._wd = wd self._te = None # prepare for every new step self._dbState = dbState self._executedTasks: List[Task] = [] # in a given step self._lock = threading.RLock() # sync access for a few things self._stepBarrier = threading.Barrier(self._pool.numThreads + 1) # one barrier for all threads + self._execStats = ExecutionStats() def getTaskExecutor(self): return self._te @@ -184,7 +187,8 @@ def run(self): # Coordinate all threads step by step self._curStep = -1 # not started yet maxSteps = gConfig.max_steps # type: ignore - while(self._curStep < maxSteps): + startTime = time.time() + while(self._curStep < maxSteps-1): # maxStep==10, last curStep should be 9 print(".", end="", flush=True) logger.debug("Main thread going to sleep") @@ -218,6 +222,8 @@ def run(self): self._pool.joinAll() # Get all threads to finish logger.info("All threads finished") + self._execStats.logStats() + logger.info("Total Execution Time (task busy time, plus Python overhead): {:.2f} seconds".format(time.time() - startTime)) print("\r\nFinished") def tapAllThreads(self): # in a deterministic manner @@ -241,11 +247,15 @@ def fetchTask(self) -> Task : raise RuntimeError("Cannot fetch task when not running") # return self._wd.pickTask() # Alternatively, let's ask the DbState for the appropriate task - dbState = self.getDbState() - tasks = dbState.getTasksAtState() - i = Dice.throw(len(tasks)) - # return copy.copy(tasks[i]) # Needs a fresh copy, to save execution results, etc. - return tasks[i].clone() + # dbState = self.getDbState() + # tasks = dbState.getTasksAtState() # TODO: create every time? + # nTasks = len(tasks) + # i = Dice.throw(nTasks) + # logger.debug(" (dice:{}/{}) ".format(i, nTasks)) + # # return copy.copy(tasks[i]) # Needs a fresh copy, to save execution results, etc. + # return tasks[i].clone() # TODO: still necessary? + taskType = self.getDbState().pickTaskType() # pick a task type for current state + return taskType(self.getDbState(), self._execStats) # create a task from it def resetExecutedTasks(self): self._executedTasks = [] # should be under single thread @@ -261,7 +271,7 @@ def __init__(self, dbState, numThreads, maxSteps, funcSequencer): self.maxSteps = maxSteps self.funcSequencer = funcSequencer # Internal class variables - self.dispatcher = WorkDispatcher(dbState) + # self.dispatcher = WorkDispatcher(dbState) # Obsolete? self.curStep = 0 self.threadList = [] # self.stepGate = threading.Condition() # Gate to hold/sync all threads @@ -409,17 +419,19 @@ def query(self, sql) -> int : # return number of rows retrieved # State of the database as we believe it to be class DbState(): STATE_INVALID = -1 - STATE_EMPTY = 1 # nothing there, no even a DB - STATE_DB_ONLY = 2 # we have a DB, but nothing else - STATE_TABLE_ONLY = 3 # we have a table, but totally empty - STATE_HAS_DATA = 4 # we have some data in the table + STATE_EMPTY = 0 # nothing there, no even a DB + STATE_DB_ONLY = 1 # we have a DB, but nothing else + STATE_TABLE_ONLY = 2 # we have a table, but totally empty + STATE_HAS_DATA = 3 # we have some data in the table def __init__(self): self.tableNumQueue = LinearQueue() self._lastTick = datetime.datetime(2019, 1, 1) # initial date time tick self._lastInt = 0 # next one is initial integer self._lock = threading.RLock() + self._state = self.STATE_INVALID + self._stateWeights = [1,3,5,10] # self.openDbServerConnection() self._dbConn = DbConn() @@ -478,25 +490,56 @@ def execSql(self, sql): # using the main DB connection def cleanUp(self): self._dbConn.close() - def getTasksAtState(self): - tasks = [] - tasks.append(ReadFixedDataTask(self)) # always for everybody - if ( self._state == self.STATE_EMPTY ): - tasks.append(CreateDbTask(self)) - tasks.append(CreateFixedTableTask(self)) - elif ( self._state == self.STATE_DB_ONLY ): - tasks.append(DropDbTask(self)) - tasks.append(CreateFixedTableTask(self)) - tasks.append(AddFixedDataTask(self)) - elif ( self._state == self.STATE_TABLE_ONLY ): - tasks.append(DropFixedTableTask(self)) - tasks.append(AddFixedDataTask(self)) - elif ( self._state == self.STATE_HAS_DATA ) : # same as above. TODO: adjust - tasks.append(DropFixedTableTask(self)) - tasks.append(AddFixedDataTask(self)) - else: - raise RuntimeError("Unexpected DbState state: {}".format(self._state)) - return tasks + def getTaskTypesAtState(self): + allTaskClasses = StateTransitionTask.__subclasses__() # all state transition tasks + taskTypes = [] + for tc in allTaskClasses: + # t = tc(self) # create task object + if tc.canBeginFrom(self._state): + taskTypes.append(tc) + if len(taskTypes) <= 0: + raise RuntimeError("No suitable task types found for state: {}".format(self._state)) + return taskTypes + + # tasks.append(ReadFixedDataTask(self)) # always for everybody + # if ( self._state == self.STATE_EMPTY ): + # tasks.append(CreateDbTask(self)) + # tasks.append(CreateFixedTableTask(self)) + # elif ( self._state == self.STATE_DB_ONLY ): + # tasks.append(DropDbTask(self)) + # tasks.append(CreateFixedTableTask(self)) + # tasks.append(AddFixedDataTask(self)) + # elif ( self._state == self.STATE_TABLE_ONLY ): + # tasks.append(DropFixedTableTask(self)) + # tasks.append(AddFixedDataTask(self)) + # elif ( self._state == self.STATE_HAS_DATA ) : # same as above. TODO: adjust + # tasks.append(DropFixedTableTask(self)) + # tasks.append(AddFixedDataTask(self)) + # else: + # raise RuntimeError("Unexpected DbState state: {}".format(self._state)) + # return tasks + + def pickTaskType(self): + taskTypes = self.getTaskTypesAtState() # all the task types we can choose from at curent state + weights = [] + for tt in taskTypes: + endState = tt.getEndState() + if endState != None : + weights.append(self._stateWeights[endState]) # TODO: change to a method + else: + weights.append(10) # read data task, default to 10: TODO: change to a constant + i = self._weighted_choice_sub(weights) + logger.debug(" (weighted random:{}/{}) ".format(i, len(taskTypes))) + return taskTypes[i] + + def _weighted_choice_sub(self, weights): # ref: https://eli.thegreenplace.net/2010/01/22/weighted-random-generation-in-python/ + rnd = random.random() * sum(weights) # TODO: use our dice to ensure it being determinstic? + for i, w in enumerate(weights): + rnd -= w + if rnd < 0: + return i + + def transition(self, tasks): if ( len(tasks) == 0 ): # before 1st step, or otherwise empty @@ -646,7 +689,7 @@ def allocTaskNum(cls): cls.taskSn += 1 return cls.taskSn - def __init__(self, dbState: DbState): + def __init__(self, dbState: DbState, execStats: ExecutionStats): self._dbState = dbState self._workerThread = None self._err = None @@ -656,11 +699,13 @@ def __init__(self, dbState: DbState): # Assign an incremental task serial number self._taskNum = self.allocTaskNum() + self._execStats = execStats + def isSuccess(self): return self._err == None - def clone(self): - newTask = self.__class__(self._dbState) + def clone(self): # TODO: why do we need this again? + newTask = self.__class__(self._dbState, self._execStats) return newTask def logDebug(self, msg): @@ -681,6 +726,7 @@ def execute(self, wt: WorkerThread): self.logDebug("[-] executing task {}...".format(self.__class__.__name__)) self._err = None + self._execStats.beginTaskType(self.__class__.__name__) # mark beginning try: self._executeInternal(te, wt) # TODO: no return value? except taos.error.ProgrammingError as err: @@ -689,39 +735,164 @@ def execute(self, wt: WorkerThread): except: self.logDebug("[=]Unexpected exception") raise + self._execStats.endTaskType(self.__class__.__name__, self.isSuccess()) - self.logDebug("[X] task execution completed, {}, status: {}".format(self.__class__.__name__, "Success" if self.isSuccess() else "Failure")) + self.logDebug("[X] task execution completed, {}, status: {}".format(self.__class__.__name__, "Success" if self.isSuccess() else "Failure")) + self._execStats.incExecCount(self.__class__.__name__, self.isSuccess()) # TODO: merge with above. def execSql(self, sql): return self._dbState.execute(sql) -class CreateDbTask(Task): + +class ExecutionStats: + def __init__(self): + self._execTimes: Dict[str, [int, int]] = {} # total/success times for a task + self._tasksInProgress = 0 + self._lock = threading.Lock() + self._firstTaskStartTime = None + self._accRunTime = 0.0 # accumulated run time + + def incExecCount(self, klassName, isSuccess): # TODO: add a lock here + if klassName not in self._execTimes: + self._execTimes[klassName] = [0, 0] + t = self._execTimes[klassName] # tuple for the data + t[0] += 1 # index 0 has the "total" execution times + if isSuccess: + t[1] += 1 # index 1 has the "success" execution times + + def beginTaskType(self, klassName): + with self._lock: + if self._tasksInProgress == 0 : # starting a new round + self._firstTaskStartTime = time.time() # I am now the first task + self._tasksInProgress += 1 + + def endTaskType(self, klassName, isSuccess): + with self._lock: + self._tasksInProgress -= 1 + if self._tasksInProgress == 0 : # all tasks have stopped + self._accRunTime += (time.time() - self._firstTaskStartTime) + self._firstTaskStartTime = None + + def logStats(self): + logger.info("Logging task execution stats (success/total times)...") + execTimesAny = 0 + for k, n in self._execTimes.items(): + execTimesAny += n[1] + logger.info(" {0:<24}: {1}/{2}".format(k,n[1],n[0])) + + logger.info("Total Tasks Executed (success or not): {} ".format(execTimesAny)) + logger.info("Total Tasks In Progress at End: {}".format(self._tasksInProgress)) + logger.info("Total Task Busy Time (elapsed time when any task is in progress): {:.2f} seconds".format(self._accRunTime)) + + +class StateTransitionTask(Task): + # @classmethod + # def getAllTaskClasses(cls): # static + # return cls.__subclasses__() + @classmethod + def getInfo(cls): # each sub class should supply their own information + raise RuntimeError("Overriding method expected") + + @classmethod + def getBeginStates(cls): + return cls.getInfo()[0] + + @classmethod + def getEndState(cls): + return cls.getInfo()[1] + + @classmethod + def canBeginFrom(cls, state): + return state in cls.getBeginStates() + + def execute(self, wt: WorkerThread): + super().execute(wt) + + + +class CreateDbTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_EMPTY], # can begin from + DbState.STATE_DB_ONLY # end state + ] + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("create database db") -class DropDbTask(Task): +class DropDbTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_DB_ONLY, DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], + DbState.STATE_EMPTY + ] + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("drop database db") -class CreateTableTask(Task): - def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - tIndex = self._dbState.addTable() - self.logDebug("Creating a table {} ...".format(tIndex)) - wt.execSql("create table db.table_{} (ts timestamp, speed int)".format(tIndex)) - self.logDebug("Table {} created.".format(tIndex)) - self._dbState.releaseTable(tIndex) +class CreateFixedTableTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_DB_ONLY], + DbState.STATE_TABLE_ONLY + ] -class CreateFixedTableTask(Task): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tblName = self._dbState.getFixedTableName() wt.execSql("create table db.{} (ts timestamp, speed int)".format(tblName)) -class ReadFixedDataTask(Task): +class ReadFixedDataTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], + None # meaning doesn't affect state + ] + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tblName = self._dbState.getFixedTableName() self._numRows = wt.querySql("select * from db.{}".format(tblName)) # save the result for later # tdSql.query(" cars where tbname in ('carzero', 'carone')") +class DropFixedTableTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], + DbState.STATE_DB_ONLY # meaning doesn't affect state + ] + + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): + tblName = self._dbState.getFixedTableName() + wt.execSql("drop table db.{}".format(tblName)) + +class AddFixedDataTask(StateTransitionTask): + @classmethod + def getInfo(cls): + return [ + [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], + DbState.STATE_HAS_DATA + ] + + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): + ds = self._dbState + sql = "insert into db.{} values ('{}', {});".format(ds.getFixedTableName(), ds.getNextTick(), ds.getNextInt()) + wt.execSql(sql) + + +#---------- Non State-Transition Related Tasks ----------# + +class CreateTableTask(Task): + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): + tIndex = self._dbState.addTable() + self.logDebug("Creating a table {} ...".format(tIndex)) + wt.execSql("create table db.table_{} (ts timestamp, speed int)".format(tIndex)) + self.logDebug("Table {} created.".format(tIndex)) + self._dbState.releaseTable(tIndex) + class DropTableTask(Task): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tableName = self._dbState.getTableNameToDelete() @@ -731,10 +902,7 @@ def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): self.logInfo("Dropping a table db.{} ...".format(tableName)) wt.execSql("drop table db.{}".format(tableName)) -class DropFixedTableTask(Task): - def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - tblName = self._dbState.getFixedTableName() - wt.execSql("drop table db.{}".format(tblName)) + class AddDataTask(Task): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): @@ -750,11 +918,6 @@ def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): ds.releaseTable(tIndex) self.logDebug("Finished adding data") -class AddFixedDataTask(Task): - def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - ds = self._dbState - sql = "insert into db.{} values ('{}', {});".format(ds.getFixedTableName(), ds.getNextTick(), ds.getNextInt()) - wt.execSql(sql) # Deterministic random number generator class Dice(): @@ -789,28 +952,28 @@ def throwRange(cls, start, stop): # up to stop-1 # Anyone needing to carry out work should simply come here -class WorkDispatcher(): - def __init__(self, dbState): - # self.totalNumMethods = 2 - self.tasks = [ - CreateTableTask(dbState), - DropTableTask(dbState), - AddDataTask(dbState), - ] - - def throwDice(self): - max = len(self.tasks) - 1 - dRes = random.randint(0, max) - # logger.debug("Threw the dice in range [{},{}], and got: {}".format(0,max,dRes)) - return dRes - - def pickTask(self): - dice = self.throwDice() - return self.tasks[dice] - - def doWork(self, workerThread): - task = self.pickTask() - task.execute(workerThread) +# class WorkDispatcher(): +# def __init__(self, dbState): +# # self.totalNumMethods = 2 +# self.tasks = [ +# # CreateTableTask(dbState), # Obsolete +# # DropTableTask(dbState), +# # AddDataTask(dbState), +# ] + +# def throwDice(self): +# max = len(self.tasks) - 1 +# dRes = random.randint(0, max) +# # logger.debug("Threw the dice in range [{},{}], and got: {}".format(0,max,dRes)) +# return dRes + +# def pickTask(self): +# dice = self.throwDice() +# return self.tasks[dice] + +# def doWork(self, workerThread): +# task = self.pickTask() +# task.execute(workerThread) def main(): # Super cool Python argument library: https://docs.python.org/3/library/argparse.html @@ -839,7 +1002,7 @@ def main(): sys.exit() global logger - logger = logging.getLogger('myApp') + logger = logging.getLogger('CrashGen') if ( gConfig.debug ): logger.setLevel(logging.DEBUG) # default seems to be INFO ch = logging.StreamHandler() @@ -849,7 +1012,7 @@ def main(): Dice.seed(0) # initial seeding of dice tc = ThreadCoordinator( ThreadPool(dbState, gConfig.num_threads, gConfig.max_steps, 0), - WorkDispatcher(dbState), + # WorkDispatcher(dbState), # Obsolete? dbState ) tc.run() From 406e170f59fb336406b173c7a7b9a3cb30d85577 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Mon, 25 May 2020 19:05:52 +0800 Subject: [PATCH 08/85] [TD-335] rename some function names --- src/dnode/inc/dnodeVRead.h | 8 ++++---- src/dnode/inc/dnodeVWrite.h | 9 ++++----- src/dnode/src/dnodeVRead.c | 4 ++-- src/dnode/src/dnodeVWrite.c | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/dnode/inc/dnodeVRead.h b/src/dnode/inc/dnodeVRead.h index 9e0c7b31200..a1035200475 100644 --- a/src/dnode/inc/dnodeVRead.h +++ b/src/dnode/inc/dnodeVRead.h @@ -13,15 +13,15 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_DNODE_READ_H -#define TDENGINE_DNODE_READ_H +#ifndef TDENGINE_DNODE_VREAD_H +#define TDENGINE_DNODE_VREAD_H #ifdef __cplusplus extern "C" { #endif -int32_t dnodeInitRead(); -void dnodeCleanupRead(); +int32_t dnodeInitVnodeRead(); +void dnodeCleanupVnodeRead(); void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg); #ifdef __cplusplus diff --git a/src/dnode/inc/dnodeVWrite.h b/src/dnode/inc/dnodeVWrite.h index 461e51983fb..7da701a8e27 100644 --- a/src/dnode/inc/dnodeVWrite.h +++ b/src/dnode/inc/dnodeVWrite.h @@ -13,17 +13,16 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_DNODE_WRITE_H -#define TDENGINE_DNODE_WRITE_H +#ifndef TDENGINE_DNODE_VWRITE_H +#define TDENGINE_DNODE_VWRITE_H #ifdef __cplusplus extern "C" { #endif -int32_t dnodeInitWrite(); -void dnodeCleanupWrite(); +int32_t dnodeInitVnodeWrite(); +void dnodeCleanupVnodeWrite(); void dnodeDispatchToVnodeWriteQueue(SRpcMsg *pMsg); -void dnodeSendWriteResponse(void *pVnode, void *param, int32_t code); #ifdef __cplusplus } diff --git a/src/dnode/src/dnodeVRead.c b/src/dnode/src/dnodeVRead.c index 22505f2780b..81d14702b19 100644 --- a/src/dnode/src/dnodeVRead.c +++ b/src/dnode/src/dnodeVRead.c @@ -53,7 +53,7 @@ static void dnodeHandleIdleReadWorker(SReadWorker *); static SReadWorkerPool readPool; static taos_qset readQset; -int32_t dnodeInitRead() { +int32_t dnodeInitVnodeRead() { readQset = taosOpenQset(); readPool.min = 2; @@ -71,7 +71,7 @@ int32_t dnodeInitRead() { return 0; } -void dnodeCleanupRead() { +void dnodeCleanupVnodeRead() { for (int i=0; i < readPool.max; ++i) { SReadWorker *pWorker = readPool.readWorker + i; if (pWorker->thread) { diff --git a/src/dnode/src/dnodeVWrite.c b/src/dnode/src/dnodeVWrite.c index a1531433ef4..bf4e49e84d9 100644 --- a/src/dnode/src/dnodeVWrite.c +++ b/src/dnode/src/dnodeVWrite.c @@ -54,7 +54,7 @@ static void dnodeHandleIdleWorker(SWriteWorker *pWorker); SWriteWorkerPool wWorkerPool; -int32_t dnodeInitWrite() { +int32_t dnodeInitVnodeWrite() { wWorkerPool.max = tsNumOfCores; wWorkerPool.writeWorker = (SWriteWorker *)calloc(sizeof(SWriteWorker), wWorkerPool.max); if (wWorkerPool.writeWorker == NULL) return -1; @@ -67,7 +67,7 @@ int32_t dnodeInitWrite() { return 0; } -void dnodeCleanupWrite() { +void dnodeCleanupVnodeWrite() { for (int32_t i = 0; i < wWorkerPool.max; ++i) { SWriteWorker *pWorker = wWorkerPool.writeWorker + i; if (pWorker->thread) { From 87cdb1c58c33371b4d91fff96bdcbdefd688e770 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 26 May 2020 15:40:36 +0800 Subject: [PATCH 09/85] fix: taosdemo params error --- importSampleData/app/main.go | 4 ++- importSampleData/bin/taosimport | Bin 3987776 -> 3988400 bytes src/kit/taosdemo/taosdemo.c | 50 ++++++++++++++++---------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/importSampleData/app/main.go b/importSampleData/app/main.go index aef41332071..d714fc339c1 100644 --- a/importSampleData/app/main.go +++ b/importSampleData/app/main.go @@ -18,7 +18,7 @@ import ( "sync" "time" - _ "github.com/taosdata/TDengine/src/connector/go/src/taosSql" + _ "github.com/taosdata/TDengine/src/connector/go/taosSql" ) const ( @@ -634,6 +634,7 @@ func insertData(threadIndex, start, end int, wg *sync.WaitGroup, successRows [] if appendRows == batch { // executebatch insertSql := buffers.String() + connection.Exec("use " + db) affectedRows := executeBatchInsert(insertSql, connection) successRows[threadIndex] += affectedRows @@ -658,6 +659,7 @@ func insertData(threadIndex, start, end int, wg *sync.WaitGroup, successRows [] if appendRows > 0 { // executebatch insertSql := buffers.String() + connection.Exec("use " + db) affectedRows := executeBatchInsert(insertSql, connection) successRows[threadIndex] += affectedRows diff --git a/importSampleData/bin/taosimport b/importSampleData/bin/taosimport index b042549341bced364e0fd77909b115d1b5b6dc04..235fde9f06ce00cde32057c0a4a91060dd771b41 100755 GIT binary patch delta 1965568 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

Yf10G>DNX4@*wO+j-B2(noJ_L* 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�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 jUT`Ma6zYKyf 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�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

99V~}P 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

djT<8RM}|qEIg5OaD3jQVVm! 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�%`t<0d*Al9?+84UxBa%!zC$thtvk5&K0n9M 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 z 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

fnfQQG9gHoUWgJ< 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

q*<lwYUSo1RJ9GDf*y}BnqxwQ1fqGxi(#oX(R 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
?< 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

m%IPU%SLGMybI=FZotx_OLQ2%*7^RFlneH> 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 delta 1964563 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

l(v0{w$@`5UzM^oX$WogS{*)6!(r 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

dApGE*}vNAeHGV~12upc|gR?JOIN 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 |v~+YJ{K4Vx(Tkjmyc-Mp2zhh>*i$>DpU7(i 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ŖMdWj4@}P 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Öv*Ia_Y+$=H_so9}!D_7KOQ=E|f*h+c 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 z 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 z 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�$GcLI>MP%n-Z0>6VTRUsdNB7gWD zFl}4=%fGM$l?1o!2g#%`yeL9i)+-jht9zP*t#*Nz=^`=EbIsV7`dEya089|I7x0|U zlHjJ#X_6~>(ou(eAe!Ij-M>YJNeNwK zdGts_fRHN)G1f*c)~^Q#4izB08xj^!nsrc9q-is7> zOwjvs#@XvZ=&F^3o~==f3s7gOR65$? z2&$;ReYhf9{`i2if;=(ws-XZ56t@phfofMA`f7nty-QLxZ6jxc9O#y+M|CtxcF!w8 zw&LfZ**Nwv_e#dVW{=Z27n&YLT%yWuO^kbr01PB9550nk3-cn zdMCunir1Om4GpG5RqV>s9^Codj5$Qc=mfQZOq()xt{um{=Xdx`9ee<))mG3eyBFG= zS^ba5AX&Z?9y_9s9GA_b5`aesPflZ(Y)$a0(+E}K26$rcsg{Aj{P9hE5o1iIfMXeW zE9N0`2<)J&qzZbuM_}$L)3F|-H}DAkrllqI4^3;k#-#Bq8*rqcKCLE!^?UiV_3432 z54q%}ZeKUqJUPrDBwGOFs~Ezjd9{ulpnAHD+2er&P1_#!%@oN(W1%d(WEgquBM`%3fhK?I^2cgJuHAqd3*i;3`O%DFIzo z;h<>Qj?vn1yPmT#-IzI|O%a8U!=f9$7*4+SyMko-b&hC%I@%Vcj(hp;Hbh*tuB5=g zn80az8EqU8Am>WMOx4K?npk2FdkVoRm80%6(Gi{s65-PE5aDq<+0ySt#OgD0Z$1=x z6ly4j4qMzSTA2(m+WMribPB64mQ$8amj~gcSMbaVt49c%FDaI}GmgX9E~XA02hmNW zQIq)XyEK9@YZ_X}xqF|CQ;5KR0l}XFX6RJNmfQvPB%MShPzhhfHt$2+CW8Y*D@f>> zn|ol?X_0epj*ZKyvD7NPUKHm%SH=p!;ae28;p4;>WMat`YxstI%!HGR* z0dLjd%R2xXrc<2j0G49L9)1F|U=L+GEjo0ad) zQY{}=Ga9aeY*CxG!G7Iw+!B|_0`jVoC||r!6S4*%VnLkQ2Bx~FUftm^R7JCu7*8@2 zHJ|^@QUNrj>1W#tFRF7`Ga(ZyXOFSrwLE}kaNXc)c+sw!nWFS9(9)*N{|rBOyya>x z$N}EiL~f}rc|}Kz>=$?rs@ev9Onh5Pjy)z9lvV@Uz}o;9jrKN^;I1jt8|OS^t~O{# zfEWrOcc-MzQBDlgCex^~We6~IbVtccpxIW+G}O{Bw1GX>!f2C?Ga#>A?n-U8GN@+_ zsDx(Fjf0}3aJ3vhUH8+S(-7$1mgcON5t>y#TYn;oV-iL-$(t258nowap1VHmNX#(C zulhFPs*R}xuJ2dO2+59%`PyH|IJ=t8m{|vSw3ad>*r$*(C7B2mJLd4^%j_`fOgurs zanNc2$)^-5W~iLyGd~}~-}5b!ntg*xSs#z2QwI2g*!L&CT*COUVjZ~Z;a9(o3XkvO zYJt^7q0Y}thjF)qD-590>eUXvtHt@P+dYK@w^UG9Uo>}*49MdDk1-e_- zA&8T)zjA9qqh2a|B^rhJZ**&Ss6U)hSIVJYk1+L^cEz-2zyO&~vFjYIO;F4XWkbXC zRze4Vr5!X0mT||F}+xp+|+@-Lf1RzsnF*aN<8wRo>4Ts zlOX_~tt{~GwWQGdH;emXuWsj)HvZUaFDK}3at56k22{Dh?BlZKEC z?pmDVdaaD^^+W(soa-(oTgjNWc$)D8!soDd3iDGz#0{Elj(@x{)=IEo0kh2&;?aO> zGP~EKeq~5nz_8AOWy$8a9y7Kw2Y^Yfb+BYP&kkweDL3Uc(}~*4eLn0^N4$^LL1yW_X9SQ4oD z?Vk`(TIfIZtqSFDB-+iw=bm^bjk|#3yn~8u-A_j57*~4tF()q?`YyrMSBxvGdH1Ld zDIj(}P@renhjnDRk*KVdMG#6ofw5-mWjM*Fw;SOvG|I`lNk=4WhjC%eff8Q)1@#yY z`zy-j-%@&&$ih86esq3Izw9XeCGoxo*-P2d-cK1>bRu6*N2V43v3bIGy7>VhdhDDh zc&uApDT>m?>Rb_Unb)~cd=qB&>D3K8KQU9hTfMY2*2J#fY!aRkc)sM6Hd@u67ZmD! zDn@~_8IyNyVVoL-E!^|s88ZwWA;lGJSSt{=2|cZ1%QJMoR;TQN{31R4>EXQzL3Y)M zKOWXQ_5m&)YpBiHGY^-s&FnBdeCS5RYDP3P5 zRPt=19LLwRA`F4dM&1v^#6(kE9PtGb*x7*Gy%oz#oXp^nLjzYW^IS1#t)nc9wv13A zXF&P=Y^SRks&DU=NcsRQt^;T9_cfjZ=jUcN)ON+&WHoO@As3u~NL9d2p%(90*#!|` zUmB+7BMF>JCWC^N@7A@c$-z9re=1fm>P=>h5aK}Y1 z1+h?wh__of#p{Spw&I))9`hbQ7;m)SP+^BSTQmlB`(+-K2+{#K{F9~4L>S+h?y0#} zz@-KR?N0k8y2BQ`Moy-so?_=~5P&eTpG#g{^LfhqM zt2j?0;Vidt)c63T=TW!ASXwgo&nrB^vpC|hp{;*1Q5qaAu!x-c3{31*bn|nL3PY?; zMkYcK=M>Ax(dQ53FQ!TQb%GJpl7wt?6 z%F*TCAWwBET#4RDPYHN!JS5q{Rc%Xk{;1nl>1{%=A|?PnXjqL7P9cL%6dT!IPSU%1 zHhcz;HKRk~GTA*C>I}7gVOHlG8gWMj7i}9Q0+M?0bZ0uYrvpOqR5ZeAR%^4f&hq1d zRd>SGoKxAn78++VCE>B=nsWlY*^GE_?wttL8>tfRwv}jFg~1+y`-{RG2@ic`uZ2iy zf+)Lk5_|xQRD#_djS@8KCM2t@w~JML`|)M(rkduU*NA;LzB;4mHG?l}iD47ee9D_! z+0LPM?`0knTARdbt5=PgiE5(I+ZajBY1+JEcZH*IAGQ3em$TZi0c6#$Y~~CC3t_2H zvP1lyCiDY(rJ9e+TC3Xz|JWA@C$wt2cRRr$`5FK;E0En>11phVNU|vjxkch$pglll z8ccepPLJnu1W)QSe%C0uaBJ5L#!Tf18VqU z-vitX>nwm0JQzfN3uTX>5zdAo260f+gb~bE((hc#6F5-Gh;e*XyHbt9UhE{tPp2l z&24ri_T$9#99e1W?SKwcrF1m~Z0KisE$I4}1wxo26Yz=m8u&Z)U}f~k>br$yUUX`_ z9dssFZY@^Vw1lv~lY!For#=_@H9$c4`A4ue%qNoz@tEt@&N7H=cqHp1#fV7T!(@Q| zUvC6T`S|LZJa?owL5JqbaAawECcNU0!&QiXa4!wC90w&ZY4qSkA(0wG&ka`nw1Ta^X9J=7j;4=~tzI=2~UH&XCCZA8yC&hRM)Lm^v02mCel5 zUs$qr+HKMKFm@IhdNgk!TXZveGGPP#zJ5En4ytjz{yvC!HMm-6}>S6TsD=_CwF(BH<4)s3oOuQW$m%8Gynx_lw` zBFzz8M!ulFI)lcaM!O3y#MQd!Cyo0U~o`jbI z*trr9N0!peD#OZ>bjA|cc$@(EUqdb#lB2amn49_kO3i|HrCEFS+FqcKnCN*@>IY5~ z@j_hcR^&-PY#*63?4vObFO{V!rCx+2e7zrmy~gbqVZJg(h=UfowRxVswV+r=oDWg@ zRxXk5vS8bV>RM&4@4x&$@etUv2J7I|*NwfqMyGXl3r|&sKlmm})_#_|p1AC#;*5F? znTqd`z=HxiO;c^>!Bp^B-7iX|Mz&2FUa`DrNT%uDh{p%jmv)nAPFf8iW@nx@B zMH3Z$Fe$U9Fy{7B@!JF7WZFOw6thE1iA7r1YV`V!y$R~*{)qQWc9wqvc&MJU1lt5; z-X{W6@Njn_dozM+j#F9OQ&Qn%>aYk)lHVws8eKR07^xt&O7CDUFId3SN~NXH;I0k^ zRXcUW@GsTrth?6l=J<@GFf?#}^}D7bWXnCP&j@R{hQzZ{)Kw)wB(1h!%=E5rJIJUT zPrnC79E9ZsT-rRJ(SEj4K*@Y6L+8(=$wYvWGl`I4ggGQ{5NN&H2fakGlbPoroB zc?a1vc`vpdeba>097XL9RJ=J>66i9I^8HYW5%|;=7BXA_1wnA|it_l8xFhWS&72@nc%NB(^QD$k>s* zR&M+y1pKLJ@=&U4nvAp&I!loj`FT{h>BeE{2jw3=wP}|<6znMZMI^iXL{<<+bbk3! z#?+lv8(Xpf6Jx%RTA-#yJ7qH2`$Y_XUZkZ?67^JD29eYffvb!aA}W!(3|=oS2xn{k zFq451*a_BVu1kN;Q3SN3^NG@Aj>*w*=|QlW0s-#>oEd?4m5QV>U$|c*YM8Vd7i~Gz z186`)!2B@K>3MODcz^OFjdi@BRj{rtPecEpD0H>J6EJ<6;%vpA}2#N3Y(*=2hDR~<_n?$Y6 zU{JQ9bA2|pu2~2I;j}O*3{pSD$$~QsO}Tjh+WLv?==%HaDbl~OGMa(ZO`Z!oGa#5+ zKp3=(Ii2#C5KfXHdC0j9{Z5QzWXOb3TCYXmuOfakEW59?j98vTyl7AZp!WL75L8bc z9o~p&5({gOE;ui(S4OP7qiHIatz5fg#fA>}r{4b7GMDipU!CQ$z^^$$IdoPIhJX-& zZ?X#(wD=cx|0#DW+P*=H{6GTtxV#)cn6aLJLv$YBk0gr_JqwUK&pJ4jJ$GZNtnbI2 z&=Pd^019}{Fu>KW3FmjF8wC}MlQCsIS2T+{V=3c9F}^Hn_FAmii}vcjd+(GRNe*HA zF&rsl(!TblxG{^ls~9G!^IAT;uNfo-`t1D=F`3W-^Gkhn1Imh{=0z9Ue8|hJi2Hikq z9W_kp$L=W9`NeFH5C<=Tx=*2N4ql8i$J^;BO2n59ejL`dS^@M8uwX}&66^2w)(WH$ zpMs5Vt&2H&+g!`+C#$03Ivc0hFKNOAC4b#pgh7syPT_Qb!SuOVg*d}V0CU(NkU)c!0T4HVF(XSHucc zP%xKr6X}f(W#0HE(j=}udTIGYX4+mjl+?8Z#Q16e(+kEATPyyh6sFch?oO6xKvgWz zCSxJH$d>N8qk3(i&~loG#S%!QN#8WmfPPYA;km`7xzDsL^1Njto(d~85T9jT(ohf{Sdp?Lp4W@wl8n(6w>fv{hA-p{ zg|_j7YsB6kcwb>_CwRHfAsb_$4Loys?Y}dUXUSh=Qcb63j8=1A!1=4D0%uVkcG#`# zRaxS{xak-1J8ncEkX#m$g#&A)lF6c;lT5^8(?sEbducOB>7WsiE*KKkrFbBzjEd72yFyR6Byk_q6+GcHmK%G)HFS0%?@e}6-?y61F!$$rl zm@Em#BCzv=ym=GgKXnlbILTfir%aU>B<#m7OS_s||d} z5HKqD7vui`WI&t0E)8V(L1>-CY)?i%e!ytKfen^z1F?a_JAwwg7=P7OaTr8-MS-3~ zkw_h;Hct1a!Cb;bW(GPelg@L{3I5@-%vHfNB2ERA`GN@*c`)X^RU8X4!LY~{cPu#Q z>n87W0WqL>OlrTv!-iiWV)zv|RO0UAIJj4R;~c26G&FeXljbUn9cGA6h*62~6}6 z9_TOf`(yq+jJCz=^RT!uUQQ|!^kv1a$4>lpC5|mXq;D;Pzc5!Ld0cPN7>p&JZ#;90 zbZ9)smo-+mYQU8Zz-3G-;4&M%*G@$2Qm)fKTcsCQlLrG7g@5j8U4W2V7}_(EV+_EU z?-VY9I;HE0ap$A!Ac+et@9{O$$&m7DZ!YGNY500)czc9`J#4yw}_bAg+pN;q$FU%+FuJ z53jZA*mqMm{C_affDcO|l_0`rx)YZO(LcAKwTmMx8tDt!vLyWTN;HliID988gr+!x zux8P1k?^mmqO7L+PTdgXp5HL+PT> z|DP_(I+!lX`ej{|^_z83R)Q|d`XybIm8grd3|*9mlSUGBQPwZ%qO4!gMOg>aMOnW^ z7iA^rqO9Mhi?R->i?V);E_%(h^Z%nqm!r<`f_3ZDe=1b#;jq!C8`VMkbVvA?`g9bB zV+7ftXn(#`=+A4zaH-=!na=*4oEq=XQ(V%Yi*Or7%$X%yZ*T-M`t%{M%cswjHI zVt>pxxD30|i4CTS^A70E8-$g=fb}ffnq+}}6zj06L?A@G(f~jADqJl=?>H_2p@tsM zqE}HH@$$w}6NLATTzs~lraI6wdNKm16z!7?mtY3A3G-^9Zu1T2E{aRs7ct*(AXv;g z7+B0Y04!!55-eu@F0hz&2(Xyd4J>9QfPclTZeTI%0I-;KAXv=m2^O<@fW_klEZ!K; z@gQK4u_C8k9u>9wfh;b;a=L}GhM3!B???oYZ?wwryrT<1?qUGRA$Kx>oEis^e*%E~ z(JEct2_RYJ2!Py%EI2;mT!PU~pPF4XJq)LEg+tHYDXLx216yV#V9P9xEvu!xet&+N z8R$_Y3k?HL)*lpl_H)4(@9Q zS>3Q_7GqD3fjxPgSv&{9o>@Jy=WxcJA0Hfe`82CO#2pb>6o2`INwDDO zf(7|`NyuTWQF=I*00#NZwXp?SyMJUV(&}}%Y>9M>{NETuOLqv=oh+w`=yOnTOjo+d z`nz?3ubM!}XwWwiWE{&c?u!K_sh90Gr5Dor5s4nW`}Y|#pD zRSuEZpL1$1XOSE)g9Y>;Wq+ykVMZIKzNTS4+p}>&`W9yMe}R+UG$nG!rE- zOb0L%j>r^H3of;Ldh*g$F{#KmLWGvB3Eb2k13P_Y>g1=FO^N)p-=rDp5-E7U=@2Ys zqfly`r#_7e!Izr5bJZtNVXI|k;VWVN%Bh^^Ku;oH{SXz#y2|{^oPV|56z8nQIAgt| zi(O?F#=0iXSYLHA)?3l;j1@HaD!G%bn&VvcY80)#+k9xQ+M!F^Xcn&8+Qn6Wj|L@a zCs*}3kg4VwJatSWOWkcYSjvWtbeg9Q6PB8j$Wi;F(vz2%HBW8Dn)adHn5qjt&pjx7 zwi(NuP=iZj%ZzT#Q-5dZN^MhID7_ko%QxaYUk>;xEMoh%Sl6N_)Z^m=VDp(8HrGgd z>l^}{htu&;x^FX>8%}F9nB%uI;;WwuIrup7I+KTn0NvuOMmZ@S2R)#mc1xQqZ0N+$ zpCgo;NZAEM}lc5?zYr$)@`VSnv*M2PUH1!tZe;isTO&c*bK ze83&tv%G-c0fs>W*q?LlScaK497UE!WZGp zGTc~RBvV%+*S|Lb4gOsUxf|e~>-kI%a9_Nr)2;LhHu3@8Kiv)8bA$e-(fy-c=$<>b z6Wu=|*ngL!ZR?5dpA>Y@ZyxM{?l1jybkC_?>WS|E+bZL+jXe4Z4O<|X^=J8g34sIF z#q0CBp!q7UR;n-rq9u!CSFAJeIbVK(8rEC6YHFEs-Azi_8tWr=}5szvB_L~j>?8E7W zF2MeIt7gn4RHLx`@s|PnV@B+!y94&q4ZQwstDt}@buWJ_jk`)3`b}#9V-FiEHG|#X zg@4zF(-+)Iuetp)Ep!m zCQ|jfTI@S*VhN*9*#IQK#&FngZwv$lp2h|S>j-+x+^(LQAUVW~+9k`fa2_woF*H!Z z3b6xo{3t(v%1mi(5<;oTNThtm6~H;V=F!df*EhtyzKKP7uG zb^HwHX~~kCBW8bPrxUj6E&e|1;WkEIDSz~k z9^>0h9+LB{|I*(jC#%<{C^wl)bxqtDQBzcQ0ao#iQMuI_(8H&UK|NS5P`I)&i|j7= zZVeoY1nF++-H=;wL#}#H$*I>+3K*#TmgWbsc#Ov|Gh0LbSeApSlBf!lX*8BcajiC3 z+pUMw($*CIy^3Ul=Q-A+lhhAT`$#eM4wY4d93xm)8 z^in^+J~nIAXo3iJkcHq;TD~<$^3wl=an3yEX z{;)jXfuvz zM_*NdgM@oz5~FVsQ=8*F7cJnxhuF-hlQSx@#5l4D>FEw0B!|-*t$zio$xwjUfnScZ zdLLpSz+LsWMel%2m+gOaV=N52?@f~@-I_#qwt^+!U}cEk4(Bw53vCXke^4nsCbt#z zxXeJ|n0eYNuYe_!=#$8HPVgG}uTvF*HeV4}`vls|?4Bf!u*2y(9#xOAt@C(v5j|n{ zmy>y$uFlo5si@BTTz?%m$6hJ*d0)=PPr^?69Jkx3(mPzGjR&vNB~}-0I-pALk^j8% z^Yu1<2DN`Ts&!wFYCUiEpGOZy1FWR{=R?t|1zzi6^kpO%KU;~3_`P^2(u7rThL}ED z-j?m-m={Nb@f#El$8n&Ch}o#mUjjErv0wNuvp<1d=_b@!yMIE8vBSI#w}t#<76@i1 zuSiqdbfpgyphwaDYDBkf#{qSJCktTPahwI{QmW9z{vs-U-)5G+?`Q$7FSeG-Z%0X- z(EnvZUw?2y-@=4mdH|s>viiBgmQc6eU($ojpO{&bEsJ{bgH=at|5)ti31Xj+(Z-aW zt5lV>FTK|q27e`1k{^dhlnBmyq-81uz&5$uWce7J944NH2icf?!79!Mx9n`lrRE%1 z$JK7lLAzTZjc=1i?r!N~@Kx4Q9C$-DsdPl9YyjeFBf(oOsPQt^^MCNuTx|Xr&u=l8 zG?cU0B{aLsYVhYS&M{85HP+JfcqXqMJd=JvXDG`~Lx1I9Qp{V;Rr;WsGof2pz#`KGEtb}X< zK%?HZ_F9W||{Km1w-6j@C>Z@g1iHBeF2MMmHDxlowLIp=+jo=m@GhauS(Hd4n;lK#- z&wq@-0?PMjStx}y4Wqmt*aTdaR6*~VDzF>sePF|D75sL?&^g%HQ4cdwxzJINw%O_t zoRg3Prz68oSwoN01R00FN-wgIyBzhThuDPS`aFl7FLaH0r;@AGvcVgz1$grYx!m++ zQwrL&!3tfsgn4&SIH;#L%K!(Y?b))?iGNP5B$7cNgDzr}N z8{F7z|69b%ZlH0AW!efD}fJco}yhS4jBc}*M08SHHe z(}(7EdHrV8LFNkj&{RZ!bm0sbdcjCI(?Q?kWgB6wyxf~$V@_tn;K5|^y_S3F_2%t# ziH#|`8{>gB+*8d3^k`CrlKFh@g1(qncoQdnjlg;Asc0R%CvPYmjekdbo7ahCr^4`9 z`pCRVZ&QPs`PR@X`;0RKy|Odt%`i>}c+EPPp0NI;w{a~Mp|^#b)l?u`f#jm8>r}R_ zK@5n=`D#SIz?Tch$Wf!k>9V!0Uhgy;DX(g~y^1O0J)g5D}K_Rt} zj?Dxfcn8{kVRS0L1aGH12h!E3@K;=6429@OrMKjj@W{LrZ-0L3>rp&RF--nfmqTs+ zJfd%Lh?1Nh#N3Uk*V(c$>%RRh`n6QejbIN@UTml>tP4dgG{t%q#<-zrp7{a6&pR@ zm|S{$pxo!jAmZq?DwAa-eaa+T+#h2lmF2+^T*??HKTbUmXE*5?ro!g_HEJkVcdbi^#9xFre2<$sRHUfcgLC2<+oYb>Y#W2(`9Ksimi zo<5%sX|Z^K$GFbt7Hc-WGk=|&c$AHMK*u3ZY>)e^J}T~I8(1`#qut-+MZk+TzZKig zn!K{UFSMHMa?&eOLwh#_=?LS5SP@Y0TIDl?U8znoE(*~I0h~LDX^mR72D>19YvS#V zYJV(C5IW8fJ8)y9izB#r+yo^zXzaw`!%anfaS{ow!Zz&&AS&ay>`5w$+~>R1sVd=g zOnhtE)>L41Qd=x2HHKpU%yL!L51^N>TPA)-` zUHdPSap1?rz?MGHQ_io{L=zZ&Vy4Ut>jT~b9B>#w*@o(P zWuFp19vv0Zhveo8Ku8ZkpUDLREE3S@27Tt5jYi8Mkdv4haadRm&R1jv^_)GEyM1$m z7oF@>`mEVWqBn6wnH9`huJpYz(tmKgUu=+}SkI;Ct0Rm`<%t8mi=(;Z41N40xNJGG z>_nG-&?<~JkfY4z&n^`|P+6{7{Z1eF_Oz+JHwV5sanj0EvAp9)zR6Ko9Qk=uh?{v| zY>}$_qcz=bqm|JVaR*|Kpx&?>hRLT&&C@3MLblyx(v^Q-G0v;cKG7_&mVXCb$|`-I z$Q3Gk797HIS;bVN1x#Gg(`Zrq6#Wx#_9^4QSC!`1W`NuR11lUIyU&0vlTXBCW{2`q zEGRAv20k5ftz$IEnACJ$7tyvLo#&RF^*{1nW*niumH@WA^?bvyu@DlFzvyP&BV#Y-faEBU)_~$8oMtq@h zLM+l?FS5Sun?ZiM`c$rss#CVdU?<>(`)pObq?Qf)+%eOpsemzIqc7&svn}yUdVF#x zvs@CMEj@+L{1a8)d|6Ns3~F90pwXLf2a{1LxrMT%M4h9?>!7@c(0_XBw^m2Oyc#Ns z1sL5?%wleD|To&)e?o+DrGJ!PL z$-!}ovUjtBJJZ{kHB6Qt%yY=8Gih>Yk{*+%_DSTJFH~V3HrsxM+}?_Ao#P2;jeL zbFgvIl#0!*Nfp%W7#|&>O)BUj8~l?E4rAhmt;~s7xH>HdoBYeYBAAdZD3j&aP8Ch( zYJFoiLp!#FvrA@B-y*JsBBy4>8sm)ECNGbsxhZtLxkDcX%YS2Gns)Qzm_EXJJ+=zt zI6$o5m@LNt<6ceJEsUWGWj#c?D!xpmC;UBem|8zXdJrFMrKck{ske*^$R=rhJIxq$ zjDwe9|L6s{wv>C&Su{m&D8-2>dG(lAK=6||5>Gv&H>c(ma9{Gs*4O(K>S^K~5jkjK zqs3(%Wuw2Fc7MvWgcIu(VTK`-&rM5#{Dw}*m)UH~NV+nHGYv=4x26hZ8Pwrd>#YN5 zWz37%Psr|H%u{39EKg3#g{|MWl;hkITZcF=ak>f2O#v}2nX6!Tl?ktx(a~Q@#4sX0 z!x3c>egihTgQ5}Cc9SmZ6gXro$8~U4_DwXCb30egF@H+hgtt35ZI!l{EIxg24Fz$^ z!(*|jc>lO5)Z_iw&gZk`8M@Qr)VJ3(BrI)NjLY5x?R35$Yb@Ss!|~cUd4fBsb zFuHYdzU!j_`R&20`=kyHFi&H+N^Kq;)&aZ~&y>Xv#*iElwOIct!M(6*r+v-xawRt} zlg$r|GHjl#h{44gsq`?8iC78O*BG+mM7;ZmFn97IwsbZAKD9|}cN;~v z%jHjH$}$kA!LO84*RkrrCQCGBT2X(pS%T;*2D`WIw>*1ob33ULkFod=DLcO@c`Y}f zemlGi*bo@?T2A1W{6u>q4*vElOBQX9?0*MYqucHDtZ6AJeg7$=^J)WSSMkFfl_nF8 zkWz2A6fpK-K3rqP(u{Xo3KGu-VrE@oEk(Q!S{&lVM${YR$e2Rd_BOT&anats>We$)lKr~luzyDF zB*l$e$2HAh`ajpNjbR}R?{DW7NDwVL%mqZcklt#pMukj`6A6^nWqNm;owO`goNFne$FlkAl&TrO_?A^;p4SsZjd(Ov{PivrfLgh1)^@ww97A8imCk;@(MeiA7NYEz7LVBZIzbF5rmQ zC6%VrzzQGD4l)N*%hZz!g+`SEzQp*q;CdSf0o%ZHF<2_}(VsZXrzs$-0e^6|T5Ukg z2*9FCghTQnc-PW&yoz z!8Ud3i+gkL9gOSkJMXz=GJm9S|LxzyDH?2L;JjwPiuk4sKUWr?$mT}IgrOk4j^&cp zezd50SvAw;JAEAa6~=MooPYAWBwS^WyXv4V&)}$6HRJa54Ei#u2yw4%cJQkV4)|YE z1@r}-QD7iQ8i^U)GBM3EtvPgk6KeD@N8KQ+bR|x1g}j%Q5|%b82d9@*d#!9^{jV{e zVnH9j?nI`>Bt1=G{z#5&g=Kv?e@=yauLOs2VZ~3ibovw>f&cjPCx6F57jE96{x!6Z ztD`T}2BD`xq+f4qqYr3sJuPny8utw5$vWe6w3~xUxnr{{xGk?YVyos;ny=UP2{FN+ zmF5Z69%U}s-jsToqBdKby3ogZ$IDjvo(L|Au?*}$oZGNqu@b>w>EPo#dYJkUFHX@TsymF^S=5BsGd#Z7H zJU1|7m9Z8J=4Bq01tw7AR9rVfMP6fKNOrys4WX&=4AV2|0%S-hY@@PNxx5>b5+(6m zk8i^&fqESGe6^gi)^&z{27LklI@fWUDB$j#9lsRE@TwFP(0|ir2nBBOhYeWkyciU@ z)$YfVaN%0oFBeE)!3kI7frbU$<(;A}GAS-BRWAvK3z3e5k?&@vsKRA`24~O^zfXIh z*qTBw?0nw%li6jls<4|N4+pN2cj#$QUb(kF;FB9(xlf zNL9?bMpnH-zf5iB{)!@oWn{;Ak??u?1bf>M)&0&4xoCyK!Oa>QG?wriOXiR9%N%X+ zo5)=>wqv1)evanQLN>a*GIf(ZMLasYRKtAPYysbdvP>n*Pw}~p#PmSII1(pUG`N@( zSoAecz<+eMSev^5NLd4o6B64%4=AVeG|s!sz%K{>$iK7`+DOBipl)xUz#OxwF3vG8 z^}{t9yBbn(Y3uFrVWc6!a{DG-8@ig+&#TOWU*jeXuDQq!wlIsl^mfAoEOvGaA1$W* z0(#cG6Kb|t?G?e9Rx2n?ZaiA-vz|yDwW2hBW`7J}%d*ii;%%xzFUdfG@ju#UYXu7~ zZ_qsXk)729{iQ)`8#|7&|0_SR2HF?R;YM`yby@q;7j^Rf#(p(jy>FX@^9u8j*}v+) zlFU~0MP~2Ur|1V{_CbADW{Mu{S7C@dw;|k@s7V21g$S+{&OomMhnGkP>C@u%MWstH zsDG%!no8HqFX$;MDzv01LRqh9D%{t4lkne zN`+e);D_6d_%#}O{#=`CK+jA1;}H8oP`u{~n=-5n*r-iC{Q{eGu1pM&fn}_!>|9?d zC466-8b^)$`)SpmCP0Xe_MbgLw73>vXG22qPU_;t{G;nv5^@@N6QW?I#CzpKn1RM%sbC!?OI7+Bwn%SoV!K2b0iYG<0# zw{oVR&Y|bxcCS*OuPH7&hslp%iAEVznW`R)S6*M$xk-;|iF`-(|6}f5z@x0Lw&7&f zuo(g(B0=$x0WyI^NWesyK{J7wgnvmj5lJ-x6CptoGyyV%1TrDXM4<|5sDcVss6tzy zf>o-ZpcVV7t$4r#+M;i}XG>h3UipHO70v=cxdR~Q!iDCgu%{ODxM4V`26?XJ4DWj7r zsI-)wCY=TB13$1CiMx48G-8=8gDqTlweflyjH*@=7cGNcsPjQYJ13zJw) zPe$EowpDse^780u9O9pQ5j6RWL*ME9*Ar0DVA9-Km zPPFxERNUP@32>n1oO8rM&3zay_D^~2Mt$rbqHbw>JwNtcJl2s;wN39%FeqHWr>=nVPLK z1rL79ZO_PU*h%u}G+SC{$yw4u7S6ZjU_;@3COJC`02z4W+{Pp`-cu|UkLxm+l}gzWL-_$r{UvV463`W|9=H^V5B zDyDR!m7u2D4Szrr1>l{FEC+85`DGqI5?3GQ@x!QFd$lI9{y&(CI?;C%owtWCgZwdJScIii{jq1i6O z#g5<=)2aXjC#J^;hfg?D=`U^ZQi&J^bxOhK0H67Ln}45wf1mgj0Wccv2vOz6$n4$@ zJ3YTm=si6rS~7QcbWhJ)39;$fs?$R(806S|nJlBuE2&~5GD*N_Hp*zDDG#*7Z7CMP zAv~%@n~ao!IvoWtgZzLmC0U5uUy*1L1BKUlJVFDgDFo;HfQ|9A8h|^BEodx&t@(;^ zJ|9@AXMduw`ib)0(Bd3eU3^N)#zT~=4twlkT8tzaDwqcm>;ig z`Tnokbe>PIwW7FNne$}2&9O}5?K7R{1HL7vM-)A^mEf^1eadi7V-`&wFDchLkVF%Bt#l+QdBt zG@Re+Jxbgn?ljqd5R@*zlsj3$bNEQ&wD=s-4eL6{~JJUc-mbiv_emZlS7=csuML3Q+ljtkr zDWdD!3Wd}wWioLKOPEyZM;dxsSy>#WXgjgY;pf?N(*uSJ}WO2 z)BYKd+Tg#zC(Rj>!k!dp%M@s=t%zvqer|!2=HT#`U+vGCptH_D?yMYyx$DJugW2P|; zn_AtbAP=zf`6Y(@ECEl(4hsne8U@UO@7Wu0`G!^|HQq_5x<@tesei;z(f9dG#BHXJ z0igTBu-4DOM7ZXO&YK$*t30MwGXPi>zS7q5mavm6Os!PH!SY@#W)P|Om(^RMmJf_^@&m4YD5Id2^qK|>oVlKFx^c_O&& z;7ot)Hmnt`Vh6|~ejGUW{2vbA&k ziGN<^bSAknKQonl za`al9yRuLwICUC+%r3-YbRs?dQl^vod8YCM7q%bZayUG&yurJgC;`Q(1>$c<_(5fz zTmgq_WwCLjcA0`Jd4sqBTv^kQ1?SD!1N}ladSC4M^-eGCVS%VJzFPJX;-w*h6i>BZ zAV-YCZav!RMLfN{xPMoi(s zKvDB{mU}cf{QDY^h}X>;1o!lsu<5qs#7hFlcG@kmi-*d^bASG`i_escXMX#|hz4Js z*qPJ?%O}hquDh-CB~?s6S6H#GNCYq|BzZ;tVKzwp%H=&X`7WM`S<~v%u?cAl!!`j2 zoeyvDQ*o8Gg(sta2#RGKirGkN6_Z=b2DYt2yl;`YoVA4#dIpGam-uO6i4VA<)U*na zUVC{TWQ8T{rhh^8s00wr$R=MlY&*cPujTEgNY?Xwkt}5nyyQ)XKvT#3e>v+|3H776 zQz$u8ic&V;5djtz)9KV)sh{8pQALLHT)MqAgDK@Xrqo}e6fSQdmu8q+8b3`QHy6c? z&Na+@3$v^$Q;Rh!!OYk`6f-@*%;Hfh;0Nc{!;A(ylz-365-686qp9#C4Lu5<{@MKe z@u71dNDT;)Z&;FVAL z)CbOGB7Y{*+4WT6m&x+mPR1I#+E1f;Je21S#qId*34F}SxzcO$l~WQA zUpUvQUF-dXeKtISkTQI}2~3BM>7q2=m&-F`5B5@8wN#&ym+{M`$GnVR_33^Y>DH?d z6(L3-8~O@Ffu@(xk|!`w7CqLOm3To^&J>Y`ynoPIx1FmcZWkF+cD1!OaEyd*4zS>wSG9I@YHk7qY0ZQB16th)pmRA?B%R zOr3qRJ%n1O61q}sbub>OyP!ep4qXjSLQRb~W4h6hY= zmVX3zL7my;q7f-cUCbPpFa6kjYt9}$BALzSBVy$689pI$(M9(!g*LRS4=}Fyvd7yn z+$Sj)=XSLh;*LiZi*G32Zlh_(g#9H_lV!Cnysz8)rkm7}q9O-S7M8*}s2&-v!QU2; z*&iYmeBGUWt8w>7Ec6t?pn%o|2g|~hlz&Oo=u`X+(tU>}Z{D}mEi4%kuzdZOl8bi( z*0`bT1-%2hxFFYxvF2Q3!%i1Tm6Oxf>O51;s})mdKqpFAT*(`j8{)1D;ZdV~KD4+L z%C*fqh56su3}TWX17$Jz<j(rg)+WGvLtTa zw=}0%4?W!HsJ?`QOT+fi_C5#r_J60B`aSyl(LUS2?F@A_7mDdY$pRABk6q~!WU7&3 z=K@!{$BVyP(5AWV&HREzQr_9;5OQ*X!Qx_-1c&zYNuR{WUR=tGJoW3sp{;$=g{?(o zIzQ=KF5XBqv|bVmc@fjQAV?f~A~p}t_RXHk4L!z_Hw=@v!kMic@i78U#(ytb+<@$% z8vuwvM-!@rq0vr0^|ZiOoX;07!;QacdsQ@rM`h-yp1{N&psVV}OYw+66$M&Dzxhp%21fd%sgr^t3cqnIK1gpLaZvIvSm8;k=> zXpp&J1?ZG~Y9etn*_IQvvwuX|DUf#Z!_tr}Ex7`mMe`?!AZU|vzv0HS)_X^>|CI(YVUoi3~BM^cf z=hcrY@{tT(4qI49{eL&<1mMx@U2B10!h^ri^h_-{pH{oTY+XfW(pHG0Bly<;Vzxer zwsve{0z997;7TE9=keX!)w6rgNcZ+g_kOM2+w(u@-cO`^zdJ$q?mE7EyN~JKk6bBE zAAPoXIfBtj4eN>2u`3%Im+KJ1Q;`WaLlm`rG#zRqjfJ&{)PKa(C)-p`WzC`-*2YYM zG?FkvGlmp<*GNV;eW#GB{p1bNS)s{7(HF+vxs)D-tzGJh85d7egCm8Oens_#h%PD< z;epi)$FP4n+|=<^w#af-EMr7yS4SZoNjPk^=%6(&ma37{Ig!?Ol5WO97PKo66>LHpKYW3eS+%9o6Ou68WDllxt0YM zG%#Jwl&&+(b%<1lx@z<$rhFeg%e!E}Z|Z{3CLHNqinv7*t_oM+eA6R(ZuPf(zO7uV z$SC$*K=IA^iT_l?4W4L#Huqct6u%&ruI47O26+*1vwwoewAg5rYkGqiYk@Tp_yGPS z@Y1Z5@^a^m>jo_Q-Oy5xM0XiF-`dxo;v1$)bXH=zwJYXd2ji#@PNy|KNrYkTC@)Xo ztzf*-5N+P9SQp^Ui56-AWh_`j10N6|0rO?3%qOjjDV{vdUh^*GBSL$;C?^Q|RFx9t9lYhy2MM7v$zsA= z@>L1%4U{wejh5*U=I7HJN`cRbV)n56Oy-BSCX>esFM{WZIS!6wHEvOpah(y%W*=oO zXa-x-7JeVD?`8-SuXWuFAAB+mI*i?Ny0BGduYW$6LyCRkL0yW#0B1IR*xyf|@V z%;OFpgiGE^j4rX%gc{$EWvcK-ypB~C4?=bymxEqz>X%Y@y`GOf8b9_l>e>qr@G=Vu z(fu7I{0=}PulH&U?@%rBVI~kd1NNf&95V-s>>Tq@v4TBu<$F|I9p^Mp5Qr8zfTayG$M9A^6Z6YXOYCCgu&;>Mb8&hr>>V(#2 z2x6t;CL{BQ7Szz-Y%xkf4;YvdgH7WR-`H4z?dUVj5{}kb6tx|2iQ#o#lR;;Ts((7y zEg+nI1T*Yiw7Vj1w3zZ^q2?9)BsDh?oNB__f>-aQ3QdJ;>BEgS$&Eu}P%%7Jh zJ=vu*-hUcwf3=vfgJRI-WA}>BPF3tmF(HZIL9aNbaVyX8S>9dY=ynyOOMi$Fb#)rA zH75kjFF;5dD0~$+ut!`UaL5)gbzD(nXjC;Cc5Q(TgmjCx+;feGS8{zg-<&=T7P&OtQG+g*4VCuYC0Otp?~q`zoLFxl^9wi?D_am-P&G@ zv&tVbml*GH*Y&nMS}+JuS*8D5+qDVY@JGLrXzl1&lG99JMldLl-z)@O@ffv+vrHkF z?HW_LYRaRMb)tDFd>(cV7gk8XR4gR-0j#6T`4qFIPug-+8@}f}o`3&(nXE_+=%?AQ zCP~@(=G&zw=7k|4Yc6fl{I$&;@Y78&bSNP=OSU!Mx~Q1tRLUtgbu=fOHQrbV&Y&c< z_7RxIwi@BwPnm*+G|vs3XSyVr`;?Pw=$vdS%|P6@qFmoC^HeGl3$8m7#f7&f=8m_X ztBLZNs?olhnE?+PwSRpD{RBx39T`Z1MHJZTLRJ=CvO}|@gkcFx%rpUNn=MK4ODR^JzqdYW0>3s@V*MIG(E*@Mo*@TYm0;(@_ zW8?EAz=KYSv?6UXnMSOQ1v6v{EI5P+IJpEgCngmkfNF|PLyuJUg__TTA)HjrL*UlN z+IT9+FvS?fbd1=8Z?lazWLD0`tt+vp7UM>MV#-IfhTJwo7;%qqNfpN?jKty@ABP|Z z6k86nCU-c}lYd#rhHlYF9o&Zl`raN@(_!MVKb->WRcVS88o#5?`k#uVO7}>pC{>oE1H*0t@EiOGc4=&hN;YF&YCW0MMt{dZc;Ca5tvEEj(ojOjya z$VlqxbdPC0n5}zV5uUEsnkxi?w4Dq#)D7@4VNTy|t`Tt%h74B-NB-1|5Ly=5`LbOd z&thrAmw)0xkQ_aeuou%q|A@M2zazIBQd3MNz%!hpd%U{TM@mlMtO|%?2LbcaCgH7b zBzE??)6jNqQGgiit*1rgLA7qV*J?sE2wtjyP4imWv7N4$cpb_8a(r9x8t*Bw5HxkE z{kxDgx-v|uEWgy4v3#aLI*}?{JiQ4>$;_BZ#DCD5C}dP@kpI3(Lzg{kpWodc-X{I2 zyG6Q*C*li1hM*PNus{c_;By7XHlAjxCYa1D6YDWR^k)DrWi+Z0tDv+T!Sn(=w>mL} z?-tZ301oxn{sGr*4R51b^}JRgHWD#D3*ZeDD63miC~InyTrev;140$)lmkWT>L%N(AbOP&;oP4Cf~N5t40 zxV10QTCF+V8rHG7(Cp;n8v9HeJGoxUC4W1afR-(FM~$WdLWwJD(r62~@F7F@DR-vQ zb*#z74^QuP$>(y(wf2(YV^7l;IBTe@rPpbk`%=&S>qO^{>bb9bolC{J<%mHaEfD)z zEDN;c;NZ0bQdT;%sH<@~|LE$UvXXwXbh&9nBcHd3CqIfXuQGwb{Yv_L{n8RMMt{;H z{N`K@$Nc|vnh$-}r_&z#A78oBURiz2mCJiHWG**q){HB#Id9>wO{)au zDAn>Hm&RD~KeYezwhY+3X`3K3z<=X7&rG7Tp>6I!dbfnQ)Eiea!fCERKmfL*QO*JM zqqgK@QaV^mfg(T=G`qPCru6^j9=q}L-nJV4`CEYS&TyLozWab&u#L6}QfD~K%F@21 zE~2BRvdqN_4IT@nmzpzX8S1BL(*g6k2~2`t3W2z}fSylAZX=yhZKy7T1%JlmbU`75 zB@*>Nj1;TL{7ycd8mo?qJt~IMV~}v~h1q#vHAR-Y0Fro0h#LIo0iJ?F)EC+XwPYZq zQJ4f>p?V?~)*4ef08>D$zrpvoKx)CjgT!wMKx3|z$r4NcRlzE>vBXdPxO>AQVl}8V zKQk~0Fk_kTruJ17ZE0C`t7)gD$&`P$O^qjzoto$IpAU>?q5%>go3hw!fH(q^M5&D# zOOI{n)V#?#j-E`2K^5`axX5pdU;;Zb1Z`%vUs8`D|qJLVXl8I&*b#whBC^F1zLYaa2OZu zvJAP{+PQp2qhhJ1M%;nSYoB0c>Aw@#GKZ~BrWb%lbWa^daY5G<@Oi($@fQjIL+lm3 zxpWiV-6y`cwz%m`8?#-6adp{g^7yKXeN{*>xRL)|X9AisLW?#f(dkFAU0g#C^8yRd zbF|M~Z!#yUD4AFfslOa)L@<9TYW#00%YB(xFc|Gil)G-+jVev{OIO9p<&{9EO7ZS=fD(r_Pc_am@}`w*s$CfDgPw7VHf{4;;99zXWEBGS|E zx73L5QVfmn8(#GiUGNLcH;UQ@=y0EO_@bbPLoZt)LjNAQ`2`*3PJ?hAx-eb#$3?nL z&gzLChD~#Stklp%1p|0CvPpT`BYh#Y)2Q?^ZvG%P^~=KXFlib2G(kULZdW!#@7<*L z(mQ-Bs%o3kIZf2CoJD_36fu~*&`QN8RE(R1TEcXm)d>Y>NZ>E%qeSq$tSUpdK#2J` zv7Q$~m2aZYH=Dl4I(=sgAN>bUx*(oih@2D)`$dgm7Y$BP_%%mn7iwY53)6^B6}Ejb zs@!1!ISGrXtXM>iIW5&%oH-HdZ^nc?*D9OaZf80@5$WX)HMD=nxs#r0#RA;zL5>PiO;{NzB~LSeK%v+0vLAGcB>bxg;y38g zzWI*L)(A&?{$cOf4I32?Y-;@SxgP+hT(javgVY``<5YcQG_`5Ew_dC!*dY{Mp zkLKhPu5cFYT-kyblctVE>Ue^ODETnAG>bm@cX;E)eEWYimN?v=5u-koW`vAEu9QH3 zD3_>6po+`;0!W9VCZ9BC;4v5}l${wSu&_YTXP8a_IYM){(+J=N!q0NFsRR$bzJIxt zE|_M{|-rP7VoSaPm)Bjn10Q7kO{^rs zs-6j8ZDk_cXJy0UpC#7cOv!x6qSj>T*K!(FAA?3zO&lW6)+K(3aewG1V%)|haWU=> z{X#4uylBMO!H+M1E>Z?fNfkDj%tB(rRj-rUm9l@bglVwkv|>pzl$UriGo()zFapT) zbH^^a-*REg!khadK^jEq@jQm)Fq4=+wG#(`&(kPadT-1z-MQu=x3CKe1G!@AJRo!z~J z@^gtYwEanvpAcl>{<%f5l%pyh!9ypNTSExdg#j{@Ez|2=W5$SgXS@jn#m_^-59|DE z;H+58Y>Ru3Y4Hi$A}_FoG;r-V&qyFXdNF@uAvo1#pW(Ca(M&NhtFZ}By7QPP{Yjq$ zA`vU1Yft>byN|i>4|*Y(Pe0}Piwo&l1mA6x0u4@_Wj*Kz7CS&0M|09FUp}H@%nYgH7tL{Az?x_xRx+?vVJqFI7c{~^fs6L(MZ1r= zsJ>?qe>+%djF)~F1S0Vh>SFL&eQLT-j2Dfse=k26N2w{Y|GeUc<@PQM^Dci&84)~q zd(_VZ{f*e%P^dzHaQ#7nAoRnaMe~+J5u0YEOS;%ETlD!6bwu0~EkVcM;s!Rvr$hld zij77C_#_lx5;D9N#7uPq{-h=Dpn1v!C(BA_(c|i{eKGHt%2_mj9c3Jf1sfDnHdMRz}lUe6j4x0}XfI%Qv+){Eq!y3eEn!AWmi6CY8^GNqvLx_RdTgi&=}@x6bnEwfvM7}iW+ zDBjh}?csPfZLw9zAH&=Gu_M2;!Y;z4zuJFt)?S&`q*KfIBW3^xR+J61k z_6t#&?<428#Ehg590z~mGgm8;6qe_F(_NFLw*)0|c2LZK-CB%7l#aA6-i{&1Mz!lv zaia(>3$&vXwIh%bRtoF&@Dr+0-U5A4L665QVMVBa%86Q7Y^;&uU{jClTf)u@UG!>O zGGI{K#fR1&Pe&`HA13ZqQWvNdW(Ok-BF1aBAryg<>hTiG2EYmRHa!;orU_DU* z^MRMSOu-r2Js#uoT+iQ=XyCqXCz`9O_aL`m`2wCc=}?c$HhjZn&OWreb)D7ruvLiN zU6A4bY)UT>KEb+iVG_NXa2QZ|Odzz^iY-u^c-t$5?`IykN+U03DNoAePzw}y6nUao zV0cN4zz_{>3#oq#_;@CvoW^fdH%*=HAs3rahqO&Ya>W(TlQa@eSA|opRA~k_lOfw+ z*dFa1MB(IkphX{g8i5w{7?L%j;T};IQep_u!i{=syFZ`Lwj+qQkI_1PM;y7_z%A_= zz?-grf`&xQB!TkHf_;vXt7Utl>Ow&s53R}6tcx_U=g4j-k3CI_XD$Qy|OxffY zziMK5!iAJ<)sH2n)ZVErjB@(vM;*xAhq2Q&jJxorq|~nuhU2&A=_VILM-Xj)rLPWw zGR|cv?~H%_ie8ffOR!-T&*Aol$_~&bHc5DyI0e@x!WL9S@5>2~9*V>oe-Dk{d2HivOXGK<@xMg{ zfN-%mB<|_H?f1BC6JOrrw%1{M=Y!?wliNifCD?!Xxy_RD=kxjMtQRDvs_(I%2vZy# zV+nXETPQ0<_=0AV(Isv=xBCEHs>q0?F*xObSW%~=D;)xvVGko+waq`tXqhHJqyY6? zl!-I9VU>7AW!M9TpJ(@6^a%urIJM_JcxY1${4W>jwy;hhnQ)&6DOpyX!Sfn_8Dq-%6;91Tff+tQsp;Umh(rYMX^KHE zBvH!7ct0QtW{F!VQ^4U_o#Vf*Tr&*weu00vlXR2iDXwjhl-lPKBHd7u%-m6y>N)VY>7Q9F+5H@-D;cY$5)OrlO2`I_)m03Y2 z?PStiWsWr&+0HL1bmk?|{P#3h9n<7m5nKWvrgIWyGdcO3c{DlfoMdPc$n0_^V`m;y zKeA<9p9Yg|7BYeeDOKksK+(9mn2Uc#w&Yl}CF-suuw!5ztyfcs`qGDX>FPbMacNk1R7wHbSpeaKHesK>HoA z8M2VFT}mS(Q!yanpifyolgTpRbk9SOLf#M3%CL~7GBQdjwX{E>kiEMb$(J3r7wehyQ$7OnI3;^2mkvR>D_o) zH8uR}jFA4gdL6(ym>f<^*8{aeKtogTy}m@Mb~uhY)9HZh|NOG(XO4~h`!~#(9L$$enMF4dQ|)Ej0NvS!&@wlzl)8N36c6KK6xGn)(gA_%)vtOg-XJpTAJ6i)>0wxcecsI3?ATi^FV0KGO0etR{9eR20xQ)mWK8^gGkF>2iC%`^|roZ{x*SlUBLa# zF`@7q$IhbEN0D&dC8Bywy1>jhhg-U}Z+cc8Tpb@q+~85Sp`JRKZQ?1FvZxBjE3ds4 zz$Y>#fBA~w`g#OW|9snneRBo*KO7s9cnrj<zBA9=2~dg(80L$BMq4 zaVfvjG-9|PMEu(LEq#yT_mK#)u>-WKZwkE-(>Z8BNJL2u@hky!( zqOk!wNZC+o8Fubxs`ly;g^j97`Y~ye=%7SzQfy)>*6ej=U+icNRw7BMkVV| zP>kVkLljEhrz(gK8y1w>QN>~dR%1Kdt}s;Yv=_-WnekX;K4bkbSpWNj@OP*|6B#m1 z&H}o>11K%~xtj+PLeLKc1o<-%4_qePr$vGihZu(dHL~b_a!PE6Zg{BYH?!W9iMh!j ze_>TW-OS9eo{G$aXgY)6G=xduoVmaO>yRIUXzM1V(Whh9JXl>-voKFv$B3Df5S&q6vai_MpZ(AT_wu8T2_LlaSSW+fAX8Rm9@$;Vp^7HT1^diNE)PTy4h?>wWt#W ze_^-lgXVs~DDuKy4Rfu_wlJm6HXq<6M+cI+KGz1ad7NXdhZ}{D(zTqVQKt*Cynl8J zcwn+M&4aWXuG4QW+9E)wu`*F~Fj1>>HQb||Z1agZ6fIR)3G9=JHnRQr%Nodae@L*y zf@s@g$;yR7*&d@v9qXax9E3YTy=m`rH`d7UpXyq{!dT&mFo}KHo?$LlduX^^3 z6hku$>u6*yY$rdSn+$#6;b8)&fAqJxIr#PWD8%pISrhy+3DRSUz^eA9Bj1v;RA__W z2cc0@?I+!G(limaK3fDllhp;r;_G_zgZV~-RsqUWs&>^P(T=Zx!3kZx1jEdfsVsuo zzWF8*i7Kq>1yCL)-L3&@NcsCB3D2jNU1k`Jpry88VqW~47VC-!#azWQf5#^YJ9!{G zb)BvVHaxDA_PXNEvgnP}y!KeNkUBa~^Bd7Mb$TETo+;&VV{>`Z)=HI$b%`76kX#wf z0fWAsWwT;iBqi!DqaRQTy=U?Eil)Xe?E==76%bVXTM|=_h2>77kD?W(J9M8n(M7rl zQPeE?unltJ{hBpGCZ_@Pe_4WbVs(df;-iF=V)S5jM-BF%1Ym5f>2RA$7L6||#2K#^ zCYx-2!JiM9(s{-;h(#i2f5&hNe#Mvjvn$T^PZ5F8G4X4@ub>3?T_{DBS?n33To=3H zJyy~G0CWoTH{bxL@`Dd0q#PStkVG3hP-m+@J=hUObI&AL5vs$ce^77-y!3bndhldI z_EqPIr^hkj3n|FNo9IkanM7t9R_L|XvV6=xW|Wu!|1@r3ip<3YIu%oDKKN1&5*vG$(0(SEyIE+QA8z3GF*5Zx9n6uby4L^wu#W=dmX>Ou{Aa*X~; zR2v%Dsd$fKQS^*txrnE7KWH1e$aJ1r`Vdd>um5IxogR!LLd$oKQ zhPzro$|P3Q0dty1>btlg+O|&?DGR|pl}v^0=5zgYQOA3<=uL4mt)|(9lm|-)J%1Wd z9(P_-!dg@hBdAEUcy8AZF{m=0Y6bHx_7T* zuQePalII~~bDq2fCZ6KuqSlZ3zL(o~?ZzEsBQWoaRevhhQg!q&>Hd|DwB zz|W(wR=t!cAx=A@vKhUchW-c`bH`!DG7H^?d)9o* zW&Ul(hT5j6w0xbBtmfsixp@I{i*h6o52mdQuB3)AjfPC&1dQ~(;)6z!sLYj!SxWEK ze0L%_Q#-Q%rR#zJwa(w3sJ&m}|Kre$=6^>PO^r(J+!(4QidlPrU) z=5Ou)+w0>Nhra3hLV7s?aia92sGt6be@QVnNoE0e8e*7i$+VBz?ZsK-={9qmnFVW?w zDD9VNDRYjXzea=!-_5kEX*K~0#*2YG1MMGCudVAKW`5xmzP+MVLsR)_n|U=9;r@et z(?y!d2Y%&j)VXYmVPlIx)CkShe+OCY=@wK6e2ix@cm`s8rsCj#wMZ|XFtH%WQ5Fl3 zxgpK0F_c;kWds$gQ!#I}9yUL8=9$KidkdRClG<%_YhT#|m~BNAxFvl|4s0XNaddr$ zfDg!ScY_A&QH{SzpY3;x1*KLTKcXL=8iPw``S`$wc_Ipr7P;NSY#onBfAQ&SeaOH7 zK45v(51BCL8SmAwfA0?lA<0~4P~X;TrUb(=nUOknnZS%Z1P=3Gk}7PxZI9TOwD}&( z8b;TJ#g)wKa?nn(hJ66Je>~{PepI0?AEmI*%qxK1x=bYF%c*2JWo5&6HVY@Y?FVVFtJ?1+z_?6j(e*?GLiqXARCobm| zx*4wK0$rkl@x2f9rU6dK8)J=Swiz)S0r51bynFd+jAW{U)=NNyS{-?aPe)E9qU`F6 zSqDsS_hP(li46bm{dh4JNu<%lZY>uT?d`fes8+dJCaP5P5g#q}#Mn=r>>~KF&@Lr$ zzlUAq)?!#Ptr2*ce?RRjbAFR@fY16u47({JV%VoZX5u}qQUq}5^A~8H6%QU&W{Gp8 zxeUSh3k#$sFEVSy?HZDp%%ZZG%*dSxx=uIw3q+o0ITHqHWYoRO4}7mVr?(Qk)`j&O zHu?Gf;p>_+_zkXb-8M${=gYI2EKrZ3hE>WtQJvav{7JMwe_`VW+cN+K)JoKDr70^m z^ecqPJQ>{tp?)7va?q%V&k{atACT~O_Y3igx`PQY&&ZN;t>B|i^ur=54Vtq_cYC@e7ibr=QrWpEj^odwhP>Y*|7L^<_ zjmA)|V0I>ff5)_^AFPx6`+IvjEhiwpq*Pf$x#8_YqiIn2PiY>LK*pL{PTf#Q6c7+ML<&Ctu<)YChk8;Xw zIeQb(vEQWK`mBGaD7&>nK0q*|A?bAzFic5t{(?2M5_hfCyT0gOZjLErg`E-^y8Swh z1{l(re>TFr*ha5T6_dv+jTyNAfdLXI^mhpcqVM;wkJq-c83Bu9JTe9X-(+Kz$HW01 zisei`IYQ{zlP3Y zsMHQpZFAGt=?+CkSRqqK*_e`BqiCC~WFi1K3kqArde57(e`grTDi z*za!`2)OumoY-O^)4Gisg>)*yGNWQD-w=O>yPoR(^x=>cd3m#Bw4aR#SrMv?Zk<=C z{r(W~mAB2SfPqo!z|q`70eVvCtV^9zx=svWKRv0_Mm9=xRe*Ok1*UV=`l&HYFC_O8 zf4Ls2%P7{T0GK+l97e*&X;9?Y5yWyYS?^6>3sl8`RW;OvSQ}iTg$G&-EzUA9M!%)p zu`{WFg&h`>T`crmswPS`GM$Lai!rknAUe}50?nr;wHxBFHn_M>zc(V558-n0GbEK$ zn6FE_QdTSC&$I2OA}UP)K$*=oUMAC^f8T8>P?SY}pi#>rC($bdLYE6hdhSk3Ko6MG zs}20V({AiR6(21GRjfG~R6##qTtY7;!Oa)yCX&TrrBt6pft22B5Q6`~z)qRN7|x0k0*mb@@0C_c#Wzqle**+# zG(gxJJnsFeG>Fc&Y4xIZ+n2M~>J|^_Sr~B?MQfuiD2fX87=E8S%mm2W0tz7Sia)VG zRR*nx5bff1Csre0sKZSyIY9asfo-yRL>~Jropo68Ecr4f&C_@>eZN+muzNcyc<)T8 zHd*xEP(iu4tv09F@lsDB|e`<5gUnR$YuYZ4N1iKX7Ui&65!rdKTF?&kL&Xb6I zgc3-Q;-+wSkbb-bxm34!Vsx&##N5S1d}nPTo`{f+D|r6t?oru@mYC(Cb+w!5&qG6e zMGmi?=Mqww4Uf#F%PVX-kQcdao38QVVBs8FXA0+dV`O#r!e)NFphcJUe~W{8ybmsD z5m62c@wWQo7NQ`mX+a%s_wm6gTAVY+Bc5E4VH&4(Co%A5QpGyU@Ny(LL`~pYdXZ=U z2*B`a6!cwiqPI4z`wy4^-GFD)8PkkbzWhauVM78y^&;3Zek#-jXL_ZXfTir=p8Z}z zEd}Y%b5Qg)uxhYS*Ad*G!ve zoJtK6aNh*A%)_(8g2IERvV22NEO5hJ7Flj+F;98_*pwSO%uB^9f280sleCP`ExMNf zJ`iQPZ&y)qnmNF29^hGL5`C6QQ|9N_gJSaog_9|xSddniSx`J)*muwq9h-Rb`3KBnTFf2YkZhc4fLo~6GbmJFO-S<-O1G^UZ(z-v39uQjCE^+Fjir$uMZUb z!i6O~(c9@Oq!LS0i%MM>@J>(jc zdG8P&{cqZ`5@Od8k=a_0q75mk79eE&t=Jvq*zfo3krTR zwg~DRB2nT0n3pkC6(XL5$$ZnwA?I%!@t+#V z{Pny-58XZ_e^xAqdERT~A~LQ%MXlfbC53i5G$Ox8xg4p4Vz z*=UKdRJ%!(QA4=FMMF|_f4;?N;TsLJp;r<%f_**Q;RmA<@KAHaXbPTB;_UzjMVZW3 z$|Si|LU9zSjnbwe-V8BL0dbc~hRwif!a2osGn(nHe=S4Y#YZV6{#0fv*S3Y#So1ld zQawF{b@OCG#Ee=#8sr3{RZKqSf93Sy;N$0m#fnq*smT@l50@0RFA}&^aNobp+`2derjLu+_~*p+aB)&e%&4H_a6! zPgphEe?-8nG^KV2;a{J|){~);Qr@JQB`#cCDsy`o{7%r2Xe>YMa%6h6Zf8-TQES4i z21ir8T8ao_okH;#zX>9mvDvS1v>_2%Gu0Y1Ll;_$l`lR?INAe`u7MJd#N-XFPraX~ z1M(Z4RL&%MbA2*$BQeK+J!Kl?q6Pe>)pGFTf5A{OsqfApaQ;fo9$t7CR{;RX`xi6b zW9e>x4E85a1`rtjgK;CNrG&+ivazDuOB$Z>(-84eu5R$t-v&+-=M^skx(*(SrAAjQuGIZ;y^(?8>f2=c<0=i^LaJFA`y`=P@#{TUQzdBukWr_!4 zd%BD%{x2wyyqwP5*)Br@x0pg#N1<0b)dCqS{x2KW87 zQRK@Fu_=eUaq|>AKCtDqY9(v0Nnc2B*9n|HZAuQsYx@d{$)Z*Go4Hr$f9_J{s9JX< ziJnQ=xnVx{ZJI14WH+RWM~k;P72Otv;Z%2=DUq-NH3Qa%>oA#c6_*ITj@%~l3D%VW zyi)V4Ml-x!h{y_oipcDZ8A|A-0lh31I~q|$qCXw2ZNUs)KQtuS0J7ISkEOq>vBCo? zkYtv&o@A9eVz`8R#JK{!f7hyfcbyaK`ntMrWW4tcWyYItx92E5d`zzl?Q3i?@PQXy zh@?xX6pm`-=WPrETO-DNZ2Y+W8t<5Yipiso`u{tYen(RwZ5?>*R!=WCXuY;039+nh zqp2-~(0Q0W@&&e}7A5vTzygwh%wwiU30n4c73@=!04(MIszvm|fAvGfY<{#h*#JoY zhN0=oTUZKOQV4qmz}rE>PhKM=y!SM*j2Z#&rH|$n8oFZ$OHGAh+_0#`B<0ix;;#fp z*3nODrG)Mwp4Utt@c3?&e@e~DE3EmVF<&J&wW`0pSh9IGB^}iX z*;Jd;8-=iE@I_Jx!541f^7#z{0a&^a{r$n*_i*8(!*cQKS93EE7Q~$n;pbg*Mf%-8 zEM(r-0IMQIN*@v|Z>@TcWTi%VmzgvmS0L)5?lUCL(nWupe_yEk48oiP)Gr;i;E>?4 zLhjofv<%QjZ>{br7AX_f;Ps9|dM^QmB|n!CpB3hQ9#ykJc(Hf-Go~eLlua4q26LuX z8HZ2GG`gToyY^W5ZoLVTHJy2 zpVRPZY^f5}<7xhca#H}q)si^h^-nYK^+_a5DkhViuh<3xwklyNtQlU(%IgcMar(YMM% zeBBShe=SO9Et8!`LTQCs6U$@4el)Z`Y4eJAPVg_5(n&+a|1}88&!Ju|{ET=OghJG7VUOBOgg=m{69{1?M(Xj7qQ<@wbztZZIEpq;w%Y zvWXhDTdqUz)Cm8&`;7W*L8ks)jd->;p8?O7f7TeFS8K!@vQ>|@mEgL!YJfUToAj9Y za~$V&A-X0+kqXq&tI41ye*v)65e$4@h_0vrcBm^GD5@uwONs1M$-u1yA|T&-c8KaL zXm$k+&W4uc8U}a037jJXP8E?efJ#MIRZyLxnyxbRQ|L~&CGMn|VMunXX>CVx5^YKB ze^e)9T5QS?RhKHb+}N)gsl8+rqybYcg&!ZNS&olaWH?*-A6}?SRNa2{Rsquh@m+J_ zlzo0!b~?l@ro2UhPy>UpM_e@)NyNueJ*;spEC3L)6nJrT(d<|A8VXMJE~ zxuHEv-6EL}GxYR-beq9_^w`qE>qM}rHyRwWnpd6<#%IP_Ih&=|0@sxo#K-4WoGXH< zjIK&VSE*jj(p_Vi=9JJ`*|Wz$p1>*Ky7JP#eva4{KRPQEx3AI9`}{lM;pL@;e>k#g z4u<#XSsM-grEhPmL1zSFqyU~Sa#PN}q^{43CCIFFmdNMROu*)zc+DF#STS$fL}#T# zgLq2vaVRZ9gCHI+W~!gIuA zvenKNhVx=o8Oup5fza-b7M4QOe~XRpYJQ@l94ICV)`aR^U2-=pfGbcXcB$XK`OnM* zbbXS~Oo3N)2K~?(XTD|hhgO-K2d+w{MuB`o7mTgFVgkiDYbND^0NzDxp7 z(}J(!>WF4dOeqnIqNqBo3%q+xa#>6nSbrL9P@9EqFUg^P)q+&H#4iF0e=m=5bmSVW zj?UAv4aE#xr2?i)v{PGeF^cXCD*}wWjd546mKNrm0|O$;(`&qQN zIVE(4h(lhR?57AgLL60P$XE(XK+e2;zkwpN`kS8h@B7eU%|?Sd&t1CSIutu+!X! zG`kbLkY`{jVs`@)68h*AGy32Az#DPhCtMfK~r)mGXD^Hl$%TWOiv@wp_^p~2*4`; z$*dYxJUU0Di-gWE`lR~#yv0(!AO5U2uC5Wy<@9p=y7Owcf5H@eczU%-rN=vV!PpzJ z`f`zo87`H4#Nzr~LOCR$cD1iG)zQs;%A-AmsvCz37qVdtkMJG)63V5Xr8AAzTrEO| zk!V|fKkuBL&PO+1jWUBy7Qqgmp3A>~a5Yi`esy|CN+xVEwY0GhzsI+hW=Lo*KYOJ< zVg)t;W07*Ie=RF2;w4;)xCxmbO38(mJKK++tay<4T11yEFjD%Cc~#%F&3Z3O4bBm? zsWRELV=V6sF9*`$Uzm@%rTqIyb3vXI(>aW&FDx%HU=$e|n=M7dOU)XKF^R5U0#KPc z{sWUa4Gy8G8mpQEay1>8B@3U=AU}}Kl3>;%k(C0}fAA(P&Jc6+62C-kg`g0=$lubl zuIA^>(a?X`!7uakb#zsRluOA7)!7{&Z3;Ey07MdEv9%N|oFp%~%ywfm zoYMC(ogqFSU`gbv1`2kJ(kZyk#l)B*^sOL$G$=jR+Tscc15HkkHAf3_P}D3@00QUu zffoymf4HvCjQXoQGh&;D;~cuV1$z^HVz$|3;rjF&*30Hzzq>y{jllm91}3I@*|-D; zZVPiCo-T%fS>r_GF9TdIkNuy@VbS!v(Esj};)YrHF!I8rr4Xv&YWeOZ+cP-ouJb zImZ-LT*y=d8S@%|4YxjPUt|GFhTlte<4O z=Nb_oA^CT2k(r9A_PciEU7+UEQlRK9k*NE9ab-v1b!8KNXr{35{UZ^o7*+fEYTjp0 z-)Dlw#bsi5Nfm`sqMvy^l$%S;%CV+YMEE~nnPG;Bgq6A$qVyEvJwA`8TikQSe~?Zh zR^ln+#>EkSr3hi$QXvKxOCKGP0x31ej4fra=+Dd*$D@lLq;4V~1u_N#i(N2rylhHc zsBb89^T3s&Y`m0OE@F0(i^4g~b#tYE_vy*kQbn2AuD=eZD%H_D0u9OpA+F??+mY&u z+(X)sXz3F1M?bo9`-uoZ5L<>}sFUMw!l(g+MhT^hd7v~**~`>~B(MlE)G1u}fyo>t^5^Z69o=q~WE=I1iD)jQyAnI= zCc^p!h!9-0u8#WV!eY&&`Gh@ns+?-zQ>XH&`N<}UhV4_(Ff_eLbT*{#tG5Ckqy_^^ zy<_i&m2~ovm{KmFADI(nf6s2xnBJ&yWOpg!_g-(Fqce}H(0qv*E|cy>&V~*UnC}A|@sVAGh=#V9-5>7Z@X5i|Fj^xWb0q!7X4up)YO6gt0?L@&-*B|w-y5r_Hj z(ilpLPufyFke}Q7Cd)PTCU~K-^)*LP%bTLTZb_nZ)~=+Rc|ClJe~_h{P-^dsgj`zJ zp&tKbEVBJRq2AQf20oHXf8_63_SHnif|MzEbq-)>P-LBvy!a&QcVH!b9QD&JfaE&D z)K6;?bLs17cdK7;OKWMFwE8uF$E55qiqQ&t{8gA}0M**ZAo`r5>*Q&RB_f#WDY;Y8 zj_32*_$x4>e*oJ&e>f@~1`+>QGH9gI*X}4vGjeb4M{oWpC}(tEbUC;BD*y1A%E=~8 zL@U6>pmMMa0tntW9Ez^jg%G{KW_OJFoY_RFEzVczGZSJ$OX5EIXFJ?p^gRJ9qq`)( zofd3|_2lcs2>c+ADklfBVE+iL(4U(8$r7jMFPI5HMP3x;e}452NC_R#I;>W^qZRZ8 zOH!9r*sPU02-H$1teUQr;_Y=}2pbJU*zfto5173G-qVDC;nUcLNl02#3UeW3JZUpeK#<O@#^&WFv9?cINkx|{F5qQ>%Xj6NM@NNMW zc8tM-5R0BUe~8L|Cq9$(3dlGU=@T7qV&_mN9j?PR69_i&uj?t%O2h!lK?xuL_XE4T zSIY5VW~!2Mj1o_OZ_8l@#)rO7d*Q_RxXtez?BZXYeEG+18UJ|9v;%ge&%UJn>m}jY z06goMCc!E$wYCP=2V$?`tL7ei6%ETawT|4c9|ID8e=-e5L~JyQZR7&j3*b9`P_Q{9 z!rClh;RkltmjR>!14aRVxe9{=?!pPP!TsO#vyg`GmE3|k%Dv50I=`BmdtZdg%1ccZ z;2d2*yuK9Q{`;6O+#!6&zoH)hV#l+3A15c`jsJTNYL)_NWLrLqN6kjzsjYvdRX>`$ z`xq0>NU{5tVyQrG8AF_;w~0{-0C!rJh)6`5T4Heve=C}t&& zO5p4f18_-5n#$RcLcL`B6zYQ-Hd;h#q{-x2Uyqz_8pTvXGhW>Sk{OjQ6DZEF@)kLr zmd&TjEAUPHg1jpRM&P!H+-6?2KDU+3>zQz>e^C&9Kty7F0CCyi0 z$9+@aUqH;f-YjBPYe|98JFY!&P}mq;3Us7_mGmLnwg5latXJ2CcXe)flf;bMd%xK4cJ#OYW*T|;@q~dwksWbB@&7Sn+*sNLO#uiMPR8=)gPQ2hc z<;mbIq%SyzQ^!|}Oyk7}Bsq;-7E&LAfBbK;FKyo797yYnXok+auuoFdWkU^4K z;M(Dnji!^oF8>-Q-(~J(+3J%-MYbJ37oh@U$7P)-FHfuKwjm!FTW=)K1TJu$e=|x} zKkCg7nkgmElIZ)1`xI-x)cnh60TkE}UGF^uo|l=#T3g= ziD^sIu!Ml-j98$h9kToam-42*Q}fM^IC6Wri7)2eusy6nICyZaR7+4tmj=Rr$5}*; zAM^I`L(E%|EK3cr%N!AuBAH&}f8WxS|2@+_l#ETM4+vVhf(T`fFo^SQwB9vfF8L=1 znLB;YZyw;`yJ!&aWh&^k!)MR3lF772z*NARtAE}r@Ou1pw6)kb7_F8~4Q|w#a%D>4 zJoB0OV@h3L%F-zoSB!VEMSYPZ@7E-;u$EPnjI}h~51@2lCeNt|DMZsjf7V=fxBJuh zCFP+f*h?;T+hF-p4VLF=c-_g@rkArsSeYXjOW90BMPii8Y#j#$ED??e`n4lOkF;ya zJl8>9zx((#*dusxkYuTKoq@r)=+EaWmMY3NJj6FXEth#M*YpDN%nLJzmz9rtL(j|U zgGOt3B1eq>E^M)rA2nJ7e{eRYkhVH_oF7PbsB0L?93r}FbT+@~@(Lk#_@gr~3Km1U zVo{fWN5zt@MmFt1C9^*-4N0F(GyJn>(WvS%RGxwAsBkm6-p*&PI(Xj_!Idu1P-Z~# zBkEv*+eS50ncv6jbcmrt?W;5wfkj%(+^v)=G*TOs=y9*{%+8W#e+``<=lnEoqXAXf0_}ZRb?f2*C13?Lt%LC*=$oPa>+#T^jg>=bnPa}mU4o;YGFiJ z<3s=6Ys;atb7^YD?NpROuOw7cbp)QVRb%}-;8C7mAt~a#$Y5M|1@bLLRw4=w&W}FJWZ7qGF~d~ep{SS@ zk(_MVmA%u=IiqC0sj0=FPIo0#-6B~cW^xK9L(%}UDe=?jMViEre!2Z`cmg(yrs4-&o!bjnuq<0cJuVUqu z$uZz(`dqwRk}pOBq^b|U!ljy&PcxPq0dZ!f7X0BpeomKgDV7pfnp=fwr-Ct`lFec% z08>D$zv{p8u74D%pobDebP1DWhX7NtrW}%XU@(2a&{ysLHbhKBD`ws2qPB`zS6(^u zernxLi~0X8t)`LMlASs9olO>{FEiM1=(w++1{ej={c-t5=f(FK*5Y}2&iX|p_S1%@{;I<0ZZ{Rhe9e*7>)lAp-bcE@xglty-9`48y zy`|F3k$t|>!uZjkTpAm40UZchK&`}b#R3{N(9~5c5j=?@CvwkzAI;Htw@rz;JkCEz zoCZ9f2+Jy{gGaQ>A_mj~3>k8bT0r5BMO-2fUFoTWT-w_qxdN?TRT5^P5w0lvE$4*@_q6cgoC z1f&k%d4dNA{N)RbhFbI43E6Z}Mixz&hFm4t`+vO{3K%u(2vmY}?{cU%Met%}sSG7y zE&7j#@ffThNP;WUQ<_MbT2)m=EbnO+cP^7ND?0cR|CE^1+`JK{)JFYe($yt26!9ZG z*gEF%y!JAKW-LUAh1{8iVLFM=(qcdL%cjN*8jxLe@nmYwL8MVr2KCRb${HiDhc|~z z#D58AU>}%oZo?ydv-nl!!m5AyB;&ozY}Ot9{bZ}$1n06GhTH+R@gGgiGi?y zAw^UkpxvxUA4u31t5fHjG>)&$;$c&Rh<}a6^W(3k)txW+%}nATos;TAl+?+iAHzE! z%UFKdqmVAA@-zCDWZU_%l6{|5)-|2HR)oNJ_Y`^h?S>-Ykw&D0CWh! z@nR%AySs|LEB@bFU0Cdjr&|Z=rr17d#0oN(9itctUv8BjfXOAXK zD4Ct(1$Pl`Z*NWPa!-ZyHBptgi?m;se#|}fK~BE-#N-D!Ip@UW`^Af}j~iRWPYovB zy>7r>iB_DLejgri+YgkR8-L5(Q}4x%gg#zz4{oSFUV+n9oLHPt6qZVbAU>UVDOU+#1l=Q|)r=q`q#o$*q(7y45PTPBYDIi@(((x6UxPTH|jmmRp1D zTk$nqB)5|Ky45VV&OG7P7UH|d8TWtb06uy)Dtb@UkNTY&;`+IZN-?*% zzvx$vGSOt%F7#HmI3N7NU5w{r^5o zb^`SrMyVPj2KHNHM4ybAgMFTJkMIFh=_xrXf(~zgkjvUD8X+3Agtvvc)v~bD`91TJ z&CzH;a~{gW6g9RB$Mn;KL;%Q#4wEyU3iFERk zW6FdGy1o`RjNrOz5WakT<#h@M2-?aN2L2YaJ%8xgBaULO=ZzE+U#;6Zcvt?Ah6zKo z+Wf&Jd_30(j1mCWw=luDwWFNQIIcxS93fPQ=Y&B0T8##Zh!cK82v|y6IQMS|MwH7{ zTsYGobbPE}0Hl45=fTYeP9PG!hMX->C)KWo?OS?~-Y_-Xf*QWjXALV+!xvTMWjMUv zAb&dVW8fMP^k9c62d}M%O?5Ie{NI$wEv1_B-^3)7=W~!gbC%Vjz{Vi8ZljkS@Zw_1 z`6qW>j@Ck>^S{$x4l1Z4g(7B7SXO-zXZ%G3x_LB$Gg{Q?9L9;y_e}hS6EW$EN@Mdh zK%0B!_^mv)wP)hXlDM&F;w!o=(Gzvo;(w{0nRd&QKkb?L6Mj;M<)wkp!cN!9S{B_n z?|w0HO5qN3?tm zI6|(fU=Vu$WkE^fi{tXgm^LSNIzfK7<14W9fMS{;JQs!||8<*30A9cq?sL+&O z9G|GO@AQPe(-X#$A6RehpY)y)x%5oHIUqJXg!0&LgiPDA2Aca-Yu7Q^5cy>q?;4!5IHn>4S!jCwSQ^Q zprkbhg$sd?s3T{tp-#)q-ve<}>k&=06#Xy?z2^>P9F!@tl1|lNNzX__XjrP~vypdp zGFReBT|%ajIDYqp2Jy=wrCf|J4y!=bwb@xyFA;Si{q&f(P4LgZk1>9c$>4 zEXu}mix|y>pdCFG-NE-CiGPjSbB;_rU=8Mi4|Sw*S@#Nx6>rPa>9f`yI;1$S*!fKJ zQY>JAuLhxq)}kd1<~p=SEb}CU)XB$fO1rpTY3#s*(9#XimXtuB0Xk|MPWz}K%g&6T zEU}p4{CSq>ZNvw&k=m2o#WZK77PQvOiKdA(YK4r-h{CUmSdDw><9~%|NdZtOP8WEC zY)ldb!oU#o1^6|MMs3wca20}f#f|cr^LCAJ_?kYtgXRlS8P3C*RVq$6;1p0Kf7$M0 z!Y#v{7K$(2XJLj-XHDvfP;;D&*8`nnjpu* zm!wTcbiyL9&Ic8Jk5>+*f66PFv!Zj?2(cAE`L}y`SEZ0Ga}3GiTauM z&ICdiIWx~k%{ljfMY7}^vrxasHH2<-9%r6C4J#Eo>#O;FBS9Q5Aa^EUW6e7Y@y;Q1 zgA?z(!EWcj>~`MRvp+vU4LbZ@MYGayipD>#;2)zyV-?Ow#pJ`HeGULxwr_nqcI#8Q z1$`7^NS|*AVX^O5$0Me9NO*$oHwlxP=ZC!~{(96rSO2^?wHXu0|BF5e-7LxR=3?EX&5T zX~b@pa8IT^Zo~lPGJnR~_sR4V_b|FEngsX}?vZ6Yh_a2p z`)PX;&wmq59gMG!M{jog;=OoW$2*SMJL=KTl1@M(&LH^oSdKC9@#Q2odg= z!0;=8Bex2r{XT+nt{nEGQa@tunoE7&nQ64AQ0H4i4Q`LCsvE2A87UQpz+CFUt;WFu zcP5%g;o6Wd-eX+wy}G(@O2MhiwNVDs>Fa#Elz(wj4vM4tDwvR+v4YEsx%awo3 zLMXZh=O~Y71pkJ2Nn4ioW2jKE_JS8M2ti=bhlPZcU75slH=W)IzmICHhrW+5-wsQ2 zH;Vd?H`VC*)Rc_JY~RV-FEoB>*mW0~S73~u?r)~dQ;TMRz^6*Q83{XfGFUzyzH72H zaDPe6v}(Fcpda<;3B-^2l|~f+-qK}Q*%dSNOdElKu!qevqowxVR6T3k{6IIQnw2uE z+u|*}3h0nS>_}>PldX{TpgRv9qvFH^^yon$?!5E)w*p{%meN*R`Y^{JmaVd#nwrr? z7Tp}4fm(gWeN>^m+(}fvlFkW10@I^BWq&gFao$6kt z(=yd^dMDx^XBcaK6W#7C7OU$b?#G|^$0l_c&An%l|F)}f2us&HtH>bGpMQ+=U2X9~ z3$yq>)6+jj%7HP+cjt=z3`k0Uq+HH?rxN#&0J}#jA5(Rd!bCk=?F1?^jy3~=W8k5Odgk1ZoEB7& zht&jizB!AE7}hfdrXB_;(3z@N%62I^Qrt-Rp>?|)F*c1bi>?l)lu z;*mL=4n-HDW+$~kPq9jbBS76d)c4+{>bwQfFO#mVg&Y(hsp*zyxOQ&oj-btP#y9aU&WrSDe-V z(1vxrHX-v)iP}YOfPW;>sZc41p?qcBpI9>V--^+>-Kf;Er|?T}(Sf!Bm6J}Dyii7M zMT>7YA}Vwno4FPUaonK!sUVo`Hu4j| zg)Hd_dIJH$zC(7Vqr83b1dP7V)OD89=c`!REUvt%;=KDbgw4$EomEg@!@|65aJ9s# zUrz8Swu!|FUV@rfG#k(4EB(B?q^s9sJ=CVYz;&S0$RFCaDDDj z>9HN-i(VG{27kZkN8Ebg40jA zSvFX$#qLw+d*LL#=ik&;4Mu_P?$2diwUjfghWZ0hNQb6s$!}PW!1z`eD`j*Cvj^W@ zl*EsH+<#x9-cl!*?K+RH{X8xkzkH^Oy;Nk^Q|P0P6JJa%n%&f|hq;69zYn%5?FeWogQ+^Py;?{f+GrheiUBx~psRbpGNSX7rp zr!N`Vv}>$ajm7M{jQ75vJT&10?)8fQ%5BP(K)`vE^Zd^?D8CGGw)G@W;z=7JzKE~; zo_}by@{Yxt`>7+9g2@ZC4>>QA&qabJEAxD90Ot*mB?-SlpcD{``YvQ8Nv2fS0D>v0OD8KG1=5bb_o+bLtq)()?SEw%7Y5>Ou+ z{gGxt@Lv%Vb&QyGiK?;6J*x368vdsC`hTdA+v(qwol874U&HB8@IEy{)!aXMh8jWr zHfmuwA|Z6s$^8)yBG-u-*9xV51#!snA_l~|)T4ao%T@YK$kepR-;^r~59;_>)jU`a zD^g~7T3LQ&E}If~>P`?j*-FV(0k8TwPn&#WQ|%hUT)4&J%4B8j6yr5s8EdT-bAKsZ z|0v6nP@HJ(#w;zMS?wx}Nib?fcP9#%fyA1H8Mo_z`o0iUtt00Q<+^r}O=^`D&1Xr+ zK#Wz^G82KI%neBzXmXu2DQjNZjeCq-0XXF34hRO;mJ>(o$ge+MU;rAvsmFYIL8c)nR6KRJ0KMj^Xr$jF7)prX4|?@xTLwdRPTztXjklGFrg^?dv@JKq4`PJ zuG=yf>h^iq)D6yuQn!DFd(^F6>h@{a|7%<=bG@lKy`jdL!x*ZM)Md zEGDoI023sM25OkMd1Cx!J5X3+rUZ?4vS_jc3!z(HCw}1#ygXrko*d+XtudiE7Sh@8 zDGl8+m*?R&B7!K*g*BQ7S}Ab)2$DC&>_Z?1qfkZ!K?NkRKw_~d`IZ^fOn4;i zNRpdiZ6w4fEi8cXG#K$jx__W^J?tgx)EjyU*Q!9ZfD~I3jM`Z6&^tJLdW^+P>jeeiG&({p zw4oyn%#mkAU}I6!=PajFQ#n4HS5jgoP*`z)DE)|z^BeN$1%I5U0%>|+r{M{~ z;2cFG2MhXv60TCu- zBnzNZQe+!B>!>-I3V)dmz9>gO&pZ4Ou040mVHJE>aOov6i`qVivqWb-&8-LGV3?Yc z=mp1{I(CHx3)F0&RTff0u^n{)8dGbU(vWnon~rUkIwCHzH1G&ILRD1q9Kx3F3WDO* z0NK1&7a4F32ACC&FtvL{yJ87Lwtq|9j(8!DlzHkJe9RoU zLOF%*w3h21){TC0W&X01!ZR{;N4v(*062-4i0WNq)}}xmVL_&<2{OZ5PiJJVplBK_ zC189Bn^oX0(A*@NumnV~RFwj;0H^Xd0Smed%*R;Rc4F=o#{B`kB)dr%MbK#roa_;v z|9SU|BTv42_jbh2zNdsHaKgJBo5y3Ayf zR!ao9Y+h;?s7Vm4KU9GanSxa;c$jD3Hnj|J1dRw>f93&AQGuEb9-sDxKc}6pIx{OR z3L{+jy)?4L^rOenJ1EPCVnz;F(t{?eVx!!csBMd%Y0qL}v(t@Jjfo(g5=Oal0uDn5 zjpWaxLVp-jjGWS?vR@T)P1k&klcTNsOi%jDsl6Ons7aK40IRD6Zfe|3wK(jn0IEz% zcSskJfwa3Ol9)Dvl6dr7=ROmQwOt}Sue8r!9WEs@1ToJ#8SM*wnCG^j5@Acj8Qh`6BGgT|#Xv$TnS~i2@qVbBG){ zbbm1dLH~yHZ+2#m7M8%Ge}vQQ?8^nA?;e$YKNl8FqLa2F|31$DBWLC`tUJNF0TFN| zcPV{nET>&h2*(C(P&P#m<)9kBX93ETd$&tyxj1&Se7Rd4W{%OK#9@Y67X8!@{-S5B zeg{e(txD<@G^y+C-qVU+y)>7Z@36Z6B7ZfB`n{*^Ixrj!oDFAHF1n#D4b$OY302sz zv$f2#hx&E(%#01OSN8sreZORPy=j}h*GTqxm{T9NW+CtGYKhABsA>H4`>jdb*dK^- zu8ZDn-GuvVgd*sP@Sr67ITNRjku%h2G9`YbZNzyiNLF*8w-S6%xW-z|{LzfHoqsPh zGB8%X#8fN;h}0jet(x}Cy4S=+;I_?P08YgMl5y1kE$Q$x6X~2T0rGUMQE4M&8Ot#x zH0ba=>{zQR+!JVJ+fv=i`Pe&3 zkalIbfRZG}sU%11DPc)BIM55^GEhNQVUS1W@TEM5XjgPC>i7!>S8``m*V5w4ocMZ1 zq=;N~IrnrE{lvWPDSlnzdwMuZxoFt-Y78=RX)u7K*kt5`Cu8Z;|t>%wWiio?1){l(K0XBDshydZ<`wak!uKi zqr1%-sT3YMaIf+i-S#}4Am(y!qtY*8Nv;%o{}g>tObgbUZ53?9JapeO*=+bu7P&KL zjN^$z&dkcOQ*zriAjMb%&wp(B=zKX{tdNK~Q0=u~?C|>zua+GzQ99N(QJv3J2KG4C zY4NoYPqvWgfU?Y1AP|lM2ik@x)`F8(@5i}Y)K7Ej;UL#A0}dy(ez;OLmxI5>%ug5R zPK*wn7MdgigG3NcBGSi0u-$vmRYlHWIQH;d zNv#@lO(P?-kWfz^vmH=BL`;S*f~W2HE2%C^d>B|j8r7vO?R1cvqDpG6r!$x6T7!76 z;k}XmC`a%ZTYm^GVPVwhws4a2@|yb#-^^73<8nQoMbiqwCLAZ5f#|g!b#7(eWq+iA zXKhGTVg?JV4ybJthEZuOGIU*yo|qK^G3tv|-UDI=?}z%h0#e(lDPWiTStS`JLtQnQ{tPYrhNw1< zXf8;kw;e0ioBjo5>Ci`;B_7_lN>r22rxtvNbAOJm(=!-@5B3(}J%ly76+4^s8#opy z1ih-;9uB2SbT5*aCv+y}eq}C;(LjfxP^r>zTLIf3oEmn>LjqX{%#v&YqpE-!XVtJo z8hQXb?FdtYn+0ki6GJ5) z(|^z0bxI>@OzZATu`i*;Y1E&0k3~F8iJ7ysP;!~b_|Uq-l2??7_HkwbohzZ0YLx4| zuHeG?GAEC<%bdJbhr0iJdu&eL>c(lfcvkFdOG3&M2`ezyB^LB@e)N;}q~6gmIM=_Z zg{ffT<_%)skRpMVn-GH--nagI@_gR5oMZ9%N+BUmi6-w`ko8Gma8 z+=r)#l#_v<5|XM@FKX`8g@3Wt<0bHbd%aY+34U&3mz=2$JRsxs+cp`mEeSGSZ?wh6 zYfD0GydG|q@j9S-j@NJ6`Wml06Iv*-MU!=)9a?%V*$wAa;hsWIFJ5ZYPNl*p1jgeC zUqwV6S({f$16G*jWns#fGBMaDcz>hm_IcAWYTmX@BK@I4Zh+ zTGNrnOXC9`3tHPzfK_VAAxeERJbw78m97x4jUC}6e(pl}wQf^!!m1W3n+hyCf0!{g zKro0p{#>Q~nu06E|LQz`{CP*}IPQUy=+S7FdkQ@1A-OjRmy%5bQURt&?|(A;Vl`EQ zT$M^`DY+6N;Uy+ybS`raslxHi(K;2hbCtC7FCA%!6bOY|h58G2)8Vwi1+^67p;RuH z4_dsG-}C`O2&NrSRGLOhoW+X%8A&roNs!44p|{!T3PD$SMLDfzHZrkFB7%Z>I!8`o zK1%2mfG_&E9kws#-z%@M}Wz2@korA$j+;E`M->;kCRz>y+WCGpvr-?TiDMni(-oavY%Gd! zkUMZA*tUIK>W{$2%dul4_JW~Y6Z(*uk-ME$GXeBKRK?|g;3($uf5PQ|3n2imv(FKa z*~(oD&VG&j-zudc)_*|tHz<9eBdV7sRna6Si77(DmyyJOTqXmMJyKN}8RMX8{-JiB z(?D);t?LC*3{!>Qh+19a&SP|92bw1w|2ISL{GCV^eawT-?Qe_u8Gj;Z&fKfb{;Qzd zb&UjZGyU>LxSS3+t7xHrHbNAhWrl7>-7J zeyP~xaHrC59jWjq6bQ)34p2Y5s8`<|?Ypg9`3V%xLVQZ)Dn|Vf4=js$R=c9|<~oQ^ zx!lmn%)f{pEQD_=_RGngo(nZR70%2QN3yGIedlQ#)s&!a9csuk@DLTt0P@XyI+DTr zd2*PeeZi4K+*Mum?D>}B#rh!#6&i7cxkZnO`%{!b{R*qI}bV^Tu5&;>Awf^s6KON#-4m*hs5?hI_ACu}B zVp$%d7yEin46ayWaD`?mx)0Lf8~l^*#II(**=s6#bjdoF(QcT==`)1sJO6)4aO$$4blK2m#WLLDn=l*-qo7~p|4T+#%vn4f@Uoh zTW|n<2O!J_)Eq3lDTY z$1W9s5W;aB!d$sVcfq<@ur=$-g>}@9Z_{LFDG>*YeyPHAo*Xjv1hB-^2J02&asrq` zi>j}h35s8z22`ykzlk!hJMKQf4P(1^Ly8&0uYG8_EUvt(0Y|)w+L$Xopmi_HHGkW; zJzCEL_lo$>=>G!Z+sAU+h$c~Y1sf3EbE9T{*TpybeihiD?i9U&Rs)DjgjS!MD#7zS zx)vMj7FDl;v8NjmNsIcgFtXMD;6ky8z{R8BaW@A=T3i=|9OgbCLGQFtVvW+MyD4Ha z2n>C4WA_)!p1D3K+p)8WC?Jv;^nYLQM3ht4JXP@+))0macB2P)QHRB(=rl=^+3cr&rheV(EYVj>BGOH&}wW{uYV~6FDruq zo@br(T%jnFe_`11{qg&G{Aj7idJWWY-i`C){}w zYN1Ya&F<2{?Dmk_Xm^u6K33t`X%BRonLKH0-}R6o%vU5wJjjv z1SM4oKEw6;L}dlc=W*k2&VNiCD*)i#1n;~idAiM0xLQQ&?}pojF0_t`+G)(3gbQ%0 zw7H{R3yV_PyHxBxoi=nZAz&VP3LOTQC@IOf{RhgCVVus1fz4Yb~Y4Xc?*Z*f`8fp8FEkyikvI4 zum)uUZ-92ogO56M)B?2*PDTDWvs#<1?uScMHgt&EX)GW?-3~S_FjH%IkNl0IF~c{| zfysFwZ8B5#bi8!n67Gd5G&fn-fXORgUH3lZ&RlY5euJ4w_W&SsOrhEJ;^RrfKhmRk zZ)-KDzNG*e07UIgt$$guL48A|UdeJlf_b*4A>ntT{3KhqS^}a}D5wpE>Qeb$27L>- zRK#NAe%Kn>hX;QRTLKwhk3HM7aoX9`AXZv>2TEb$)-Hf(PX-%8{;@LkD`Ykb(8uG_ zr!P2x(Ln=D9jLZm<;e@h9-9|%h+A=Is~@j@U4)HUGtBi&H$Hd& z*1Wh$c*chJ6^=g5q$PJ1HIyrH+5*HXjy3jU3s}fB|AKL8LKP-=YVsb|MCHW}5S7O$ zbDBQ2L0hSx=m3FK{bNnIG3Sr8wPHLK-38AEol>v&AEd5Iz)rb9ChEJ+<9Z=Ogsu@w zJj6ub?^oKi4}a2Ks@SRosR48QZo6rl;&Z?ZZcvM^?rPq4MOB6}m>N`|0)J?Qi4zV7 zQG*}I8Rz~7l`#jOXBUcr00ij`%=5L^ZDwpDs6D=zkCx6gDZXSqX-8?nRuNTnG=# zeVxz(U&|!-K#SHcN-`?_jpEfP3fQ*Dh&c+-G-C4#xuzcN9)@$?*^>_Bng)` zIFn8nuB4$rbe;0qSRe-?*;?B`mleS2#!k9MvWO=Y!bF+WlSM62E9Pm>Im)`NI6w=o z~o|lEjzP-E_MKySTuH+KJK2a0;NJskp$)|1496?2iWs|LpR44YYr9b zlnX*iM|S`EZCQdyc}qbwD5)hF+mXMh5t;?AFQ61{)ze2iPRAL>Y8gkZ`t}9I;zQfK z!uL!Zi1AkOZlbbkY2Ce1-Izm;?)GgnX}@;-ueOjzhwPYoU)I2D43A#`2~7n=;Gt-e zwtu{NsRJ&a16h8g6$ph(O=;p6^^R#Oz-p;rtEOcE@6x^d@1oRexZK z$d_^kWWoMCP&-q>z3dq|!%df+)MCcPf)vz%0GPj^;hB(NA=x{(s@&X4T|-xpYCiX? zPK38jqMthUii9ACqDrHq+P@(KKBeUF|0XpDv??rpUh%NZ%qxtw-D>k46cHm`wl+PY z5YR|%RT}ggkdL?1^I;yrCd`F5n19b3NDsKs8T6Q|xbIuE-Brv3e=l!OJaWHxcj~uU zFVZXFGW%Y3BSVGtgJ81 z=^D#5IS%>B+66bjxK}}a{uu9|&xH>ugS{c(VL-hV%PJsi={^v*gU!8q(SOR9Vh4}S zki$SIId-Y+@68NW0^X6InPd$W$E1q5-j=Zt8@TKHNHK?QtL+~_rM+y>E0EY&ycMN1 zdK1{P!0GGMS_@E^8VKE}|0Oe2`f%_}sQlBI0w`sMozsFAH1evViFI;tXD44A`$c;s z(vWyB{?uW2!=LRfF}^FV(0?Z)y}RLid1B%t*$?(;VVC)_J$5UgbWkTNVp?eb;k+=` z(p}sEIK`}>)@>32g=_bas-hdh$!3V?UoQACV_nkq-KkwJ36R)jcjO`zx6Rfc(w`lj zxpb937pv~2a5-&t9iU%^XDC`qAE|iF4E-}w;Qm%3eY;~DH0gIsNPj9`!)K2cp;e28 zIP|15aDG7Z_gpkV1(qspBL^hTe%Ntfqi^Sal*{-8N*Lt4Nu@|ssucT)h4sdHQ{o38 zWcE>|0|r~C83DIQzd}3Lrig;Hf}DGqZB3-%EgO{fi+V&ju0q)fnmF5P87Q5WG9{LX zFi&zr7F7FMsAmdC;eYfH+)q&~Pj|j3eCjy&0v5+Eqv#CT7QE_a@alE3^Bo^dYdo;S z%Y(7bFO;^ZrH(9Sxv=xr2*c*{`7TsP(18){MU7LZMhyXt5~NR}$y}m`hOALEJ57!H zmYS$MbdJ7~^UKVuGw7UDTtfsYp_5W!lY>hjZ+YkpJFlNkf`4BbqQQD_IousCw_FqdrKq`8#UOJj zx|HU(HjU*OtOLRT1|4Bt(ljh#ddtHU+0+1MhYFgNMEe~^OEh1MJ5(xD)n7!CxVN_p zPc6~m#ODbU&wnXidJtot&w~(fn`<}A1(!h^AI{QZ&+V=h3qsmh*jZ&k>-V8l zXe;cZk|DXlgwEQ@azy)#kPn-+JM>#vxwwD;!9RjCA%8poR<6YIjc>NjGToCcPpQj5 zoJKOGsg*G0T#K1piw>q4yRkC zjfpCq41XJdc>#YHvcA%u=HT}rrT~lF-H(<=_9bpcq^zLPQLbJ{)^17K>9&|VXp!GX zxFE5FTz}~9PaB+Y2`+V?LBEP*An!@d zYmNTtKHH*~J61}>F0c?rk#>u_#eFs%YfrJnTi((`577ax9myTwO8kI zMSq}zxOk1$>TWTuYBF6v+&z-+>{n*yMY<^bdDi^JdB7xT1>Nd}?sR%<(W{bJYb$*; zBcOdyw2f~6G8y<$%Q4FsMw3^-51bJt|d~kn9K$j(%34w z6zwctvP&kQdlc=7Y%(*;L{x^}HaOMZa(}>A227~d)_QutY5|_ywRB-wtm5fPyY+!B zFRiB+9d)p}L2VNSehrkoR_PevEJ{*%leWF-lu0l0)d*2m1c@L2D-7{X$vk}~PLlch z2(%;P6#Zin-0Vg%X(n(Y`xBQK4cMd2_17tSI*~;nFjT;{tHH0$-7uX@%zowI zUg0G>(AZN~1Q%Xr09*6xCAy-7sk*f}t%uE~;;f6*NY`u(Mb*Q#Lb&GqW-HCKp zl7wfE*!DUSn_c3lk8sC_RYx7}yG}ygf^Ar(Ddm2cF)4$=$<2Z{G!06XUvvGVgm-E! za9>168Zg5)D%dJ#=O_vPt?18G%=cDx6sYvEK~)5Gu+DZv! z*yzAA0TJ(@vs1bC?z0XKo-V%jtWSSschXhN3cJ;yl|bvE)$^09!2x^ zxyM;_R3bU*+K5=mwBa|7jeipM)jC^c&n;zoD=ue16aaS+cmhVHBUFZ=P##FfKO5mb znI4VqlbTm4ZSySl0YTED%#xv%%z`G6(@4_??~Wh>E*Uf5-mIhKu=5}nFs;IF@K=m=BK#>ft2*A zoITKO2_h~2sV$jSB@F8>4k8f!we1jy=mI}&O$bqE+pDmQr87^^8iTsh6>{J(rq7%4 z$`p-N5ABKPJ-tX+Dh;qwZmGcLfM|O@I3#nPfQT;8wQ2&w_}%1w-~(TN1tM)*HKpaabjzoG5T`>(p}k zSF0d=zH3S3iAtZZ$XDr`;PcI*+rn7_ZCM2S)Uk10Mi(BSLh<^V*hR-%lj-?{oVeQ( zB#g!v(`RwFviVky+@kFF_!H9rm|=87Te6-WSu#B^?EwI~T7S;-wI&D}b6$5#+R|tj zv+7nMbviSpOXo8CSF38SiyE6?1j$4!q-P*qmP3s=>T;zaybo(4S#S0=T9}+jpE)*S zTz)6wrMHqc>fpA&cjR>U!W|MShQ%>pJo4P=-C8DEd+B+J(m_9VbfuzjLQ3*~BTJtpp!#(#+xs=P*^P&ec(@DBgFjkA7^riF^GFCiBas zLts+=eShbY*cdhP-REedRH%383Y*Iw&;_4=FvNu?a^msd1}=DqbE9nM+XiY@1WWRZ z&~@UUdkZ05&@mv;>tY#f57;k$&~;p%11%P{-&cL^2Ip~m=K>2>Bdq(C;_DDl4+`R6 zJq^*62xoNRywzYSS3BP{lej{C$WwZ&T)oJZ{(ppf^ChRv+AZU|?n~*O>a~U=OVMi{ zN_Q{6ZLzA6;~X(xKI$BX=#qCtvM_VQLH7uH+A)k7pGy%bYo)u8ZYTX(*STF5prg%i z_Y{jBcNNPkUKc%`_J>@JL-Dg=Cc04!5~d2Tp%vSRZi-FkEdFDmcx79wJy0XPYD*EE z3x7aWRtqkz_T{ZW5TJS{=bZMma9}W@uGMFb5RpH1uF*c0mjTXP*rbXEIYGNp>Ek^7 zcekc_6$+O39RdUA9!gI}KE@Pl6xnPT03rdo`FhVk1iSk@42?5n(dFiQ8S*c6wfx}8 zC!cf=RrGdvhr5IZZ*`Zt{@|p>&&l8E^?&+&!6~J@QFtc?Jsxjrkq7^kUK#XEFZGV% zrCCbuveBj9BHu(hCADe3?5l+xNOGA0bp^Lc~(FTZrKCpdU$Uhv#fM7KVxbA8a4 zQOo7}N-HZXedJn_U&}A?`6kx-yk1YKr`9)^zXz9kh?YE_S3AKs%Ih6fnp)~ZmVXJp zQtt&`@0eO&X|1o4oWuAx=Nzz=AFlNT^L_jg3i^T*YA5=1soq*&FnDW_1}yPy+49U6 z{41q%%I@-^y3MYdWBC70=ZSwi|J(jPo#63$poVaF2D!FDZ%F!}a)Qt636g6?FpmjU ztQI%2LmS zTC#GyFr)PO=%gI(G~Yyioi~H?hl1m3F~B+KJD=}jpQm)RHH=AWZEEcmqfkbW3+L|j zj>_QTg2TA@pP&xp+FHcbuFUg!Jp7`f(xQCtD4%ak&|8{^YWR3uioB&oTz}J{zA=^g zzG-+V=7P_6uFuEA9t?8EqNzMY6F51~{^M(8z`siUPd6$*SX5M0T3UKV&|DYke^YyX zPc!#}eHK!x|HTUNUTi;xO5;aRe@`v)PAlsB-&Fezw{phX+S;PKgGHtIrj#|MybOYr zlEeM8gy*NPYH%K%+_E7!g?}$D=l_`{^iCKR%=1!Wi_bI}^~lfj1>^qF@V!LG<5Ol= zR?g0^#55U=)i{`$)u83&|AKMb|p_}PyWTFqmYi@n55pJKJH6zhDl5H>O_xk$PjOEh{re7i*H}i5MG1$(35|N zU9>&d-B;4zBU}@*LSDNjrcPXwsinnUa;BC}D;@3e1V?*4=i;5PSoL~Sz20G7aMT%t zInA37Dlue;$1{ZQd4GrCYN!`=kXo2}^r*`Tbuw$WwDH6A5z(RnW~EseY5@pj*Gm(hPi9R!F^UwSs7t4D#r#-;m{B;W|?YSQB z^!P{>U%;DWDYs~pccO1XDU*91n4mWj^bPTGop^)B@2!33y1o>HC)vD_EBHdX5p{`N z5Y%rNx*m=5`nU?WpbdY6@pJI~cggK3+y?FuP4S#tOL-gjrpji=MR-c(M=5@TmT^ai zyrV&ve3)|lkEpEFbA@zG9$xD8)&_?JYtQ9Z`h4vK zaxfsJ{Nq;co1n*CPQPiJ0U;-#&9T>Y|K7hDjGO)~5J6(hZJnc2trElb>Bue$+VB*W z@=5peI)6=f0yNNa@LCe?E?Gm^N!IO3A1p!Hy`8_$fh*1z)~)w@R6wwV><82T{euVb z1IPJ0`>sxRYKeaoo-R_Pv{w}Co4@cCHJ`v~l9|_ji1(htz5HJ-OYNksBD!X~%N2dr z@;=gT>X)jo>aAs8Ru!~QL*Scg$RV=y`@yf+@0^&TA6q5-e?T?Xm;nWguAMQ_Tqxoj zyZ)2>y+=j&@E2E44$;ueG-lkQp}N-{yrG~3bi_M zj-;T4am}vKiI||qyudX2>8~*rdo)cCXWWcRS=Ze}o%89q1nH(#Jw~KZSFOaZTA>b% z7pvONFDTCj-Re1?w}16H^o6^#AGk_&=E6J&e{myF^@n+FfqZpCZ*g zX=ZoZSLuHnJM}4(o~+>!>1faGVZW*oO~_Gu_J4mVarqC|kJ20DPD5C-`=nDUAWGit z_Uzz49HykiO^Os{+gbJT>)_$;oO0(JZrn1l2GpmQH*`(p3_u52)AK_Q9#p`M;V<1Xdb2<~ zzy5ag-$agA>3UR1e^w}MK-*VaQuIaa`DLa94w`kb?B8_ML8aZzME!hN8J|(T>;Gr0 z(LsB_PUIX;+#pY6!S!2QCF_Fti#gO$EJ#u#08NZ05cQ~EzI2;a_V-bHko&S|MfIpp1TsRyV*VWIj&S_JIJe zuv*`KiQ7es>M6C8+@0L2np4rvH@{{(YwDV+8|r4w%V?;+W?uE2rg=3@)ftV8IY)KF zS7>sdkAKzv>hs~I)&=&nIkTFZ>aTyTuB&dC)l^+I$?nYs17p3}Z%|^_F~H|*91$v} z9N?V6IK!fRxXaUf;qpqA?j}VC;mZlbQ;aCa+U^k$NWA=#qnj=oY|yUCR^%@pSnIN{!Te%#k{9Xk}T z*EE2!RcYTH@dZzCTP@n}+O5;L5w2mhCJY0Mf2tDh^NC$(*pzbfjMc?yYY{x*;t=2eaQ*?hv0ebDPu8@)kzRQ1|Z)HogUn`p$3*2PU6E1|?jrm@1zq!OQ?wRn?c)tt4 z8-9Tw#dXGyLecYF7X3C{{slf172-pY5~8cbhhijrC}5Q^0UqYhOFif)tT^NRClEnd zK=++Gv=|p~HZNN1EE@&$Vi+LOq&2vcFURDkR`K{CzSNmHeY;j=$GLx2T>5XWi*~K56W6LN<26meG$FeI@`n(ht~|bu^lfKdoC8>Pw*wdfvnPrn8;2h~ zv36;FG+By#&jBM1zI>HF!}0M=XzSY!*s@=wYG^}rk7}gfIffDOpsa_ZKjP%TSe8~f zQ|Y4!`mkAs^i_Z}8_a*M8f^_l>m=$b_pbz?q!)TtUeQBNkVWe(PTd4QF+e88ifH0N z^Ndv*fG*#78(FZdO$Rh?1)M@pfma;@fOBEvGEFy*qCdDKFtS9m4`4&PP+dHg-ZiN| zuv6s>dK4Wo>38)?f6JtA?3MneNxwIiK0yd}LjetkksLi3l?s2oCP5Pczj=>Pa&!>i z-K6jSuJ5~d>bvjteRq|<`)9dJgHvI4lS0?QYv;@sLHnfYwcJ00VYTfyPr`AQZq`p8 z(@&nl6RlR|>Bkp{VaPqMI%(A*yHzl2k`iIs+?vK+KffNkSqnA!>GUOvYG>#doWGa; zA?WleOj+?Tn7Myn*aHbC))X~c7zo20euA)k+b8L#6O2(d483gZQ}|!NmEkg`9+P!8 zcZ*?9ro+35c1M7NKtB`1ZSmLM#jCCYj=N>TZUVb9utjwUCCvU_P_3rlh;d6cZGlUQ zpy2Q?{$9)9RjQI+51W;y=mClDPRqmH6Bbw-AHh`yi4}haK@^EkJ63T1DyVjJ+!p#2 z_II3-GGT+FLD>PHT_ZLbAk1`QcvFv(|L$5r&Q6?vD{b~_@?GC6-=|!IM|rdt!Ju!A z$`xb2=2l9q0`z=h)i*{{xPZd`?}b1gcZlBx-RCk_%uC5d1v#teuN~#IjJMRI8X3sG zq=8l9&7*(UFx?jhrK*v|5YVnvaOh#~<(A1A;^19tx_4(d%kIACfd55La?d`;9rHRp z5l*r_NcQQTeZQk;&#nS27!rH;?7kj7drNr74DQ6cN)5=vz<1DTWOE0rCq@AE&7#Xn09xD0eOwIMm#?bNla_n z7`_?vcjj_~}Jgr=ssg{Pcmb)~V_BqE(OvfsNL8e7I#BS3)qw3b1lye^ zM0_q9&m>~+N98RzEt~CdeGU$yQ`m$IfY|$ zBjlq1>2rtPz+1PhvP;#)v+nyrNyR6;Tk3fLPcd5xpq78nm4xk4 z^zAQx_8+llJxYU50bAmE6*!=*bLgMp?k0TfET(-9!wbSaK%_M|^i%#JS?poI&lc8F zzf@SeU0C&lycjPoru=<0F@ym1K-~D5+iCGWn*>pTUu;d#-G%?QXoexNN*iE8^l4;@ zXN}SJims4cFH0onR$N=~Us->Z_<;OgCciH@Astp|tH?FXSVT$`qwCazB5w>vg>R!e zmJT1pVuSp%yWOwEk9Rd4&^`JfSY6!O(_RjSy$k3>TEKVHl=r{*Jn*pg!+pk82f39q z|40mZYoHCaHSf?Z9kdF+h7!F`t!H7p*3;p1?i8g;{nu1BR5vu#H#C2mudkpWF!>iZ z%vxY_L;l}5B_{u0ILNqtXrjte|4d2%amGqHBU4WSXbYd#TD3;CldD>H3M&71=YOCP znp0m_^;I=N^JBICA5k>TZ*Hn?`Kp=g>*jprf)~`+&-*%g7dBUa^;$PH*EQA5|LWNn zf30RNo>kLyZ9{$Yf-is9AiW%l&7j{p20h|-JuV0=Sd2f8*6U~l=~!A%J0M$F0yF>u zw*_hl@f`NrZhV3tX%P(r{px@-?YC6AMGKSF<-8)RlU0f+Qj&8t73+-pjgz{af z{M01Sw)J?DrW8zayWt*=y;=xj(9bEH07P6aO8l12kxbC7T&ls z>YotgyifBJZo1Zwv>DYX={ZN03S5ZmT%9E+luPFxK-f&Pq;}~}xwA*7yvvo&4Jucb zV0j8L;+k9|l_#~pQ4O;QgFIc-$qk-ov?{hcGEa^E-~ z5djVW?k6DL9>55MRvfN=8tdqsz2Y>BN8gCVckX7V^wEDs=p#X5M#tXBOuO#crB2hc zFGu2g_F-pt&l>#Zxu3_nHYp@nq5GvUi>{qv&n_hxypmXc$ev#ww6=T`ex434$d%UJ z<@iYv?(zh?%jKMamPFsT`~08G{o)+J8f2Y6iEk|Blojd^J-U9rpH4SjFKmj2LpY-S zM63`k2B3cvb;$Jnbwu~<{Z79W~TQe!oWxz#Vf?ACSRGTe%GMXByL69kG+#j5F={=KF*}K97}A#@oe>u4gFz> z2N_t$N`zReSMya$P>mg~8b_+hl(1V1MK|ct`)PkTe)M*`gbD~~znn7xrbq(MNqN|w ztu6c>OdlCt*9hwPd$KK)C^4(|Gx&mKo#Wc?2JHL8F4e z?a6=8CP*wZAdn$Ice%5NEnyaIIzsl9@$;8v=3XTcFKZMn;KWlAMm=aaN2aUu(`Y~$ zlLAT$`An2SkL=)b7@{~g%g}i|;aVhUeHb2=)^HUVpFbHf$8{_cOs_LTlc_x`ACoES z_w%#!;O#Tr1OlLwQ*RXiw`=^G)bK#mswaO{x{)hVv^3~Zk->vLWY(bShM!bDTi=d4Y3=^XCZyTB*>Mj~!L?T?sf*AuNA<04iRH*7JPywqqFP!Ck`l@@54Gu=^-nJ%yZQ zQkpx5M=Vd}<|++xKt~*1bZ>lVf}W5fVE}2N=!Y6N@xG*m1_)F>Z1wc4L!cji90l>b zAB&z^3#k8_I>z)ZJU+)Ga35BPNXi0H1tf+Ni8wKlFUC$#1=1;Sx>_avkTriY0)gu) z5!hZ=1qeY}j{>(9*KlBkQYN{ofW?gSaf@7UV#ZofX>)Z7fi_bEn!HV&!*%G290G0Q z(e8p){iM*P_e1YrqM}!ew|mOpy_b0vB)uETB_UmebDxl~lHt5Y#no-Z zc<)&6%#5)DVO}Cz{&mpy7SMmlt%masE_C;!XJDcvL^j?J7J(2SkO`A+!UiLHxb<6} zb3rWVMH=o*f~f?W5#A=rq9Kr^?ovT7eM@|b(xKiUD)!K&NfLsOE+_-^i9VYP%F5E( zEoP$vuZbcUCok!g@FtMJl4#fgyTnJLQsm3bo}^sDWDD5bIF~!XdzOC`Num-lg#y2! zUS<2nO9aOnp5s=5_C>8l@op5~#5I1wG0fg!w3n}q^dX31#y?#4kVo*Y610hTbY4p{NBYJ#jRn|-mI?KWDiQZMK~VQnvw8I75KxTynacAK zugi{8;e}R(%6TtC=<$DaSqC)|Js1Jp0qpfESpZ%H%J%u3<5CH`&V7D~0DAfW_VWs| zC)fywKq%zC#Cw^Jzk->zNa%6oRoq#;kAMHlZP7!KJ-o@RUf}Let`$r&1>VB4@&BkJ zSq}6-FA>gtRla@qX;}dvMB^!u=>tE=b9){X5dE2(=~OtrDinVk1A}DCzea-M)h8pz zz&hS>xd)Q=V%FoO(p+~c6E_fnr*pZJ1aFid8HZLCb<=SaP>?LtINv9s&E1KVw~tF& zuogsy&H+()Mvj{?HK)mrAv?!6M1eJ2jmByL2x~GB6H7(?wJuj>d-~&`I$0E(=jwl>{Z@bM00gjmsd_VqQzja-JBm82XU;tblMNv+b&yMHSjudk1R!%2 z1JdZxXgy7qg3l_G!mce~4q?t7EfQzT1Z-qpdjRc;zW*iKflp*xh&TV~nQ?!2#y)J2 z8}~00<4iJUg;jKB~ zfND&nvp4>qP!Fz#<}>EYu3HE~>|;jsDlVr`$AWy6$u(E*#Yol|1pS((4VJK^04w*B zY%5|sz`|Gsopu0-=oQqEL@6KryP|K_MIYm$c?*C1isdHKxC8$?p~VuJQfv^OcC2g@ zQ)Nh)kM)f*1LyILQW|zB=o_VnFIyed;eN1Zr5kJ#*piChd?ZnZOm43SXkfI zMvbkiB9Vr4YFuF*QoZPZ&r5&mkhd<2d!r}z#%bn#^I~t)FF{l@IwKPsdA5)|`z70z z)`WjAFn{&tPsdf3*Dm7M@(Mq*Ki2%_|8UJ;+c0avbv1Lo0!6f+m{;A@^p)(m><5}= z&7N1?7)Mh+x;aKkCl7*6y2r?*0g3#FU7*ygZ_K0%tFRUXFf9eBFblm9E*2=n1Qy1& zeIH`WSFBvGbSz$gWl6;Qd|^XjA;7%#jlzGPKso~YOaPVzjed=Btu20Dmyrty`VNl?i*jZzB?-#zV zMRp-QJzuDg(fEZ`=7rEM4a|hNMuS$^+5!nkBeG$o5jEoluYFoc^l}!j*M1*$YZ!lE zE4)SNs18CpUWygaExGZ7FZeyVs^Y9fN?EdAnv>0hh{9_{K$Gs$EwI2031<08siqFTVgWRS-77P4ts+tFfX*54tYs`oHYcqRt_E|L<+y|NH!ZpZ_O+TJ*D1{;ynq z7OnoO4YO#Ct9RD1a$}upwCIEI4%bEWrv;z84!USJfBkF#{j%zFZU)1bb|zka~HEtKW0yo*kzYk_d=9!6eUX&lOmRcpdt52P`D&LmCz zmb^2Nw@?KxQd1}h0VaDG^?T1eyer!M^s|nC_xO)+qzW)28fXeAf|h@SI?{k548>u# ztvuyUNdIo002rkRlLUKD=GnEdIa;`$3JaQfXG;(&x64Ag)Z&NqAgHV0dZc)^+p+O>1;CC?husP`pgH7q{p`_7HhCPdA=N7pWIvP!u~ zjiI*@ZIjkGhf)9Cn#+Gdm}2_1JPdSD+Unfvfym(+*JT<7oUc8mm}|LDa6(ZLWND4| z&ZJi&E4je?xWIv(cH9psjDGLjIEr>fFo~WKQy>6mA|S4Hv#@<4JtKm8bPqQw*nsF@ zEM<<^y`GMTWiEc()skvBML}Ms$R4^w3WTj#3G;*j<_*m& zkJ*#J#)(e$me+ibl+X~qCrRtj{|%?i=&eby|Bq)mls-H%nS z(jF@4>}Qo2_FHGcGL*?pjt<*yK`Bk`1zL!ZiwNddlS+Sol~>kQr4iwv(N0&zYTQ(H z5l$<_7|(|Foz0VOUOf%mIsw75d1Cp5id2jj>su|$q(I}@UXK##+)y4rQClx3ys;Wu zwD?sT*g^}j1Sz4I+LFf!0;zLrT&4}w#?n(UwWrOTjCdDZ=gK`4Y2`+BB+ z?>(bh(gp@WGsHaOm$7)W4d#Wep>#*f=enA1LfnPl_6v~}nnF$6(3Y3u&1Rw9E=k;sVR*aKC>le*6QLQTbITcjB{pTkIU)qM;$v zE*wrrxLy6YT`hLIR54V>IE^&znvUtYN`^DFS9_MhKAcNzEH~}>bg^j5RL!2tEZuDY5v61|gi>}Zo;IvGlgZz-QjqhYCT`-gC%JF>_w|{OD z9l#O%U1nv#)N`j#m0Sl6l80v;BA8%7PQ$T@$`t(dG_77LRr;9bL!T%NUtWwDq$#xB zO4Y*VJwbYf=Oaw#w_Bl$#!n9BO$u=~KW%@tQZv<+IPl=DmiJ70eeotuGfd7V<;T)! z=ZT8t$Mo$SoK%E;s!(di&0nlW@#k0`xbw&H>K&nMlUL>)ZfvdZ2^DFba|u)>KXR{u zouM%ofT8Jhtwn7uM~AB2&{T>2;(AdL?9!&%3qeR;9Iv4Gqewl!U`5-ZI1Tsem=b^c zC0AXXwwfLZ?|4!jWd3V*0ywf4zb;4Cd`(Tg{`?whr{3D^|2`&8*QasLthzXs&7lfx zmhEN7Ao~ECd6M&vLANqn7DdP?x@6yYEhy_zGZ|32@OS_xIkSj&j$I9$O;BmoUJTr+ zd`jY`hp9 zm)m8yF=cs~Rvi-6Y{}0a8A~ceRcX8(OxEGfcu8Kx+iPP1jn!5(m1>NthE|7}yc=}8 zx==^;8m_YxEp@_#dAVUPehT8rT+6_{SSzJm-?0KOIR*R&&by9OLN`XyP1-G_BU!9d z$ep9NQjfY0FJq$b8c8ojJ_moL;A!xP*z#+L0q!@LpdXA>Guh?pJmB0dTlQ-aSeP)s zRwt~RoSIX#AXD4)&s71bq*cVV1gR4HK3Gjlat*)aAt!A14vPNR02P;vmT~%T zBz>Ju+UzV7CreJemY;mwS=EMce5&zmNaLQrg;d-Gt*PD5bxkIHML_JlIw%LjE@qrI~yPzv*qU2w{>OS)b1e3jczwdwdO6Hu?kLv2`?yBl~ z=)p0!885^{yWM_zAh@6Qxi_XV9^lqU_h}rxBi?(s*|xLQd2~u0lhmYICWS!hG&Mh- z&M{1Mv1ZrvCA@cvSQ+TRqhNqwti@QhI{pqj6j%*eXZ^;#lyZL!+@4>mc|p-VPvNNu zFtM~s!^8fQ!YDI`=>I+Ab{@8|he+YHV?R zP7QByt=l(mq!WLm0Dk6~_udou790ck##k-2mF69H^5owB;I&v>A%C9U zJgZ+_uc%~3As;6HC-%@Su|YP_R2GeIJ~(FN70uCLG{Vz=fY}y;H7jODVw4}vsXnfJ zN=(i2qgZ9{>kuZ{M59O<(8XM>@ka528ZcaR0a;>?)6IYU-VpVBteQ4;>NI2`m1RCX zN3!gwU#v5JgH>Y3q+U3SI;HleD+;L7N6F*a=UhRxGy# zVY&dZnnIg;4WiZ?ky%LFP)WvVj|WLma&e#>i%Wl)DKIgdz6D8<4BobZ74VE?9wTxW zFlhYsbYqVT#p7}Z2$gzT)BT|xx<B| z6uy6^K-wOq#-6Lvl9J0HHT+BN@6wH8&mLCFN12BOw7t$@X7XR6l~)GO^GMpEccT*C9Ts*m=${!{o<)(Nr4IM zu_|y3@Dg|%*=KRCudRaVG`!IaiN38$x=w%5#aD)lzl-~D6kk&Xdm`M&Nxn-}+11mA zZl1LzG9c&HusibJX)K+uvL2E|)Nyn%m%PVg`;|_*uuHh9INXS)3}b1B!A@!rwMEJW zu&a8@<&)dHBrd~TD-ZHgRmdM~dY4(xV&qs3dDV3c!&|N-orE3iZ$9d7XAW21Jc@re zlcuT!HP>UqLI*5QBG;|vUU@n^qg6RSRmD@=l>!|krC9iI!#PY1f#D31Y823mBG)@hcJAdX}3!=awWpVh$kU~ z&;^Z6@Pk->q>XFrpk2orZSy9QDr*Ys-imUxzfy2R)i3)t%?xB z&r!Y5U#kou{HQ<(*E@au>hyncgVV=BWeDL%m+`W&qbO}bWu${ITSs+pXQk=j^VaC# z_Da*ix2;VF3oA_rU$-_L-0WU*1WLPlW&~07c2p17&D4}uXKOrNJ=1j2V4E&x&oo{9 zZW~J5;@+wh1Q5}vy(S1qK%b{ z#AdW+iwQ@KD8v&d_R4?G?v$N9G5bj;?t08y&oMMO$MHzj=dGQqqn+-Qe~ujP%?Wyz z-#F+Q%OIa#45{Qyb+}Y=1m5y6K6Pek*`)HR`-0FnlimRqy(QAC^l-^T|CQmM^ zC@w1FZz&a}QzrMGR8+-<%gVWOQ;cuR8muUtR8-Oo9=fI8vj2ZqW@0TH-DDPinkC6p zl<~`Q=kI^1^HP>Nn(1GPV!c~Z_R7+-DdUo)GzTSRMH7lDr}(HwvcE++K8a&l?Yq<;j2G~1KCw5&q@ z`7aM}d|A=BifE63c3wxhaC}R{FcFlkV?K}>YqwOp<+=Ql9tl-Z zg75NdMbnevQ#TE1u9>fd4}Q$Jdx%H3{T4J9d9{D~ejklqzF*C?I?)za9aVT!t7%#R z|5IH+Ra>a4iUL(6HX^g)ZI%f;YpYo&u1vW$je%+;kigA86!Lmn(JnY6qGk6+PpbrN zTFs9`yLwv3(Wnn;#v)G0scYvWHHL~hfn~UQBK2j#nvNX}r%@*`!BlPtS(#y=Fc3@Z+&VQE z1~ocBv?w^vIwUdv)M7>BaTm58ZuwT~g-o>7@SRL${sqmmdb{nM4f zAU~;L7Hf3B0X&(;*9!`KaQ+yPOkcTtj&a9aSYJ$mQ+hAKWeQDS2PjXQ9aVyfacUK{ zm0Ow#MLfDr8JF{5CwNivq}hrtEmD;1hvk#b+n1np0@_Fe*Tg(kN1k-lDXTLt0Ze~T z$5cgQyvV^;PN#OJuG`I~hDk@7PfkpuIaQc5BD8x{xb{<9y&$=_{^I$A7%vIZf#&$^9cR9Xf zH>QTQZcxJq!Bvo`k4g=S&hmS(SNa!=dMPsqj z5t1Uai%1Nk8okjwhINtN+JsON^|mpacZ}G51G-h-H+btcJ4b6eiEDNY$=?-PXM#`caaG2Axi|df!$x234}W>T(U;}n zFR#UXfyc$hiHD)%+1Mh}*NJX51ueKN3XjxRO;~bnDS3G zYRhEtum|x%!#YW!nglGm;o*NTysySKfjjdv4_nW%VDVa8ht>Oni_Pnk@PogX0ElPcv*=_~FAQV0(X!VcXSG*q(0$ z+qM?LcCUeLG3}5m_!e~hN~4aq9M&;2AD%kiY*)EEStpU{cNRmz}N0@PcOE#r}rB5^h}dIJsaE8-&@+#?nXU5(PU3A z#P;-5OMCjXQBRLF+0%b(rYE|ESHgaNSl7f#_!qB)H7#8UUp0bbd5c!UtIjIDkzqT? z538Gi?PrEw?MJ<`0L_26rla z2J@IcfAyXT7c%fU?$j{`L$M(qV^f8@G>>QIh+T};q0Sdnf;zC-jln+42G{UvKCqyF-PDp zfpyWW##|$yoL+|kzwe$GIbf>2^i!Zo-uEW$UjVjymxzW=fTs%jzR6K5x|yp@qAy~H zNp~Yiqmt;aa)*E6n1zQq;ae;p{nj)v*JxnUjsVPorhpkPGDj>N3mU`mV;ByhB24=> zW^oK{hyeLY(A@mv?SxGzxD#>CF{=y&y~Fg@Wp7k?L2;M(hU|U3KDGrG(G$#6|2uHx z^|8jvpnnBgxIP}XV%NtPftIX~xt6Tm2KBR=!32Pa*Xe(n>jb;(Z^Tny%K&~Wg?7>+ z9d{XN4a6c$F9jViwx*Qlbd~Das42S3Dq;9)&DH5^Xp%{U7mjZ70o~-fK!Tonx_IOt z%%R6a$D6>Tn2^mDln*w&AJ~uY_gSd}fs%cJdWoD|r9*Q2t;1#j}>Gx4<2woKe!5PBCG+(zs*qkucaj zjKTXY#4I37JbIkvbP=uPSucj7M78Bg{o3jfR=yo_)cEQ@}5x0-;Yco5pn8Sp3b#q zI=AWRl!$M%Do_NP_tk&X*< zO`v}uLXK~eCdchHLXHnn1_LhC_K76{0aDIq0be4brwF|g%yVSEU^9XCUf`-ud(2%? zCAzWk8XcUz64e${Ds5u+zO~p>rXao<|CV$eJ7rhg*EE9Z4Ptye6)K{GHH{9VUX15^ zx#`Og275BM**kSOZK;WO)@D@fPM4j@?)!i85k2AM^C)CEgnUyp!OIMO8& z`g&SGK2hq?i%kLe$4mZ6gX14Gj&ETgB#0R94TERNo@909WzyyqeaVbdtd&qX6k>UAp3u& zC6KMAq)5$w{s%C~*gB-@QSm?gJ8D!PwE&jLX!4>)^ZkDU(?dF*l1D3Z-fx<6A8j_} z9x{|W+o9a;|2gG8U?}&HrrZYWD3m+06oeR|+;?LrccnwQ?;f3UFOS0Lo|e!@U-_|< zH!TOp4y)G7C)?wLA~&%*4cxE4c5+b$?u|F>j3di((#_qp4XM z)B7&+IqG%m^g{^0!p(Z=H3ZM!<>I+9Px|2_y~ExIr_b+eyha1`3UfPrG;WCH1U7*a zc$ztZ%{bYg)SSRSVmX2JeBQsxoWP6GoWM&c|4hJZ-RWlejJfA3%?&)ur{#Z_uFVcR zu)XFF*nyQK?11Ffk=uaxg&kN~(+qat3o`7$qM8_X;7f{S2UgS^i5=KZvFyO>2$i{t zqSyf#vob^QR!uBJu!5K&m>t(ZH`VN?1N^Y2rr?O&tQ?Vh=xq{liLPsE{n0PH{8rR7 zW_#CY#d=et-`{AI_Z(rAhpB(q|LXD41G=Zwrd0TcG1xyh>gmoS^wa}ZwES)xQ~K34 zF;ax)wRfv!^bbZ>9AoYPEj1|nNN_{8oCsAp&gwf@UE7rGWB86Qbj7=BpwpkPq#=3` zl+XN8syGzxt8NP4wVn)Ga2US-01MZ9VzF>TbMW0)etgPE`K~&4-?)E+XX4JoW+HaZ zGh$(&Q!?mtZt7+bWTVTJ9#l_t^i6dWH%>>|)9#Z9cv|}PMdaZ5HMkknSY(7ssM1Ob zEY;%D2Rwx*ZO0VeXr}Oho(Zii5JnCcsP8oeiK7ZoQjzBI1m@CD=F^n!fBJeGs zYyJRBhpmji@$~MlZc=}GUdo>jRkv{V?`kyr|E~Vy*;mxX*QgNBlU+x@Vz`#?NZ9|q zTCgt&nP;%SkOE$f{U50_iw~Vyl76dt5v}obrUTVSmZTr!LGC}oAdf0Zukgf5(qC4$ zM3TOa!SQTV`eqx=bW|y0RJU%?NeCM{9LaxNVkrBti^oQKLAtwDhEAU> zi}$Bljg^AfKD{)RyV12c%Sj{z)_H~ll!YwiDMDzj5g_wLM+TvWL5u}slNHD z7W&Bpd1yR6T@C&+a;@=4LXFyHV=P{e6)sCEakb|bv(j5V|fK%3|@E3 zXc8}$0CAU)oW8Ilf;TU3hhW3CwX!$tVZKX5gPSrc~;bN1= zPt~h<8(+-Z_(!g_am&&cA(?(LQsf5%T%nWEA~)P7-9w2cu;2U(tJ zhL3;zcKkZXNa(HxjvdQf`Zx(_5%}^?$rU}jW>AR#sDZG_pS2@y**%^(dY)vb?4V83 zpRa*y&N~b-cjIYGKZ%E}&hY?K?b=!KGJVC!)TzD7tS%I)C(mYW^9?Y*HUC*f0_FA8 z4cg-Rg8eU_W-Bj=pa9cD~xfonP;A>o2P;9SrCNRO)_+>?MCX zypP?B2eZY4$HdH3M~cUQRfx6Z-bv|gykY17Uil22`Q zK%6CW@Q`~qKFS-h*tcJ#E-TF#=R0HM2_o@5P=$KGbp~0ep7$I>tK1891Y;fiTZay> z;N$*SML#mzndLc#`@fY|;>Evey!?O2PpMq!Csph@)~5Z;TyP<}i8_0ZqYrB42+W@2 z6$R%Qn5_#j#N(Ky*&R08((YdPx@XvvM_NWUoPQ{w+2>=SqCv2#8Oh>ShszvyoIQw#y)kRptHoUXV;6-&Bozwt6e4=jW)FdcVHCKt$o)YE+$H{+jbwlKV z!K5h#+9~eBhM{UMKDJ#837Ef3o#P>j$JPM`Md%B|LLi!1h?A0$1eh*tKolrKkdjBZ z;syL4JWXS5FrGci6Y)McS5fgQjO0XY_fRsO&>5QuSig}mNI~GsYyqlwS=l5j;6sWb{M?q zXL;e9@|x9v^M|p#F@WJ9QY4pB$^z9B_<&{W*C5$T z8q~nsg?=+-0(ebVeu#e$LmJf30w!gsYBezH#ATBaTh=h4{?}ff^ zKko`iv~3mh+BXYCk_sK4$2?3HvOuK3@0npv1BN7S79=%3tKDlwKZ$U0QZNP~!7a)@ zNx!nX9+VV5Lt%eQ2bRe;J7J~@a*4;3aljhXtLNCBdY{}j=Dl8!uM+nWMDQPj>Ii z(MT3t!>^B^{3fQ8J>Y;TSWrU;f>m7N7oLIiwMZ^=0xf^AMte>q3yI4lmm~;(Zy?9x zp??Mwj8ghIgd(Yfh4VN@Yd!KfNZr34q3-um_nqjvk3`pPJx{jACxfx1Pfxp3O*~_r z2gu$!L{{(s1SFwWPMTQlN^GBo>FsDFX_)#Z!s8bf;#$}hU3)GUt-M{`9J{C5TK6v{ zzyr^?S$Th>YlwcR7GV`f@`4uu7n>j@XodY?5ytCTXyol@rNrEm4fQyrmd;~%Zc_Q4 zwu<)AS}cwZ8ZA~|y0xZ08jwO~D2T$AZyxB3m5hpe5L4%KSH^Hd_x8Ka4|*W9Nh88@ z5({dc=(-5W#-fc2 zCoTOA*0aNyd@@9Gog`xvZjnyGCJUSoCtLDLh#8Ikceq)z6|uuaO^RPBhkw*G=xOqcC&wnyGu5ZKNd-k^pE5)dc}L1yS|=k#sV0%a9A z1E+sMphD2XchO~XHHvBY4$NSO-|=rJs;;M}f@b~kOyGKawIq~#7|G9RGoQNkE@oQQ z0US810!<#=+pT#3n1YVkoVH|^D(3LVD9hac{zXe2{ z9Cf_BYo+pAk)0Se$*u~&|4h83pDaJ0k2ik>Kp5Xx@Ub9&g3x`61a^2kP;iBwW-hRj zMN(nD{@frD;ukb zC00sULBxR*U=dSONv6IHfdn&>r?qLqF*5AsqPC5kDqvYsv-PQxrB9WpvvP=8TNQr{ z`oUm47@{n2K>+Pq-f@pKFeM=$xg&!~B>>Pd+QN6W9EV(w>wM()BN`Hqf48nymLMr~ zbg@}pYVBhRh{gRoxCmPl5DMBV?;ioy_=~$z*@d*3nW(e&@-BLiC#Jokr&{~z4VJ@G z0Nt;XYUT1Mi>?b4&@X7}G)7}DMPGl^tTKv5CW21B7nxRSqxaj@z|J)eHWZwFR-^fc zBF)qFlWS{PWYcS%xq-o2N;<$>8#1ZTjg+Kb&UQ#s=?vcpltw>DV)pq_lkz)*v9HFV z#Y37Fw<@p~)dgJMOLsA&S5+$7U3_TcqsjsnWAuj^%*!9p)sdAxla5(P<;j0?9ct@s zo1v$NTW0{HmB1g5Wo67*iqr%q09HV$zd?SzN=m(1nLt;IDb7xZ3RAE`CnQ5XWA$z@ zTZDZ`CSx)Axvoujv>qKn|DBU-L0>wvw~iW{EwWmQWYw~}@{b`}ytH@pR(Eh`4FZEr zx3^}RqixfjonwalILPZvU|a_n6@ABlL*e6mFD^|AnQS^!5^}dM2B14?WGk5%vz27Y zRXZ7tuTN02u~{t4T)v;bh*ByU`6E`ZP#7l!xvUHQtYxDbd zSZ`hFIHXhH@)Pk=%6tNUS&PkqM8D~% z5THnc6xn@{Fb`{YK#v7IyZ$M8K~FB)ofj#L7wl!Y^XQH}y&92b$l8o^?QLd!oP&=Z z<*jymur_@D@r#9qEf%e=)#>0ZT%excr}E!b{8vkGG;@n23*Cf-pUEt@E=Bqm{G^xh zYeIqE&zYLeK(GId?)3qG?sa!muZkXI`9do(?Hi|kf3~6z5LSs^b8qZH;|dswG+kl~ zf9BdQldx^fhMsFA{O*GA6u^iQ`YgnJ!Q?aFL9^<^LV@5?+eSE1rICgV3E`N3NJG>g zkcy7=V7C7m;Ii zGzHvnaPY6Ry?Y&2#!(}lC$x^Dls>6eH7Ib5tczRBlhpk3i@sicq zXhz>RU`gJ_;0`)}zCkpAo|EB6R;5RXI=oU=%3+w|IT=hXUVY>8t8nVfe9aB4R#}g! z4j(gmp!t8qa|$gDEW+Y0Rx4B&1e=D3j^qDxz7m_SG)cW=wkP0cu$0Tv>MZ2E4|<2n z53fia9R`ud-v#D;%mH{(hwC!4ME@i|`CL;#i*^H&S2MtWALyUFF=S#xv`^^`1z$(J z7W+oeDI%m6dX6RcW<1gr@ziPa|JUGWMgt#TDZo$MgvV2;<7Vb;evu0aM4f_=0ojO; z!c$Y_WH_kuZSwC&bjw^wL4$L6%&)j$=>mOWzS?CLmYh1B4@RD>(|;cWj(zwT*8 zs)EvZz6OGSdFo=`cke>P>q@Vu10N74l+Xt1Z0Lkut%0OMzm*h>)m+zaxWq)k8*pch zH*-$$;rY;2{Zzk>X!NppJlD5QrSE1kbBk9mN(S!>cwL+h&Wqa2qZviihBx6En+#R2 zF~SS#z9F&xmuVQ+R+T#Ph_;i@vXY7Fs3zHahY1#cj&p^Eu2M9xk{4Wsx!Tct%|W!= zf#=!I4R7Ho*^z%c=zqO}$Bp4?HYR6L2(Pss^%N{3+$z{1WwQ8Ky=0&6O6B!12Tsv~ zG!MY)P9L?aQ?#CZJV~ETVi~ijh=+Y?vJuMScdImU_+I8r81#=;Pb#h#Q4Mq{A@HrP zzbop0QfVYV-W$i%3rmq}1ijOJM$2QR&=vK}qncXv7zVX-)CXA+Xqht1vz#xd)8u-z zm8(%ni9U^a>m0hgUex}7hH76f2jw5@Mz=u+^0yaq17opWp9vA#rb`RdTr269%Xyq$ zMxfs-OY_vuEI+vRvOJh-qETz0Qo7>_*K?D9nfiHB4TH8I%y>?Bv_!mR(tRH8kVLky3UdteAoefuVwW(q^~vXc9{>poGByU zmPs?elp6q@F`9zwa0!<$p^>3I&k|?UM5LTJCdt#0-gG&~#2$@~CqfBKe0Dc;cV-QL z;ni%N@f%fDsXbJZLtP=eko#z3JZUpc4v!IrHEnonyUl)d++S!0Q#Y)|iAs>!DLmA% zdZ>j~-(PHIO{uaJvek?NC90Nz7%`%&$&gP&AFa3ZS6P6i<8B!&_fA|Z86lcQh`3)T zf@Oj_cs8|JNtN|F|Fqlp=3k6{j)f9`i1aF7m{n#&7#-(^vBC2_+^Y{}sNZ$}%JLpK z7fPlQPe)~pKyyv$i+Pc4%T)KMv%eFLqF1=ixh!%h=H={FGbywRk@e;?L(5E>gu^e6 zr|yVL@hcaqFajJ?A?3O`kudKJJsz@O!doC`&66s~vWV#*e&z+-CC3Kx4`JI>;87nT5kHYtqx`%Lf)C-B9x6@ac9et;LaK*BOZgYcE zw7b$Vn_0fZHdic}GN~0(s35cGeB=b|N^M1btq|$kQQI?{H00Xb)ki92#MB{|OW;qd zM2^nz4Sr{>=?$zB1k6|VD4yF2`x1st4zR>uhEVWJ)u8pZx4?~P zw6kE7YU)8vdn7zNj4S{*Sy(U=<)FHWci(> z_6!2mobNe?;rtNtf)U6?1Y2NQ1}pIrY^X(;3q(GrXyMm973(btl1V4-c_^a1K=k8J zKmS+$ohV)dcClKG5ZvMaW8equ#t*gA~ul>bAw96*A*e?sg^Oqh!^!}{mN@6>eS9ZoBx~?(DRLe2zIMMMG`yb?hyzI zMLqnHYxWSKHR=8y>pDiOOJY{_gzwD4oua?vPj53eRSI)QPor(%Utg zq8}f2$9(-g81wbk*sr}}o_>w}xF`@)HTGkzb+m3)gkm1AJW4}HdzuncFSgB}VgbmG z`FK+FH_vhOuj-i3?PIF;+1%terj?I*WDOEs1e|w&T3)nK%~dgmO(39KCC`Js)!uW| zN+^0hmPG?^rDp9QN~iF;B0r_+LT?0h{A5t24p^CHEQ@mOtx;XvWFaVK*h~pke-3C+ ztPTyjpvnsKxAsf+w|^LRtdm|~ktmn-0}E7rwdn=w>ZxJf0$vQh4J$ZUdK=RFJ~l(nS;WzqH+EfSBe@z6Os5c z2Rgy>;%L6Ry$J+1Tv588a&jm>gL*k)HBM8=at-F9(KhKv^pl*m9ikr+%^jbV+i5gL zR>Gk!`p=-4Km6|l`WLcb=?=MK{t(rzr@6p?q9?_1_zlF_d5R!a;J%Nap`N7LP$~V} zJuhb;a?V&k}M}uZxQn_-_jWEAO6L94!sN3|Nmeu(;z`s@Q zd+DlrN-Tk@T>}N4V7OB-0g5N9%P(fgNS|Vz@w+qu=OUf10N?SReD$O^eQK$;!e639CBqq zgX`&i7DS43l+KP0Y%<4UqUGrc*c7UNN0g_G|CEA87~nxbbZ2M|ed+QwkBwACvmRwRo?r6w*N6Dc8#Jr-4K+WGo^bmY%K?_Fy5UxTbrkfg z>FH6ra}d!?o*?AjCfl(o1qt^uJbzb(NB~T(-G4KPKlAtH;NmhXG6!c4rI2^93Y<)> z>*P8^!4Juv*jE+bb`~iXP?JTrL`Mi2SeZOc^;X&l?Q@l0Cd+JwN<)4h)mK#s|Cg4T zE!^@OL#K`zKTs0Z+0ZSEGROyiZ4;FiXM71w%M!`VcuFt{u|z?CBQI%d zqmd6=@cvTlk5_*qVMi#2+e0H*Im5$Vi;sp#w0e1`3 zx>6-V7)lYgZnDZ#W1PE-o#qg?Ivg4+;ByPGY~MCU-Hhv}U!fan?St-rNgzFaw~4_m z2lfnAI7^boBO_tT;GySf!`|0b)(F)D;B-`Jx5}Kn#eKmmG`G9ybh*OaQJU5OEH|o9 z+vvlX{nE%(wpTWTtcTPzWDgi32z-UyzCq&JEEZnJ`KY9b1>&T&Iys`w&dBJ89f??I zIUTS(ze&h~_pHIUNaePF+N411qpZ_O)iH;2i+iu4eZd0S<4W>aRGiGb**X5P)WENf z@x%SSjh{OB$?NA*TM+5=Bo^=&|1o33)B(Cj6`q)@z=NPR>K~t^5jEa*+lE!=dtchU67jDueQWvTHK}U_L9V)D0TX z`CO(PNmcoKTq@P9DxeDrsH;!IA-A1KpZm4MYDL&cP;enHvSOuo$4o&um2aW8e!%|( zL;b1CM-TDelYJT@28hS!r*bB$<5SUbf3r_75cOGK2@N_EU1^J2C?c@g-ewkVo{D7E zL>`zi2?g|AqYe&#aR;M{=w7Js+W91uq26tf^ioU@>G<7LQeX&Vj7l4!pcB>lqldk` zw#R8w?mb9UBDwlM>Xb(ll4+**3i`@{a9?ZSzo-Hfe%* zSNJu4;hTzg1O6D(r*FnEj=R!iX8)_E8;a~~R zS`P$nx-L|NPZ_G5d`qKdLiwU`q{h=X&~fR+eT->@%5ADJ5UOZKy_sQ~@<$>H24?Su zsM+faWRBto*tdUcRwyt^=N}CaUMDV}#y5@GA_$r5UI-i4NV(S;Q#bGnV5YAhmLQDN zkk??eK-Zdo=l0W2yuNO7`{?RMB!PK90(8EWdw(J~K6pINI7Fz+E$CX64grG?;)~d%|jOX6IKfv>KINe+O*653Anz>X_ zTO>}q2r2CpjYUuydyOiG)ReF>y6Ll;)pR@4w4^707_&60wbQvZs}ChNYnaD{hxsKB z^Kblmkiq5IN5$od*gY?l-6paqQ7z$U)f5a!WU{+#$2Lh@85|Tm+ed{0XlpzCVynqt@Lz2z*+%dLfs*f%+6Fr{(;-xN3CgZV2;BcEy zqj{{|M@#UcMK};QAd%op*u|O#jC%Q%IdtiSqr>m^sXMvZo_!n%p3XZ;yOw_-&xAKA zLOf)zWf=w}ImjnOJvC-<@9?(qR5TsG%`b3&n7+iT0T-lV?9aSVOs)60(Ap!_dPQnQ zI=7t8!Muu1O?7NbA8^GrM`~$HO#fA}wRUr%$BtC%A1>_*kT0adHCG&srZODTYg^Z3 znO<0oFuMsiN$#T(YPxCk;iFFLIle~JLPwd^bNw{JOM_DREL#%-pS0PQ**;Z2^|lV?!oI=9>ef!{Lx+F+R0-omHIPr>>@kDHzJ79QI7 z%xoq4peZk>%i>v3aN^R3aKr}sp?-%3601MBPs_EBcBVwqasAjz9%q?H@Q@xbu-2_| z4>Xm3UhyQFo7qokKQJ-0TE&0l9v=69JY}%2q3TuCej|=~X1687k4@FEvI4)0*l3AJ zo5zIKDoKqN8;;xLj(qxlh%(fw#IWfpRuWazi)J~FPS^-JAfVEpQDT076>OPvVSui^ zTc^w4d>i*Bes#tGm1ZQgL;?0Uu8=Njy+rEZlPgP%4#{Fuo>3|0Vg#nCl1nFl>)ErF z4nVK-p*o+nW!>vCq?%gM%4y9-mQ1DSj$wYoGNe}uwO$B3R_v!2Trgx&)TNGgxi?z{ zw1U}Ms#qo0YP;M%n_n#AAAbJ3h5xQq)*!l5q)l@bSa>LV4D2Iuqn62>GA@l^^+Di_ z?6tzhK8`fB^kR^=w@q%puvk!kEG8nybsD`MT!+{&yWH?GnXDq=g{?c>5NNHn?%$j@ z@5rRv0lZ$~)?pCKEYag86^ML-A__inf5lhQQu&o}w$Is5`3YPm!W0ID`0C_vAp z!SYD^5=E0Ey>-*Yzm61t?<7sw2$G*B8=MsQEK;D00jG#?f%a#^Y13arRZa=;o14U0 z4EmCEnG1S0(gODIfpY6yE;P-v{d91LP4nIRnB7dZPs9Xs(Nt*)JH|iI8m$c`I8Cr5 zG{`6=vLLf(bW=T*bNP~MjKI@`mzMS)K6?A{oB70^$RvH@Xb`M_1ew?+@tqwa+^2_i zvM=iMbBBFCRZaz}Y?p;#1Lfj*kRrQUH@Qj+U($XpK8)NC zEpzV{7&=B^Nc4$+(WiEK0)%5;R#zT>c^&okV>iT-8z30rC8sBc`Hey0Z49JH_XXwfq>tSjdD8M|CA|4xa_ys= z-F{iHs689a{SZv1_uZ+6LSMO; z@WC$h@UD7G<=RxXNoSa)+a-y5qIPIZVaW0zy>K^w6=J0Yk@9oo8)wGr?%;lA!airH zBtkMvg!cv$fYw~C>J6WQx9d~zNjGe+N64}&hu0|YxWoJNzh9W^yNk?UgzRZt9XaHm zbW^5;5jw4JCW~pFOr`rhONhTW8~c`X9PbcxGpHfl0tWW_r1)wYFbOK?>De zuDl*DI!NM;b06^;$!*r7|Z1(pmxO?WRCl3y@e0`js*8aq}jB zBJ&R>;$A%wZyb3d)`utJljckWx3*c9k6d~aeLB-SM&6?29?S{3qsFQmSnCCdc)5vAOuNDnZ~QFKIRQpPoN(D zBA3Bih63JhYQVM3KqRVu=xC4I=W*MANL3-7q@vMhVeziAhVW##Qz^buzEsM>^Ae?A zPNQI@?pL`PuwMHM-Q~C=D{Dm*pL(hyvK86M!> zHRCKU`T+k&!KJ)kj$_ErKom*X=Rb(O5kAInL84R4Ytf~7B+}$`N0UA{6SsVHI`40E z@j6AlGQ>+#ZU&N8nnE+vsslSPP^QmD+*XJTpB{I*N zBCbHK!7859UCos+1mfIR^P!r5TLx>HGiJcrg5^w>TfGu3XYMqWe<~esk}CYFoPZ)9 zNH@9SS(G(VCHCUBdK!t0rAJ7d_B#B7*ixfZvE83%GPQ~ui=+0NwP;9jsgjKgL6eNA zF@m80GXiViGesZ^?SPON*de9!A$0a8J4qGBk$WZV5BK15&8dEtxSH~R=`-X^(@5gr zvs7XKvrX0*G*J3sZ#cjd(s4f6F^m8HL@j!#+}?6frx^^U&?~MydJa_G+2{0w+e+XP zG8^I-Rp-!&d#@C+99CrDqQ)X)Ig+6UbYq)h8hhSpY?Cy$o*R2f89VBHQ{$DG8XKG%uQ*Vz2bmA> z$(<*Yz!|t_j;{Z9O#R24`fqC#t>P}{DzT~7Q}6cOQGi<_`jby??mdVCJ2>9cihJCT zOb6O!^-ccohCaN17OsR|v2T>G=S-#TG0UQy(Xd6}Miz%1|M!#$Pm+d~ma235T+u^; zeY=>>n5TDw%Szc)wL{;=O^tW>H1Frwz?87Ocd~ zX>;%w#^E{>{>b34Uth){EdOO$oI2X{-bT?_^j>@cpIP_09UtXU(herP98*El;_;(P zYC2VnOov;4X}(&{+d*fV$=mcxuC)O0@z9r=^;GYvEIG62EeQybh{NfzP`rLyrm~Pi z5})W{xrUi=Drxq^y2=4bem+?6mCxmh)nNK00Hg(lf;M6X?nG_}+KXHbcUd}b zrenyV<)L!5DZI;My(;z>p9T_!(gMpz$0O2Kc2oyL=#9o5JSrV*4-_fMdmr6Fic0?z z|C1_zq*pGkyV{?Vdt31UsFz*}Y#B<+xvTxI-H|YOelCs6b+`gqS^-dwGave7`1B$? zTp7LQlHg@2Vg`|=F2HnDiJ$2Zr6X5CcM12wGVh|v+M_E0XEq}_g=mSwuA8Vvb(3|SGFqOyDzJqxz2|=}<@cKu%}juQ zsRB#TfjF|~F?Tam;?$>}dA%@2-JsHEzE&IGe4%vQMp@xR^O#7wLqqdVmu%AI>N~8- z7nxVfqUTyw%6>9DT^NUaAVO#K8zmdA=Jn2`4HCnT#fxlupjC-PG^`SrU2OrDAnH=M z=l50TtMgK|0@X{Wm{emgXM-$zndXLn@EiDAOk-G{2i>fgwJB<65gq%URv?ns@$>Fk zBbf>Lyw&L2h3>VzL?#$P?Kd&7JGb$QtPCFbecTp(+{&kVpzZ^+%<})d6_z`qi=Mn) zn-EMoKsa{IEXhCdTkZwMet2KCy_q~}|uIR_yyq}(ut0^QD+9q*5z+7KQ;@oOiXx0Kj zr;`S${^AOrE~gEP12^%WUyhI=yf|khi?gkblLU!>>2Zriux|qKbO*dDUgwti)?lfLd)F}wr`%8;z;~K`l*#qCq3CV!(k{OAGfIk|L~61 zFd3h|YzQ0Ls2Ro)%>LT9ICe_VYqzb`Xog-7wnsl}A^PE(QuP0`(RI8>IB0jN!WUsV z_8Ja~L1cr7>0e?qq8&tTRR*rdqv3i}!}T7+)g4fQrnQ%l)s2Gnl127^UZq1RqVGFm z`~D`<_blqaSKD%xpu2JX^gR%rvX-t&hB_!qrh1%88(t=u+#tHKnvufzr@$ekPzWKU z@=b}wLJl>_&W%#nwTk|dtOJrAv8`~)L@s%Gvr2a3k_AU8dB$i)e+I;eT5LzM4fMK9 zrS#CWY=~F?PLbT1edQT{*A36`VV_SgyGq2ginmtk!4%d(f@F`+q0=&yzBz82!Tb)a z^9G>)ZNhBew9vkSdZ{C`+6ekP?|g8hMkHIEf?=Ve)iYR(pQ&hTn-ZQ}iMWtujAc|6;D;$$NjsgXA zrjH79LL1N`WC%I48Z~H ziBmK=9ty4aN`y@1Cy>}`Nv-Ph#L;94q&fB((s@d$rx(CH{#d??Jf~i(8Z$r zOfyMe=QBXZ?W4GVBrW8o2(`f%X@g2RgW~c)4Y>WXLHp_1{jvP>a^!q1#%&?LMAM^S z&}5xP<Sfui{bZVW_myx;Yh@m5{}lOvi85MI}GDN|TiCVn;i|`9Z-PgzSNB!dzwbqYDuz%7!;49FD19hA?}4 zv<%CM`7i(ypkb+^V=`zMFYs=uDlP2vJQ4S4OzCZKK|Eqi ze|~*`Ui!E(>0_^;8$+;(keD?$z`{;P;)*o4fxpA3^sv^tP@K-|vtM-8bfbGa9Sr7Z zK)IznWu5s8?!&{)qtpVo#H08&I5O%rza1^5ziL$aZ*D|rr7xmh(_*)u_B1NDgeAET z8@;<<=VP<-#zH@rQ%j|_)FuNbVEjUn!t;fHRF*R{g6QSKtpDANP=~^#mxDVr@>9f} zo=(-k@ZyiOncsQ_sx`VGa&FR4E1d`G!+&-4HM+l(>h##jUqqc!m3@(64XsJP z%0ehK+g6H>sKG0$++45csvFT!&3@+D;fC!_)r&OS?$bjID+_IA;CKhCqhPYV)G$tW zV6>Y=qGo7j8K^!M)JQK(6N0u+C26I9e)TsuLQB!!s8_eUH_|sz&-2{~d`RC1tHQ5t z*01(Oz51(e=qK?X)~{~Rr4B^B+V9#3L$3relHgr!pil2@5(g#*?(^$qqR#^oaYD<> zi}cIh{E}XE`=(XVq$+xV+qZf(P|wb^!)C?3jM-+5N!z@=|5fdwlSCUa8Rs@#nj^a$a}!DG zcGMe!Ga;8UaPQ6>mVSE0C6C#E`e`6`BFfSagXAGoKRhp+6g_RKZIMUqqKrLeToIk@ zA3Ju)xHXa)YurdWX(1^;RTc2RYKT!*iyww)5AO{mM2&rqwJ}0>rENzuh8@z;ZTevIW@=7UR_Y;U zLC(6ImzmN|FSf+U%^_={(I7#WBRpMj)E47X%xR2?6McD0r%a7Mi67<#m(K5i?yon#X$uy(Y=8?5EpCh=GgAOS@H z?4wv#E&%2`;-yIEqR7;df+eeIaJcy{6+bZ|d{qKVDTksn1!%YBQKOh&9jo#)RacLj z_PX}L<2c{MU|M7?4FCSd6Zzd2ri`LB$W=OGo^awV`th=V^8@}y60;7ndwpP}j!E!h z)gs-UP{YT;TJwZd2H8c*sQh^X${Fe2B|Nw#?%j~)UuAwZpGGXDJF3^wSAlhEz2{h} zuUYj6Q3O`2D5rkALnPY4&buSOw=Rp@>Ue$c(Pxoeexz5+qF>p$_FU&pib1`7ceCEa z1T%>KZ|By3sBi{$n)A<2`7aWRAtt7Q(!s#Pe;r46ruFvX1_ruD2)RknATF~yHvFMW zddC=-^rMx>vpBscI;EB49}gNT-+9Ek=Hc6@I{1&bA(z|T<3zZ>|3-(qzaPPE`DpIX zrRBZ-#bwR)+%7d9>xENG%Ue{TnMF%xG_T;5#gm(V;}C92wgg%!|9|W@&)rm1O)YAU z+dmhbP*gFqIgae&DL-X;MNvyYXu-rYnKZB9)NvJ8wV>UpWu@brSF*ffTt%~y+>+o8 zPTT*Rc`qC{#ed#8&7||nqVdx!#$5r@IK9+?ps@h7`(e*xeGr+&#Mne@@(J65l`+W;T|lCDRG1ib^)|mVFPH#kf2X zg=SQZQzp#3-CJqPd@ISO@=`_ZX7jlWUK=j|`PR7y)j&SG^1LuCql6M1edB7GSNl`v zutMAFOB3sHwQQZulCHQl#^J%~Ci zQQy+|cuy;sYIfGz#=Eo4(E`=e{oLNOAt;-~P4=^8r_9;ehe#rqI$pD(ikYDPF?d-jC4#-YeJsxhh{o zQ5N-4uxcGGgR!UfY5mBI;KAq-Sh=)+iw7`}$!(>39=*#$Sb3x&d=&H!q!n)85U2|H zLFK5SfQu?sCL=jeFmMQeu4HgN2^QeZ5_c-Te+;|qm`4D%#O?Fg;cqkh!92x539#Nd zD!mylzpM_2=v94lXvjr4r{&5qp-54;Y5t9yeKh!?P80?TTrIX*!23HYD(bu_xe zlE+;<{kce`(X35$P9^0gliQcxv!Z9VgdQ$dQ|S#?UEEfl`VWJP0JXa_>?DR208Qua zhSdZO^FsAH-m8;8t_~sEGosxFuVsZGJ;BN(z$GUqat2;uPL*$~RPfr@yUB_z=(gd`<~CocjFralFh+HGlM5gvN;@UQB{ zl+{)BVnJdh3!rIuzst23WfBxDQ*G*y!RJ9m4g%nhMbKYvJxO1xOA;Dh0i&4_H^FuF z<@Hv5GbFK6)*P*qi3wdKt-!_W_#w%!wC|pdRcq^*;b{hyT&R>epyI&O&*D?*@K~z@{kh(> zU4}xJNExbfG6t>TkLO~_zf&n)Rc}n?Sv-mrp?KX>2jmfdK!%iK`CKll2Xd%`Tp^vC zH1<4T;U!m+gQ06eKvA5Z%T&zaUkz}^SQPR`qiNb4x%+rLs{bvnqX5t<8h|PdKq~=Y ziwh96)n->1RP`#)@o^NKgWaaT66-CMK~?&y5gUv71JXwQ)TXma8O~+C zpI+)YQPG09ROjX#m(b^?_EVRLUkM)|T%r4yEx6vN=ER1j$EC#cSiCcbxxnLJptkTIA*?h zBVhm_uq_bc-Ezi&vt>4pA*m z&@G;SDlJ}h)E1fE+RxK=UDH+CB*vHI15B&vi4ZHi^QCp|*_9{zC6zTXJF`an@v7n3 zLQ4q81+%hXvK(>}RKtd?!fh(8cBmJXDkfehTV0w&dqy0FIWWMoeYLkxRjszHJ9Rr| zqRl*D5Ig4@UN>>{rYOGoaWymYSz_3P|7=`;`*`AQp2oOk)Y{RwSskge-qRLgxICU3 zBP-m9e{MMJAJ54=^i$>;T~s_jOsR#TBo0g~g_0$knZyC_c=#{++_l$Hp%pXycZb&9 z^^7N;My>OlY*WH^KC`acff%0es`VZ>l`V>>tirJ@cYYhu3E9Zbkfw|=zG#~Azl|$@ z-lNYIiQUPoANKOa5d~DD9Qbywy*jpaQ7SEK6eF`qRnpGb$~yzP;+`Yb2}D603CC%7 zi0Ug*>C|C}J+@w+%%GfbqR#(To2o~QMGD7_pQC!ug_xI*`^J2i+x7ts=1=fE=H+i>#CVisCY|9$Zop|>(#MS7ou zEyqoImRS^iKUnWU+*tQY_%N}oBVI%g!43TmvG10|hnGU(yOEEl4W@FTw#Vv!52n)Y zsj|}5RHbhpP;$3!WvRP_o6MEp{d`Cxk#98eG~GLmI&K#Zc{IxaL497yO~udr-%cp} zizOvpR<(LgC06nJZPPh&3{|LM-1K8CEx{we0KZaq`yN~g)mi*vp_n_55|||{DL#KD zoUpwIfc`Dy9m>f548e<7fCwgkpun2~_B|nKY>&$~Xeyl`Muj*Zrcqo8BvOlRgfAmk zKHy#`Pemwx&<%m-taN_!?;tuKt3&nv6}IQo(8;fIc@8Hmy1|W@Ne4C5*NW6RUnZqK zxSt!o*6m}?AS)fUZVrk&***d7H(g`4+m}hL_GxGu0vejDt%dT`4<)XDu^@>7nD3*3 zSpZ-jK(jvvOC4Zt5n%QOOSzGG?j(G@UiVWco&KmF=DB@cscnO%I!xu?^(DYFRs#>- zr~UHYsxA_ICrV7=wHBPZwnzkOY#{apWbM;ThNuWS7#kP&UY*R?qAvr2%)43kz`TAQ zkggXaix%@UX%dJ{E;ZnPrK6L#BXEx$zy(X1cn?V`AT^e2zZ^6~z(6d=L3RRi(XBCZ z9LD*Ic%>Gij}3x_S3p0)s6!3?gnr2tHeS=^ybb;u3fPlAj`e~p<@*yODM*om3eN!;dY5Z#3 zBjh$N7AFR!SwfP!r|FYorlFcX9En;RqLQgms^C|7JFb*UYF!T{w z-Bi!xpCscyq?@|NN(H(O1$aCxILgDKfDG;{3p8@ALomKUdIOT%!rKF2hF5c)FReUE zcSK`Ygh+BEQDAg`X}E~lhInn2>|FXPz-KsbE%tny;`6kQakWaEu3*Ao(yQeQ zKRD2wWst`K?Tfl3=(sEYIfWL7>Z5Pw&RXbf$Q>Qk$yZ^2?qUx!7mGrR?xH`hQ#(Da z=-XhaKK_^K7VUt3M0k0y0?@ClhPHCq+(sXcSPhRm?ZU`|o%^kRz$suQG}!s3nPPmL zYv-CrDLc2}f5~`+J31|V(>7lqih8hf`FwxV!ioQ+yJaW-lyMbT^}e#KsIoahhNbWo z#TCs_UQ5}3aaT0E==75EaaT5n5s=c8ODFX0)7-*5xWaMeQ<_`+%E_grWk$DO-dt!} zRKC1o`W5BTHNd#I#)KJ{K*l}r3#54{Tgp{$9G9CV&2J{iker*OSmNt&>Fr7N@G zvmfg1Dp5_PC{JrTdvtb1uU-|sx@Bi)r)Q@R@09JaDX$;D96qYo@QPj+W>;jVk4;Y> zKD<}|vDy4%YI%<$sx|qna-MuM@V@__XPz6)h=WTv0mi{~-Lh)4acEeDRcVlUq=O zB?n$Z&5E}kMt)0Y;L7F=dU{Fm_)>pS@97m+rprG^7apD;7hZ$Mw1*|}-Hx-ec#ids z{E}ONEOnYN;yCx|*p-eB1UmaXs?0IU&_E7;hb8_q&AuI@?)xIyo1t}h(t&XcXsxPE{XK6E3XeyM&%?3v*Sjf5Sm%4 z;GPeCB)m+w!I}MuP>y64(GGj`8ZtVqg;V`zS85R~sp#(ri8jN_#WV1btmsvLSH_je zNNs~h?iMWF;}Ftln;Vi%B2DOrV3?6+|HM@@xzP;M=K0)YA75WZxkcU01wx8CS5Y#T zyL72aIgfwQ127x!!M)_?P;gg0_in^znApV3j+dET&ku8tFtgglOlLr{HV^En z`YO9t(X>)TqJ~T4rtmBeF3_`oY)b;vgba9!!3}XBUX9tL`gOsNOE+K5e(o0msm#9~NR1dqGvL|st z{CBgW@ueDZxS32FqOztAc|z4FamhNr55;Sz(3!~twf1)nd^4bZ!~#@4_{_EO(G)LD zP4J1IO(D|YjYF7LKaKawVwjpBgMkbqKJgnvUO+F;ry+A%L3|v2=c@6??sSZfd7hkBnQXpDC?*Ffh5LvC)6%m%D4$E#rdurN6D{InHYwTiEHl-Dq zyz9I6ehvpOlg<14|39Di{rvhQ=eg{?pM70>t+m(su3G)4(kT ze-pCg3+C4vf#Vs#&jLFQ8UUa6If1>YgzSauv#L?nH_C(oyu}EurQETX18t-_3k}#` z;cv0yYFZxBsFvgLClzSd@{m+Me3bV4WjKlWOyk8QR;_Og6zvlQ~8>7;se5}n+CNmc$%a`d3;COo^)B6onQ@)ngW zr&x>aj_jpxL^pO<#pafFq|vu_JLXm7VYW&Y=1Ds&`X;22@9wVnLaWI_5q9GsEryq; ziQw8t8-$<@Dm5gOyu0MGk(a+?mWE7vnZj^h6=E>v^R@Pl1Pc~eBwnrt6u|6e}6B(eh9C>Z+X3kU-J&UygHUI zSK$}i^Y_dRYR-f=6h{m^{@0kZV9E8N&h-fA`jB%yBDwyBFDc3bM-Vkl2r-RHqXAAD zvz6RV=3bZ!ViKP&sC7`QS#$%CMR=Wg)5KaJU98%oXjlSW?!2@&cgk4>)ZR%Mu@uF9 zm>nxPe-D=fG~Mk?06U8_)I5L^1Siqv>NI$yptd3MrXml#fD48ja8Hhcvn|lK#c)km zVB&hN*9`$pJ6BqkA4})1;=dL=y)fk|Zi``EizDdUAT!i3jDdwY*K?=r^E&RYSS(3k zo)J94lW@)`W=|In=sTdKUr)7E39`R6Mz9MAf3_#!{tTqfhrYs=>O34Q!}qao7hkU8 zU-b0S;6|AcU~zo`bzi0vf5M5EapF&WvGBlZTq&kqDwoRL&&vGN&O*$IT28Tf`ZlnT zJGqcq79I8F@#QN1&ny>W6}V_x8pSNs%-P&gy7l6W3mVCyjyMD%=7#bm8qPop ze@<;i*vMhM0!!-X(_3t|qE$_s_T7r(;E{OnHU67{ThSON->;|iE-#mPZ{U~ZSDr3kVaGm|W4 z$X|(cE{L))|0!Ya$8jZ0o@jEO%=R6??~#BR_spn53-FFrf-_zyN0vE= z^oe{JuPA&W(`EALb3Dw2N%1N@T4qS1nH|w;Y+u!T%p}Sx^ugU8e)`=~c_60&8*v^@ zkD$8+b!LY#SJ8OT#@}2Ve(uuePVklgAVq@)^W_!HZ}NP(LL6f$q<{-|e{xj@aO3(Z z4G7L`$rt==CRxsw;72U7r$-BGTq23Gc{UB`uMuEqawJNbREWY_rH>MsO>oN4yAv@$70 z=ztPvJYh!w_dG}hQUce{e=A{w+bo6W7lm{i13HzTpjj|-B0e*K?}{nBTR3%GssWK8 z_1JbnHd<|*AW)3qIkHs*S!y4;5PW64|y!d5v|rKg1( z8LBiApVahaxZ}~Yx;Cikz=immoMvj6L{~Ve9FT?~ZRqE!Sb9Z_f5upX!yzIhrj7X6 zN~lsc3TF^EiFdn8gc*0Kf3aKwt{iw_{iLyoG-UzN0we{1+wiM<)tEn_nV+Gi~c>{a{Dt0|eL;;vg;Y)1RrHNf*{CZN&PjN|woy zFXmXHU$};Ed5+CSe|2>=Mc~KzCr{}KS1B}?%gW(;E{MmZ4W|niLSW}2b7awTh7?|l zB9Tu=`5162{hqU32Mvw_PzQI?HG8=gy)xiQ55X{V859|m87u0HYwZAO6q|b~;`t8a zK5-eaK$nWWLdBU)bb<_4oM?!~C|5s;Ilohkv$zicA2c0(f95UJW|y}!=kQydl$Z;v zMxXR1Jt;Ph@A?vSri@c&0%9hGB++Pb$h}BlsmAVA)XPa@WBIS5asCEH<%(Ifm4xa% z_&dHr7bXdoT6J9=Q{`|PP%GP^1#k%#Z$Vvt)=WCjl?y?EqGL(L&^+jf4ls}O08@wl zb~XMLRLgt{f6V|^Py5^!$OXUw(Vf-nd9yjfdFJp8I|?P(UDY$~tUm_j(rlRg&`)?X zr`q4PBLKpiuI8Ob;m!70X|1*tdaX=%hf~XO}S>xA_h=-A$)=xwy8dm*%(VC4=Ps9C|Jk(w+ z$;HFBk7|LafUe;RB&k5eyz7?@q%bGkv@5tbfe2CPHoXwfulEFb=w{~CJYG?)P=%Z4 zR9PL|e{?4aC=6Am(f2`zjq(J>Wsh>!Ib6g95bj===&!yEh8th^m9kw1@I+pbL3K9mI|CB@ADj)lBFuuU>Z|55LOBEXoe^Z zYj^-Z-pCEndNinjKj+_DMGVkn@kWv7b)b>U44H(l1?EK?4>&4V!@ph;shJnLJLIsU z?<*2?OydC}mdlYkzlq_t6;h}t+=}~!e+Q;S<>Qp}ngneZ?7|rFh+lhY(QJW{{XsyX zAnm3jM2omNXB*$|Y>9_evJ8SR55;X5w9s0acQlQOSwzO=$_^-!ZD6($U=!tKQcfC0 z)Y2tPX0L-t!ki^f73zTPZRCKfBojRan)sfaexzez$BpDR`~|^ws5c&JTQ5hXe?UI; zl zaSGwfkn*fl(4I9)0Lql(lB1$Qw#!E!j{#P@Gg5dqULKp64WXARV}Y`kmBk+&AN?{- zbURhF#5Mdw3^4zrWq?hN=b;OKe}!{APdsB^trU)@QsVQB(oLk&rhrb=C?wjjiSH0I zW=gEow;)yr(u)>`mb}X}>AMhoMLV~&625oX&Eo==yCX)nI`5LZ%Gf7e6ILi5rB#ACZuy-K*RF43+THzCIG)%*`stJ22SKzQKl zChES$1l6Pt1xh35B#WmQHMAbADjki9S0=Ny>K+@wYlApsxg=0iJ3tDhWAoa`<35Fd zFEb)4bUSmjup-LQNpkME3U5bprRIXa>yQc^Pntk0rBh*=UIffpe_o_1-5;Dv?6s8> zoW#78dZrr|@Z*?zM21-FK&8eoF{;SxF7E-)f$)fNa8HQAzV8!+H*?IDF2Y3>&S0+Q z-KZDf$PvL8xRS{#O#zLSuHCDW#Sl;8KuvX1A%Klp!rK+pPzSkgO?3o-X~LU%5|#>R za)E^D%vK-CKC7cAe>{NRd7SAtlk!-c!q&^-TQYs*i)5M?Z!k0^F6}IpynVhftFZiv zpQ4hl0a`oO5*F9T*f8^j^&bmmZC5!QzMHQn}_A^72f8*k2HFUl@hU2_pQca7Q zi(xuI=k;WHn3xSTKppcmsIHC%2KrLbgo%kYkx3O1!bidC3D`Mw-WUo1_VI#7_TwqM1Ka`NKizC!o@p9Tx~e47BhBz4 zDqRHq@u0Z0l|n0Si9P2E!*tyzGe;uh42~C;MJ(PPLA5I)hfdHTiG8Jgb?{t?|5;@| zISeS#gXnCd@8I5I{yUrH9lCnG#3XRUh(<#~jY~Y?e|*CRYwlAd%lkDLWb|bs4JWIs zd^SNt1+v#iTwb z3l@peojYW9C`{2(J-l!8)Z{vUQ<24Wz9l3#XE5E&ZN30>W=*uZw7^5}_sdEN1BA5G_{(zw{cecg1SlX5x#&F&DOmhRHbxOk|> z*nzs}S~w^7-NJhe6R*ssUN-wwqLN=8NEgN|=hvALq-t!CJmV32fxmAC{Oj@!vlnWQKd4L+IdJm-TQc_L?g)h}st-2)aDIQz!o8Dv}j!Bg5481jV#G2nA zV_ulRQVUAgzVR!024oFTG!T*^mS83fBSWmlZCY}Hb>H(`i~Iz;Q+EmI5&}Wc{nh-PgFznDp1CaEUmd-U8=M;PEmB(JQ$!3so+F3e zOhdhzhL-+m0s?HO_g3AJ^Q3%pQ-n@#&-p=;zjnKvTV-pHNK2^vCgz{>xGyw8ov43u z#@`_sUcEy{O0wvju}mmteg5HY@tbRB}I2JuY%31E?W@#P^;z<9@4xf^ZL9k0)B?A z(xOi0WgGLd(-tb=mjwcu&{ahN?295;na@JMzCxFc! z2RpnB(bC6hAQcIN@p_On)d6upoNib`=p8enCyf7w2qYi%e@MmcQ%nkDTIx5wr9G9< z;ztd{$VUyvDX?1!N*;xYQD7Y`3%A3vkgrAcEp@~lg%m(9AD)D$vtC@#z#9F=N)-i@ z%YJ}RmRn3A5^#fS?k`dxQ(v_Ul@nWCHE6Mwqua57*@Io#(W6Nxv2Ny>tFP$N0w7Ia z2N+^c1br8@e^k4O%n%J)vbq5ydbJ4%)G5hKHHytJnl}1N8uf17Iqu3|17+<7_h)8c@#KovlhTdZez+;Fu}%mMgL2db1)Oh;E1`VmP_ zSntkEpP0KtGm}P|jb9ev<%mhl??Q7eNK;ybsfrLbf1pi+J}p(u90JP5;Lauw22@?9 z7!sBUPH48ZT_K3Aq@Xrq@qDOsYtLq*i$Oc%WUFv=MTlC*`4rP=cSu?qCHgyLc$yv6 z6LER?S%1;DY4mYdMT(L6#+N=RL`CY??I-z~N1#f(g0aoiW9BImNVpwV5X-y&EHz5@wHAv?S(#M%E2E-7TRd&|6T(dBv>32 z?vdJJ438RWreSNdi^TRw^uI%uL0d_YDK|@5Px*5!J}Cz@j+d+SKD-U`XpiBJ^Jkl> zvddWZVm8CgBKFh>N;rrby3}8cg@%Oc6QsFCe=50*n@|qO?Pth{OAJi#f%LQ)UaOK(QHaq^|lMiGzZJgGRthWZ3U?d@?S`{ijZtoOe@c zf5DmHk=a?!&|~>``e*zuPing=GbT(aJ(IfF=_eFV4fH!YjT^+Y=&Niuh>wCg8;?>& zkB54+xHZ7BcU01`Vl|9$ch|h3`&+L9h(|wX4=fgEsTMHUtTU@juKUN z4h-H8g9^^G%Q2T)(E*TVR||gN*0SMmO=T;+?kakhvqmN z5*C{G(rKJ)=s+km7vrFg#qR0u`0>2m%q<#MR3tto2KgCFY5%}hcUMv3Dt*MVQ5B2P z;k!5|65B+c0c%2R<3#H!m3$t{f0ldD@*P2_KCPESF6x-eyh9=H%I7B0*n0%0;#>`71J=#3C07THp#~TF8dO&$&QNH=kIE& zaTJK%%Os^utgL%g@^V#tE&%V6Rkd-|AqBw-(HwOu@VRfo6s$|L-6MLoe_2S$`OH7- zqLxDJ8Aaa+-chQ|t-ycQns(S$er!G)C*cOybHHXXSV9zrgl zYsb*{@at2hGOKqHZ3=HbBAc{`33T>Y&9!MPk1juPvJ%mRXmt9w=nh^A*)jvEQ5%80 z5YRO_+%?ZRYLzvCW=TRpf8KrGAu%`TWkG^Bduz7FETs*>H7a|h!g+MDz}7QS)*3P` zYV)+T=EhU-QmTrL@43dvxp(mV{y8WY;O4Z!m$im?GosDG4OoNe^qhu?6PS<}At+LL zonnqOQQki9OOV}6Y*eNEeen_g52rUF_J1-0#H~3ge z;kqvzDwehMtZy^zwtsqU52yFXv38{y3;ye6XvN*Q*O^Tv7{U*3Nity=iS$l z#$(dN!~Y`B+V%%+KQ~>s-t?aK{pZ5#xgJ#8dMWZs5JOe#e>{GQ7=p_wyrHFt5+--i z{e&fSiJ3*R@X%E=afrVPL53qJ4A2qKO`){?GTyN8dPtiH@Dky-3-#Nt{BO6Jw=e{x zyY<`eOxFIw7BL=5`05V68nsHlt86<5;(=IH_ZsXm9Nznka(JmL8w^Zd&bp5JGl zAM!uHOh&pWe@(Cf7fUG0M$Pr!A*O_r`U%+!2KxPW?F0x`kq?)InC{{Fq}gnR6S zU+aVmgZ1PwUV@IB?SwUU!UHQLxKI!YT z#Qu#IOtYKF8$l9Hm1%TUB)=Kpp;3`^Da)6sg@I%Bf37b1Nh!Gx9XLz()dT*5E;gxw zqeWYF>ZgNGIqom%x0_D=c7uNV`l;Wp)o47chRKL`UAbT zgztdEf8lg9GSMm%hZ}c!np*bZqkbm=i7W%6-3h&3-6VnCL;!&9Mywtmqq$XPuT*qc z^bqt$MJvvP*23cRnTlO_xHZIS!hF_N<>`g3=!Z@^VlLe_eYAL^oB1YAbG2z&S% zy;3o=RjKPk3M@co(07Q-#=J-e;9K5e2p!X)f2o*v8*Kwq*IbsVf3CFm^;s+-)0&Fb z`}!8HsO-*EwG6vZicQFR{EP`*!DM_Lzw|{=VzchYGMl(eVaD?>fsXmB=1|73D@^tm;+Y^fWkxJY7JjWlrUew%TK6+Lv?_?>ZVkUk4 ze`xCIkr0F8x}sG=R(EJaDkIS&m0s9UWy5sNxe6m^&bz@mFG-~1?NfD)Z!H=vDmr?( zy!FUE9m*p&yL=b@EV||#T2qeN(%Yd)Ds7SFftf8m#O!F?a50IpI!fu-W?j8`%gdfH zNFj2?Y87>d;DI0~IhK;Ap3e4|m?aiL!r=7;?S~@)qg=YHh}wIg4DGy%Iyk9~lZK~J zpPe*43qFZ7T=pmf0ZeBvr4FeG^^E7))OnAh$Qba7k!$IEC*2S`37SUhYX0&jf5f2R zC6f-P8j*RSABX!7k4@Vo^Q}Lp^`m}H1lWNMjb_iELth>6dIPrFWV)Aov|BEY2W~{g zXiUALN4@pv?2lCH)pVOUQqnO>;*O2TPzW#vK_RM|dB3qt1X1bYrom|bH^Oq$y&;-t z=|CcgQVmlF;m&5;b$-m8f?2PKfAPdd-sdl;8=G`5(C}S!iBpSHgLy#YxG#SzotsO4 zYNCF*bG43Zyw-L6+b$E)#`DY#O`B==sHX`gFD4E4pBt5NTRXr*=kr%YX)IG0qC#_@ zU)4k}2k8=~G%3x&S%1zMtjl5c$I%ytKX8N1$E2W2_juHuJ99=8M!6&nf44W(!!RQ` zR-9SQJjmlAq>b>1NL5udCW5{WYPM(645j0{(AOS`mboA-*U2orwi?DLir2_P-mF%m z_<>sZX%2-nAf_RA`kxThqB3jzcrGQ2=7lvtEu3PS?TE+uagPe#1U@JfBnOoSG}Y&kA1bX#JtWTeE{VipX|ygl z8S`rE%oi}(urbOUF@mTVCww5U;C%Xwm%a~n8<}!^El6ikVkL7zS;u&kJj8t29+r?gltDg z1_fAkhMLf75|zG$~7CFs#mEe>$)ca;O; zm7WhBD`ft1D3VsHN=?V-rl|R}&nue^Emdger`{}F@$Vx3&1G8piPyhzJ|y-$w7}Dv z#r`a;RzJ)(k-qWpfBE2APM?d;mNl;Ec0q%nrZ6X*`Vmi#)0fo?|Eo>WXr5fxlAqhd)JG|KueUl zOIFQtlTE?7)LfQDjbXV$N?Ag&Z>a-9nLTC8B6VIZiyTz|e>^~NNl0+e>dYC`Utkp` zneN@}O|ZM~B}6@>P296DamRc}FL?c8>MOcue=KX=v$t8b`r(N^`%0^x{k%+i_I~U1 zJ$tyUb&t)qPU_j-Cv>2?2Q_Q(M(Rq^o9M4^%Dk=0skLf9L-arHTSc#V-6CPqW+Z*l zbnRxlYd_(>e_U+&yVkzdT}wakE;yHEu3k=6JnKqC6E$ z?IuT9^j?rTaf7W+zO+Wzu%p^|cD8sQpt8kc!lbov)i67oMr~`verOCb6!X}LvK3f` zu&%bWHab)222#whU*G|+!mWDa$DQC?;-tQvv2b{Se^-rY;~rAA(p?$KAq2t!Evw*3S0WA;>5xC-Ab)t|?qC6EE6XWK zBBx}iKrnr>LzM4j!6nAX^H)KfAFz7f{w+#*EW z>e|mfe$rd*e3bOv2_@Z$lD<2kBz|c9eQ?oGzvH)G*EvmQgeV`5j-6iMeE-4b?a*SSaOj^q8jcl3@+0=jiYRd$Y ze@&}(Ppe|uTP}0v-yvho=U_;OMf`eD!(ggIWZxS`YfVtLn=WNCkSbmjYN*`YB*HR1 zC{E9-xlOBSeQ1V7zwmnJC6=t-QE^vVmxGS@_EP69ib^(%`khvW=Jti1-a>P14g8QR z=idusb^2F%EWd|=9c(ej;p~2pO0K`re~!aAJz_8{3|WZhglj`{oirtHJat|OlRznM zc#fi6DF@@VE;JWKZLkL^OZVht7M>lwjt-~J8Swv177ihfZx_PA^dA!iS3%~Snux8)jX_hWAB{K}K1J*pr$iuDwWy*1(*1-Z<25|GgaOt1De+v6% z*at{>=ZQdC7QU1dT!gA#3`OEDa(W;^&m5^tc&Ay(IEX;tBZ%n0$MrS>XE; z;rWrMXlR0>Bu}(TPY|nRm*%Js*vE)~lYYwxs_=J(;uAgzjnnD{?A4;$vz!Rg_=+)B z5(6K9_6?`Vt{Swww9sr~M{PP2e`hir^=HVI7+CTG3qf;=kC%c|+!fB8A`TB$n-p|& zz3Kwck!gsI0tn38&ceoBF`7!<@%?i8O~2t%A!Bb{{Fy}|-C*ZcEg_Vp`|_TckTO^+ zX~TDN=YN(mn8t7?Z=$Qcbh#7kJo8tjb>JjB@coV-We90H+=>Gqf0Vj0LjxW# zB@1r#pvpZY;C7&Jsn#qNHIWGXdpyh;5TB2>2c`O%SdU&^VnFPYaNCxPG|Z;>+JnXX zCTNei6U4z2qKf%9up{@27A&7?EardSpCEg|LY7s&XPKlj4-u=ii~CVS{^-6LyOgb( zWJ1Zp-z{aLx^A*S<#A%nfB;glRn&1%S}TB5M-kiIM#&xAN%3&hHCnfRpmW{U7O zeF4p%;if|@A%Pmy<8M{0k@~5zY!QNk6t<|=rOxA}0kF1GOBKvt`>-$uge=DpI0NL8xs39Og2baxqGf0S_bZk;NDvQ^>; zmEI#JO>PQ_0n>D}%&oa}y=4CbLHl zA;M~Cpqw`iiyc9)e+G3^Q8_p~LS#|IZ=n08x&2c>(U)f>SsUR{29t+mV2uHwDEkhY zoJCJh%c6Z}n1E)Me<_#jll0fASo&X_oy3G& zmm+q|KPwBRT8nao;A(wH4$u^|XT6qBHBvA_*vwLnY$h^}!Q^eSs3?otJ8z7Y+pM?D)HUFfmu zCi(!bofx2Rf2WS7*E^+-q?gSo0l)Zu#F34ZGr?2j$)xrCvdZnRd@>De)WR*znO2C+ zsJ>$@Jzl*F2Y;>30gdFkFUZKGa3-X-a_(8mOj;?oVx}l}p#)qBq^tC3fH}FAn-j4% z4UjOQnf0w#0a_UJ%c5Hx3Mv6RVEQEEiu{$JKG9H5&|_TLm*N;5a*3M?mGIJ1Zd(4g$Rb2oNHVJ;4kcnXbOj%cO&N7rfS}Cy3jy5!Mu_bP66qe>J##92|6j` ze>$CUYmmwLh67es%vmf4Kt4Ktj}KZFXuE#l#}eaN+VwbMcO$_)!7(7$bC@}sITW%T z2Jdosl?a5>P&a40;vkRHpWRA(m3eS3@#;u$FpB!`v{eoM5|;+Yj8t~SIZE*8!(qG` z;no&RlF?~DN6GiVWaUqOZC{IZfY>BYe>?HT$>}is+k#k3wj>rbOcTVJ*GjaRw{@6O zK;3_rNt(26rXVm0f2Ch5|hRc<6&2OJor*n$*vog2#@FK#<0 zgHtt4NdQWf^`?rlsP|GX;c15lq5WRs)zTjlPNf425yk;q7pi{+e{SIv9nTbZi(c~D3HX4+S-@z@>o zwUT+wg*?e?vnO^3TCXdzJybLjZ8DTL*+B6Flo&qZ)8i62Q*YRc48mI>pU7^S>;a?&nv0BgRhQ*qjM&03nKy!6Vz6;gT7mJ>Wsh4o8Q%B_?rBd5OB!mU&qlpAqefr85!6p3_4v-Zxx4r}> zD?eHabi!3EH@v6DN_2=XeOvkQqF`sde!d$UkXWQX1|g8{v{2sLo&=idi{+Fnv`x3-6&JxE(#Ok~C>+vwGVgZ|JX{qaZ``r|K38wW!R0^+h<=rTFYV~a}C z>|+3`*kykqS+DYG(x#?aA3n~U(ey~hF@pr30OAf=;74&V{Y1h!*mc54H z_~W0s9?aZ#uqM7ae|_G$R^a;UEjvT9+NP3sVrG6`)}j=dV`b1eG9z{ffS!LJa{Q5= z3u^=gc8XTwQ5Z?n)-oW4thJJaxKyRt-vvZKHa*3k)#i4h4VH)>KUZd9*zTmHOPH-J zV|M0MYpgt9BrA-Z@k%2BS+t>S8NFnIE&h~Cd)@=4hvsV)e-1swHT~lz=1}NyeSYwM zn0QyNE=!=D)>z#YU&G8F)fI+MK@dr%d5H?81-CK;d)Rpzx=3;X48fKQbeYZf_G{lB#Lqe5%;eQ8*w|rS%*$D2|LptQge;K-C?r4)i=Lu`HqfFSYbykLb z%r20$+sm3-vtVnuD;>2u0L@(;QuPe@ae8cToBx&6Yo#fbd363xo704$e7NZf*2k6;SS=w8|&C*u%O6h4A=Z0{gnQ+JUP?w8s z=8LCKf4fEE*hTj@n_04S6}4}+`vd2}Fc%fsqA*hA4CYi`!@_}j%3kKrglEvln)3g< zR1h4gF1&y~Esc;fUV4~o?&wRqNegFiE5Rru-#b{_7gneWUm!FoA!yw6LWQe=X{Kkk{B`FDm;qSCE7Q`N-s7$@w=) z{*^5`UJq{$;EgeXEFUmB-z%NzFY4uRp~7jTge`x|l(&}4TX$l4@1CZ-tpVlju*>T# z<*hg6eeDx7<}cbN$zY|6`Y>8BobwbdF5w;cU|WBHWqPWVM~cg;;Ud$h4J?G|k=8~1 zf4gmgq1HV1n^ls`0N?0d_QdScXitmEEDew;H|3*Ad@1F|lSM0G4ND)JFLjieJl}lj zU)%{lmB^sXY3q?~pSRAE(~ZiUwyE~c`3I@-$0b5~SF~M92TI_nGlCvyTR{8e@d$db zEr2Nun8hP3qk}*L0S%DqpA|=H;WA*Fe`}loTGCGT)|4V9o3QPwWG=%LS>LKi#q!zC z;+dT6(RQ*2)p^rel|_$nQOzibdB>7SQGfuhE)yE^R?ByOz|p{c?J@+Q@P7KRq}7nT z)UH73V;uDEt9CE@MvLW5k{OI%{!tEVKHaET{+k(Dw7UdDw5qKhqAu_(rHz7te?Ed< zhV<7JAEsarlWgz=g%r^HaO}cTB(uYCJ8~%|qe_i8-fr(~A^3A^)etmPYfGyA$z-aiZPq@A3%7vAG zl?91AVJT0)6fs}>ZM#4wuZy0XT8z*T@~g>{Mu&s2P@x;7hl=E6`_uMGruW6_e1}=@ zc0gRQ{yRn&9Mng_Q&8HN%|A( zT2L)`p?9Xqf?RVJ<|$5yXGGKI(<5Xi-QS^r-kB~Gp4Ra78`E%28_xm^Sh|@Z>2f?R z7^bgGPmm?IQQ&3tiAXX{f6r3Xxq!Jpn&zc$EDD!x9;KNmMFa~LSfXjYx+RXq5U2X0 zN!rmL-9qI}0S}7ZQckgX<}#d@bqLxhiYcHeb-eO~X{V<<)adSVbo*85pp{V*Y5R0H zHFV&OE{0y8?rzzI{%WVTs9iJ8cu082E9uQ(qg}!w%^am;bpUf}f0Vs+CD@l}5@4AL zFWLRVw%ithZ$sj22+EkmJ-_3v^L>EeM|MP^-xQ)jvCRyqkZSEoa6h3R;X0O0)VZ9deo;3?Dm4mxV^ZT3o1ABF_jI5#6P=C;#r0 zA+q7N;>{xOF+GpR%Pcz7NzUFxdERx8sg#^J3doqz?%kM1e?0}bHhYE!M#1>(P?~Lr zzRwXQGq#I%)s)lMk4>-YWtP%PRcO^{#&QXe1yQ5@vRPs6l!V+h^bi9F7MVb$bM(Z?>N*X)n=A+sSChMYnitzA$*kR6D*i(EENyI;L_3OYG<^#YPbSZ^{AP!X(9i z+W=go9mS$ySlcdx$Cy4VUqlatcB4(YBFlIef20G`aWd1vUy*&&W9bEdMfiJPlz(Br zgVK{eFOM{g`+`s>{o8*mA6T<{Lu2S)<^HP78 z_bnd64W}I3?fj;pWi+?(;6B}Qy9I;0K@aY0?W7`a^Wd)K!CiIg!5v`+SJAs@EBtGv ztryX*a{ou`F*5J)$mjunjK}ShQx5PWe>}h+wT$QrPWW-l?Q#_Ji5}pkdVv4Qqp+Aq zVa0zK;16^cX_SO7TLyR`MqtIs1AK3LDSH3(Mf6~YZnRVv{Q_9{*UJ+`C5G&;m9M9d zbHdcN9o>YS^l~fJ{h|&TR%b5!uROe8^6)O6B8rkey^Z_2u6~(9O%6)7^mm`!~Ft};xoEB=`wq$a z>11=KETeDF@iew7?Ji07V?b$lacMuCSlS(u?3aMj?%>jXmeL+Dy9g8NG%+mT7W{;m z0<$}h#nl&zn$PjDz-TmUoNmH&CHN=-`y`mp5}WjYXdZ$;w)&VGiw?oee~s?zoFUgd zKyy2LV1#WO6y}5Z3d7oM;90hvXW4?{Z91-ZV$@M%vI(z8ZVs~F`(Y!_=yV9n1W9gNEX*olbZ31S- zEoKg)O)f_Dxpo;i=sr{$e*qtPmuMWM<(V`qRAUTYs{-uV05_@4X0#7tWOItjw2G9Y zn>?GP?oLtrucU{qS_uW52$^6!Z{TwaztEr=;*rQ3P%*-XWB9xY)`Y|q`7b2Qq6uj_ zt}Wa^rRM3@;_w~d<-rZS9a76>%vMndj;a0b6p3l0*DwPVYD9L;wsc&p_n`o6 z5J4M(A_iC&FvFfFthhFMZ3Pr!80X!{D&dT0t+20JZspI4S*@PQ?FlbdhgS(y*y3=j zi(Ks3-THm&Kk}mGe{Ep8)AjCe*D`$8EX0dl0|Hd#X6I z4xztBmyArwl_qtlT}$D``0GE2b4NBNeQsM{&DmihQ4 zYA}gFZsm&?e>50V_ypj%pWUoO4&J8(rWL}` zV3nL$CdY7bN&0jzPR^)y3_^sJ!H`|NGX?A90sYY^b*p``Q7(Gfw`1%JSZ15cfz)=3 zNDv4XCdF^)DeX&E4^!|`ea`eDFk-e?Iu1gf1`j~=e-Jo3=POr_{%SyqTqg5l{X3)& zq=VvU__QQY`&^1hg~_2d~0mQDkkQGWT>yJW&*WP~!RBT&R+NREdK02n5UMO^R{~_3;2=)RlXwV+|C- zg3Sf&e~{p@Fx$kDlZ!ezaS9ubV9v(c-r5Z-MdgJ4Sl}=_I3?_aKHZpwVM&xg6jF({ zjcD^&_aLdCMeSpBAGpnZNrJM5i$8-4#wXbtxjx&`^;eNdxeFQfj$|IH5e|FAzh!fW~9v!}NMG9XkeP$hn`6VH} zmBu$a5;#+EnkiVflL`Taze1zfM%gQ58il}B(-q%O>6kLq8xTa{KBFIooE5%CZZLq&Ws|4TJD&xu14 zf39vW8YIrEhzKfi8_}q^`^|~TZgk2t1ZJh8nbdnzcrzl`05dClg1VjyLu7|1l`BW& z4(^4%L%S=F%(h})?I58;;nJK<6YGH}ucG?-?&}5m4!MRkGHH;_LAhLLbf6IU#Qfk*_USOeuK$W62wC70kYvTsLiVtG{ z?XE9|yrkzgU)?Zn=)ggP$Q#>VrBS+@-ZfT^u;%OEOAX@OYlN^=r6_%L2&{`_wLm|k z(!vm;6_uNHrnSR`&1xd3#k$>SI|11EFelzehTNObXa3n z7n9q{#Y*L@2&V^o^}(iS3&ELof8z{m3r~~jI8i6-pe*ZYn$E%VWHmqSx(Uk_9Wzft zR#kb)s)1z~d>k-7V}~L12(@);n-eN#ngl@M@%R)-T(DD|&Z>1FVy`A~$-0staR{^k z5AU!>H1#GXal1j$+QjIVyY+3=ZxXmq#qa3FpyvNb+jzhIS{%(SIieQjf7(E0(>2sC z%tPgdu7%lA1b9X!xrYT3w%q|^@26`8g&`sIt8c3)rDS$4J`|pRMC-WbATC!3v}Z@E z#Qct*c;HZaq^j_UKh<3(m7^Q|Sk+|BYE_h9qxP`G_!5;KO8B@cO$vNi7x-~ip|!gu z@d`(SE^;#cqpFFytQW$;e|J6lJNd5sf|9(Vf(cXl-!!%4_pnv}E$V3iV5`8J*7@13 z&YgwsYfcop9eoIuX+`VB>bN5qrg4rNj;bQ-c)$1q{j83IQ|799f1q<67C!ra9y;QFEg~E&?mSzi92mPXIPm?T0!@|y%$R)k_`%H&t zsd_bw-~Ol?prX~;fA-r+Z}Z}IW>|o6cvTaZxI~g2u#?qDvf~PIQy!34pV_Z&@xnFb zmN2}!UtWD~zdG&_!<3(p?X+J`{eSu8Te$@LYt#drBScAw{V`efP<;Y=K~ZkK?&*ac z(9^dRqr6+%qYHm6lIpbAJ-tsXo@iNz+S4R6Rrq@P$vv%Te?f-^z*9@o+w7zVr^o7d zG3X3k=I!>&&+(F$cQ~;#8l{Xo>|_U~N5Y7t13Kduc{KoDK%u|Oezi|ZSSqi6mRGaw zSD(nMzsjpqRf-mONDZvU{gU#3@YDWw@gr{8cQ_kFUpyf5{VN&OMKZ_7(QA5+Kd+Jk zUYXLimS<6!AaAUy27lxx9SCY5fwrMXtKIZb5Lmb2)H4V8x6b<sKgk zOT~KAkSD4oM)jvbG3LP<-LgIYmOaTW+htnwIJfM5bG=Gj{(pKP@hASo^_=*Fpj1il z7$^SFTt5OUO^d}nE zI-5y?y&-7Jy0hwUEkrVjI&VLPd;`4Q#vRl=OXGvXXgAw6e z8VA{b^Ho^D%|ASD`-U6;v3Sbt5CgjwGrA?!Y4jafL2M6dDW_ZFjo|CQRof@JJhMMF z>omih>|ROhJYu7`Bdqp>*USWB)E@Rms(keSr)pKpfiK?t-Kzry=VMP(s|J!U663DR zcmgsDQhzP?P* z1_N99-!iZzdBr7D3UBVu|IQTRe?m#&)chM;@qe&jO1szlnbJ7u0I337See^I%RsBc zGL(&0mRT$DpCF<}UCQZ-Bd<*fVG+EK+CPfIAh#eE`+vw!VJDO@rKJQ?8Qc%W!rG@f z{>z@3Ryc+E``k0=l@qgMpJ@<;lQQBryQs9FB!B7|X>>6hg#~A%{cZiNyrQCl!tBz5 z{C_j4CMPZ|DmFj=O|#DMJH_7O8z*oM^LwV*PSK0S|JC>Sb*bk+E4ueR?w{m+fMW^M z6Y3Veg7<+G*nIX*RGGcS#|dyfz$`H?sqL4B@30dgOji!iV1x+*Oj`ULbtgY|vD`F5 z4N}E_5pWjV&d05&A4M0T#0iip(x|J){(ojBFNQ?^Vy4=v9i_r^wMuUkR2yAlSg;=~ zF=E^jzz*NF)H&)#11Q4k660BS!U0pPC&Rx0m@CgRPi?Bb|k8}K8i|!yQhtt zEoxt@U7EG)#FR9O*%REu+Q(9Zf|N5x`+te^#xm&q;lLtwB1TL!9c7ML; z*Pu0%*lNcpV-k+Y#LK9|QvC{>??&^g2en^#ilRJ`kAIY5A|FM0F7E-tM&sbq+jA9SUS&pt$W0i{g}oJo zTIKUUiDP~p%rGeyrdKou*EeD3?!QWDtI+(F(ur56QQM^_eCHhdJ5%tTv*kN^Y530Q zQ+#Kle5Z?i=O(@mQHpNPGwdq2B%%@TBlooa?)7OQVRUn$J}A*Z#K{+{v44HU_{R@V zsjfwRDwZ)le*~)c9(2~0@EuFI5|bfngmLMq;xQH_Mr%1(0x1UcWKzT=Z4T8jx4T7Q z#%eoVS8CE|{jMh>3PS~*49_dz!fI8_1Ls>lN6#uk<-IMW4egh}ZrB$2 z#e)*a7OC2>zy-8EJY5o;!2^h-i*P$XI2W(~<%>M!9dE8NG$U_t7JpNmSzY~Q~eBm@_JB%mS$e}flJvCjMc$qJPUzLcUrD~@=SFeeHrBO_hzX#pflSh*?l=r z_az$tuCKnO7oQB~=4Lo9I0|L_g-kwN0#Lr@S{1i^2zO%&#?GCDtF5?74Y3rZ0GlCM z7cdB#%uCgP5MaL~;D54~keml=CD0O@@CW{|?f* zSpX>)ov`%r6Rmo?q+WM+gLL+rc4vo=)qP!>g?l=$K3;n&_;6rz(o9^Bo zoD?{BujW$270Ych6<6pMyk2R~#dO^*+p8jVw*cWJN+oiWpRY=28KGAkXtIRckcL>i zGj(rO{dGQ5|Bs~pEA9Hf8EhKR;LFlawgneZ7l|t&&lmc#3@t(Jziz30rU;rQGFO~R zE>c~V>oWsU5`V!>`xM{%%KqL$`+Hvo7w{gwuX0&HB(w!5UC`MDswFxaOPO5u%@Ieh@9z4UcI6B63l=x|+z&_?6@ z5C~dS{XKtr*Z@@Kr{5V`?53$DXU^^YUhWWu-&9yMb$`N{D9n*~S`l~78KmVNyRk4g zuYYODO^Nd7cZ4{bURqf4dqSe!bY>yZ{s;8^ztuZDTYkehV}K*wo-S=W>z#8Fj%^&> zo5d~xd;(w+ml$8qgr8LrZ@1PpkM_lq`Qs*AU1d?;Xf+ehx}{=~jh#sy4|B#4vM9o7 zJ6a~IwSSi>8xJ>Xn2NLJtLRI4E%%lqt0KSxS7Hlh`fR1624AZbqTCc_Q7@|FKPk*d z4jV?5h1wRNtw+tHq6msG#}yz7BQ%pW1DZTXtPPD8-hhXtg`((@C*s>E%A1XVe32NY zNF(kEf=VXIL>&VqQwU8C$bFXJbEGf@<1B?)_J6mO<4QY4Sd#5S)~a3;Ti5FkQm>l> zO75CuJVRSoYkcc!^=zru^#PeL2&~qGQ&lS>2^ecDY7q!2)<{mCmnbN6%Y zzN~`6hY$!Um05J&ujz}bH2vtXJX#T)ik4Jm>4*D$qxs<@obGcw-FK4iF@Chwel(ji z%^HZaQ-qQaPX&f6zvpS{bp!C#JDSSe0Do?ih;~G&h$&Iv)`y@T`eW)Kgv-VMS^R$m zRd~taM7$4@_~A1R#l~rqMZ0 z5!dFczVX5aMdPU00X}!4N<6B14Ocn;rH}v6-+@H^Wq(kN z3>K-{MEF}C9^(7W1%i!K#L_%&;CDgHCdSfm=44`$5QA_d-k-CHCdIP& zqrLQpbNxP)vWsUbx*%224YBy839;Ojv6KgknIuHgqxN>wF4j#Ofu@yk1tOij2bm|X zcpXL_^XMPSHG({a6vlHh(ar=R5r6U9=_dG)CL*1jJLZ%s?Ry#x+-Ig_F{toh{g4F( z%5qa^5;?ho8E!MQJlIp*fc8BrRRUk*umGq0yd?gl=%=7m9@TNnpCu zX@AvL@@2{YTLlFMa?$hEY4mH5aoH@v#GVCH5}xfnc)?^olrk8fY1oQET z{L^MnKpu&JETLN@BUT|WHIm5}nIcvz;5>|(!wJ{Bfz{2) zc_9P0H;b-y(?w29KqcsZ0?^xbXG_`F!)StXInU6c<7h08eiT!@aer?4X$$k9j{@3g z;$#k-a3M{L95_@L*D0Vl@@8d?9B97XDV54%5twCKENny|JKp4$R7F|TITr*6sOlc~ z5blGXNi=OV6~>A!MsLK?%120yNQ%jQoZDPc$h_$I2#dA`bqhGcFA;%LM=6Kk{#F%~ z9F|c+JcU?vI1#|B7k{e?175vkzY;8E+m*}8PEpfJgtJz(s|qTPH4YEUhrA<)?^vpm zed-HN1`J#XNjw*;S(3JRTug7musnHTP0)>M{m9B(bEL2{!yWU*j`sC9e*AR6BmXNWa(3#Y*m`b zKQnl0{xOM0@%hLa@jgswHHFW=t$vQkf>Qoka%-8^tWm zMp$%T<$Anu^r1u4$PCAQm4cMXNgWr^H+ZDz-pYEO1onH4kPY7N5XHz7Op&iBm9Ljn z*7@HapjG_jfyz4h>_GxsxPoU(dA$Vv)Wc%oNpZbDB7a;SuL9sD#A0D|&``*4U(ai4 z9Qo>KLL`r1Pv#o?9_Ha2j`fsynX)6GN%6_bhl4#=q>@0NI$E5dnvYaY9#MA|y&05R z2nd4eI_PRKWx1X|RMuljxfE}iZ$}RnAHEds>J+KM@u7(WdBaM-X@-u6A^h`EU{;k2 z2<{lZ6n|vmC<<*HtPYVkg8J5IgJ@8Ve@z<0ee_f{AY!5t5%gD>xSc?E#vEQ-&C{Q2 zu{CI{+CQA&zeo;533?D%)`$$VhDra2oO^$Yn*QW*RnKfPwcm+v1E$OZbCJ{wCYr_* zJ{>wSf!LJ8F#%(>pI?J%Of85A0=g6~0HBNHkbm5q_tIBE4VZ+8P-*EWUj%jIiXr8F ztx|rYQ{LN>@@q~RVziP_m^ylBsbjac4^I{)AC|^03J*wT?f1(j9|j~EP3@Zl5@nvQ zsP1Q!s#9R9E~orp1SzwD3sJI|cB)lkkt7`Z+hC#bv@uj4P4Xn<@w=@&(uDYUUn^pf z&^4!oy#@u|2}6?VkHZ97|SJ7jcgDJPE60$Xp^3@zmjk zpbspme3!z`3JSSZ<$t8AC=~cBAr}1@n#(o0t2}lTE%3plf){FVtvPp=;B|9-%Wz2E zTL!9+O0HubI(QSWb51Tk%#LnN3$o}t-hV*n`t*KjjnebG8<*8c_xZ8_997E~5mFL; z6WoaWh5o=KU-2pq-KlN7#?TyJgb1E=G#GGdRVh?!s&*t8xJdJPJ+xtV+{&fx?Q(TT zt(;t^bR<5y{p1Qa1s~+}TnPQlSBMu1?!385mwKxscMNxRl_4w+HyYIgjcVjZ-G6Qx z#oK2{8=4)S#QpV48C10ULvg*NJT`+fOO?mz<{S@(Zu}Ly2X8&OLd~eqZK%+(V2ro5 zTTCnOGT+i)Kh9sj^@J|%(PaA|(+}Kf9hZi$ctD7c?0`iAn3(PENy?-7HP}SsG{-Ec z9I7rvKxQFc)XoX+y0epJq$wTSQhy-9nRVt}&WVYc&Fn2jz$E>_A!E18P3(5 zKU&`KrW6{Zb5pq+Opv}VVX-I|iL1nvmFMO_^QKbhwf^QLr33B3<^l&W2*DsID^Q0xSV`xBN&qg{wv}ntyZQ3iS3T z;~ji}y2jbV9C-bW|Jm1n*2xDAX7UMZ=u8O&H(Pr035>Z#yBq~#JTi@w!`D6$A}T#x z1xo7ZN_!lQT#e;bb$YU!aYVK)^mx^1ddIP9V!R?jddP-3E$<;&w!Q%T2-+jMW=l6i zA>Z?pl4{?!54C0|Lae1e(H1w%&Y2pm_O zd@VSiCd8sr;KDSWkT8S>WbdrW><3o#e6Of?#pt8>^^>S$`e+g}bpvKJ4g0 z$GIkSE7mbnFGts3ygKB&1!!Aplu|6ZgFF&jxS8vB1s$mzt@sftXhlm6f2x#WokOW^ z`lZrs2l}Q}|K!AOex9K-)zTj319X``I#^J>tI7}x$6%@B9A;xUCBNK*UL0vSaM1H5 z9a4=s)Cg@3^?iUjRDT;A-P*Fvq1tG3D9djS6+#~YyPO#!gvyX2U+EzBO)+YN`ZEaP z(gML|@2c?%=tco}lJk>MGUoj-<}7bS$XuC>gCaUNLys|1jc%3dTnRbE>n5M4MijiA znEvhI0TSZ-FyVmZ>yRYeEU1VOA>)wn#R96=(J7uI*&vBUP=D9(gWi0b4Jo=qDlaqu zqf!Sa%(`~dGe=0ex zUYw^y9ML}R zWe&8i(r}(XazCuBG@J52$ZX0FOId=V;kb|&0~ffQAAjZh4d4dQUOaq=AF>$q2{lU4 zjm#9;}HzKVeh^O#*i&d0-n)7S-adA**f zR;dKwy|&pLQ2}Y?NQz2-f>V8Bk`Q?$(a2LJqSC$b2>r0t{;pNhQerQYcr_<}9ErVq z)%?~UW;D?x@TSHTIP*`;5Kd0sy-i)iYTE7P8^bDfZ%0zB=f_12%4Dt#{`Au?| zpvhq)=XRlsR-5vK7V?X=g^Lt*avCJjbYScB!@@92@Qrqj{>7Iqi*L04wEMR|Z7A`& z5PwaHRk9rZzHYvavLbj&iB|uuLd>8Y+K*=fG&OKpf;S4+Xa(nbfHJtKIaRT^cA(-1 zm^YBa5w7tVW(_C1sk40eEy4C%p=atps^CzG$b-D%{-UgM^#m+Ov(_t$Ocmt~;?ign zS$HOsPzCc^Ak{eOtIWCkEqo_Sf z+}x9War{Du9g?SB?T zz8(@gSiMZ|1RMrF2)%1;;-LETJ|X<;#gvap5v-WggeMD2qh zE$3-MFj-4?O2fv)6}v+L&C1?Y;+r)hZMMeuL#X=^^b`CVn1AI`xpc&9 z^K5ezGhhJ6t5uum2l0Gxxcp2cv%U0FXk#me;ei`CUThL3ZBw<_j(y|HvV*R#L4@xL>lcI72I_6FpuB=WXOn>aqse8~flA76( z6ne87hv47}`j$o%*H7^gU@6r+BwKmNta) zmS1iUz=lu{SByd%uBR>h`wYL_!o5iip$F;ha+!ncLNjQ4xjnP$c^E=-ujeOCh*^rv z@A1ENp|w<%#aZ0i(|?dl@<@qKa*6Mj*PGug;0-P`T_f}EA1(8aM~^#WyTtXlU(<&D z%sPIg=h~{!0(!r^$y8$%SL6NiEX>dyGTzw4`eWr+#g3p4?dkC-rpIo3dRSbGRXh)t zIWP}GY&Vk-Uh6A7O*{cs@C5jWnE>38yF*vCXs2d5pr-wWi+|^$%jh9JcsFPk@*knA zTCJuP(kfo{*%}VbaT$G#syxiO93wCw12|73r}KYopDqI7qwC>6e+L#G9fl3;d^ysJ z5|}uDeU1hPsM-FiY)thLbjYlt1;U2Gm%5(*<+VF*fm%ghd+YI*f3s-5s!hb!Xi;UI za=nBDx2Y7IYky(7(p=G9Qdc{mGre4%hAHt9@E8P4LA)t}6)utQtT=rjuh+iJ*k{TO z^SnbQ`3Sq4B($`{b(GfVvC?r|ZdBPk`Q8a-v2k5_1ic-)iQoH06&|6tc!bvam*_5@ z1-yg@b4OKrX(P|>T|CVm_s{NKJP991YTCy6Ht6}x9Df)+?VrzYGc{Sm^Ys5A?p@%b zF0=n}=5vOJkEmr^)Y?T%Frh>fE2w2u&|o*MaLcxh5-(6;1_~%MFvA#DTA`&DR+?#E zDk;sZ8E_Sgt-O@I#?BXS@bW3eT<#*oac|J1(Lh0`7`~TNVX6CtH&vWkQ9X?*5 zs$;WhNq^<9fT6#0m#g{gf5>P5IjqrYdH6!-`PE9GCD!@a<8ycbhiH7>QF^)3L$7nq zSGlLxd5Euu_kE5SThQd7&opDNXHrvv%Q}QA#m(U$+OJnpENZM9@Rz1UL)UZ^?Q3!n zACM!P<^e;)G?x#FTbpc+%WZXe`H_Ofq)nek*QWWS{-5!hQ`{!0`J;XiIrKoAq+fZ|_m9V;eqWpBkNQti zcYkUdEW$n>0K{E_@u9EBTqyE2)&P1JLjChEIA*1>809iqJS54(!G!-QW(UqRtn8aT z_|*~Az|H8jW3Hs?Hf~27so5ISy;&N`hZ=BS_#<(rLfHU+SK#lKs5;8Zp~Ad=Fyp6G z@+b4(>$;=)`$X6!#@*b|kC7@iu%SW& ztHgtTP8=Ecs^iy5 z{(fz1Ezw>DYM!UO&P zrPzH{KTv)}iYglT?_rxxF{{EDu^0R1)Px#Y?0!uSA*!)rDl1pO9+~br#=#-z-Lizo=Jb#?H{6*R4 zbQdH)lcpg;=RSm>{3G;G$PLTxkGzJLR3B5o&vb&Uz(AFij*th8sKUZFL8T{N3>kwX zkVhrgqA1*aC!Hla~DU|iZuwHNhFx;ELq@Ph92AiCZyI%b2^wHMMk**%nw zYN9zM7mCE6G0ApwH4Sak7=M0TI^3YTsKi9vof{Ob3FZmBLb=ly^JVVJjShu0Jr^TJ zJY!Ih0|c|L@yc^r2gLyCm})}w#}T!7#EtmP*}1f`;np}a^Y=C) z5(v5TX@7O^VZ(1^JfD$kZaO+uyxHQ7oDlSI4o{Vni}Ehli8W0UwSQX zmOOr3Jv^8^nh;Y!|BfmU=O6ca<=yN_Gwnm-DUO$%ckBHMvs=sU0@_{ymVFNtxlp3Y zGb}w*Smj?=7_?@NeMna0OPz2&J!<3JP)spxtq3vi8AGqL57D<3$(&z+PlKU6$`tLl z6$X!{y z8sLzbHZDctFsL(#HV$2yO?k=Pp&CT9u&34~v^C}sJ>kt0-4JJBHXtcg?K; zt^GW?J7emo!COz0W0JT+y$E=09!4$sd{peCn|)O6qtQMnwB6>TQeUrk_%>C=@x$)w zB-(2BoIY=Rbbo07JBUn@P8%zP5?f*y(?=D~ zRe#QI>_eOQXAz&MJ7aT29rx+#c-4nuw;1g!X!1^$Yx1@PcCl%d4JvT0)*#wKYb6;s zEYmuh{>E43or)6E!QbrK%jwOE68@6Q$y2y)Z6C&jeyP|9!vgct<-22P9YP(4tQAH@ zSSGxrR)4zN(sKX2W4%R+XP9XMOVW(c45xGD%CO%~v0@15lF*de6yc>%Tm(nCTo)@C z5*$83tA>K%<-Hg3_p(GEA`NR!GFYOQHQ!FxS}H;ii%d%VNqV?<^rx+EL*k{nbKOY*GfZP3Zf@z-nI2Ca#1&23N;k8ll> z*+p)P-@w(;hno1|;mlX%`@7Mty8q!aFU$8gqnmi(;q;XVJ4NfFu`n+(O@9jFPFbS_ z|2l^x1OoQLN+!om%C|6N4Y|`vigc%g#eXf6f#S8^(e6;BuNuyrS%%KOYlrU-$@ksu zk|Mp-aQcigxTyI-%1qOCH$o%L-LW{tPrXy4cv-QPV zfC8f8OjTt_&&;i@G6n~Z9I&MUd zktMhHEFWG{1}NV1+5v^dw-gl@_AI)6Oi5|^HN$ToGrDj9ascmdA6`^^9Ph#LJHdc+ zhU2$jlhViQ&!N1O6U&^><8OWBZO2h|WJz&(p|{-mJkd9j{~bq_5x(-mvYsQx-F$QC zA^lAc78S#b%5Nzx88_xQDu0xe^}M-g^zkevkD;hU|2-a4y3xaLkw5>1Q6kWS*WPo` zf|GyKSM*u>o)}-zZGP15qEDcT^~Gr?T7_Z8Kh~d3-$WhaUlWXPK;gGiG;Ca{Y9b^3 z?sd?V7N6qemSiSuGWoTjs=|I?I=GCAu9XR`XM5%EDSB?KopJykjDH~G1Zj<^jzr5R zXa@)e=hV?7x#A+1z|hXybjc6x6n*tv0 z_7?4f)4XgRGfH_3B!3biKMBDG>gW~ev7XRF+AqRXmq^4n=>hJmF5yui6`@P_F#tVp zHT^Z2&fB2qui!d-5SCG1d{E@f1HosI7?0N3qHiHoBe)q>QDc98T?QH42qU30vZWy= zCletngUu5-orysQ1IcPch)VcbMci5YF{EdO#1Yc0s9SR5V1Fmsvvq+XMrPXRl!`3+ zw5t&|Z})(mdA&G^NcnP@8g9Cr;q+rm&`;Gk=E0HbChl??D%msn+a)SL719E@42D7! z4B~#2WxK(B9WiE2z#i_m3wW)lrt9!$x93Ao| zyQAr@7>T5O$U6l~Afbg4O~>}ECR?KS)v`;IOK`Uv+VDqD6KMZaKb z19uPQ(SLsEUe96tuP3n2D=ApmUyV>a@YD->sslO#fXdYR1~vLXB+24i7t!JB2L36r zja{p`uV19ErFy)Z86(OBdibPous&hC&7tCta<@$jf^lGE$6~5X-taKK8ZTC;6UAeB zrb-d74l#9ljNe2Fw`H4VAg>ITG^tGQiTF^YW`D?ksY$*DAn%U{0BJ)nw2}Q>Kfd08 ztZHSA1OtkpR7d)jwu4vptiO;^K4QXwX8LpJTNGgt-7cSG|?L6=)MC{v}x(TwC~Kq!Qo5%0scW z@>%MYgRwtR4cd{LrV39#KEK{L>ZT7~ZS#Zo zbJK(8Ebmv<&6amTg)FaVxOd2AD3LF&!2}G%hwlNjJi@kZT(@H%?FZw{fH*CTE)W58 zn@*D_bE69_QAzFC-yKUUv>x&$vX@pi>VGWfBs$wGMeD5sI2oyqJ7!nk;%mtVuqcN| z7MnrEdC*zM0)8F^>qdGan8T&tR$<4vS?XC_31Juh70~&zgE9;ma7tDS--npc$<$`A z*23YgWm0(GmhsSH>B9hA*U-2eQNP(BR!~B=J!@?j_aw3`R${{&>D{MySF}}*^M5So zS`^8tcsy9*#EhP%Yyt6jyy&~AVo@1;|Z!sUn@F`q0RL>_~=f-(dDtcSy@PN zaDKwaTOgN}O?UCm7txP=l)KNBqwty4>?kY@G=)LpEL6kzgS_^OT3GwfW$hF7n)EmG z;VS(jj?&!bM`=4BrAZQDS?hT)P=5jsce8VS`RMf1>w8~IhvswV(4hP|jV;%_v!$Bf zMjW^O{_t_TkL0-h><=He-E!QH29BNb-QI{P<1q_u7MiB>vXv9U`35`}v$D)!&6X__ z>4=kvt6|e4ftdi*a*Xb8?HGM;ZRhN%a^k*|qIInm-EM6M7kSVQvkU3~&wpiU3)}Z` zE87Qm?f`{btcdeeqtBD-A3j%4L<2m|4dmEhlEpUuVkE`XzE&iCu=1>dawD)CeR`)` z5aDWb1o|OR0%PSQaWg>=SbUEE9RLqmbV6uSKmg${78IF8fufsiGJKcP#n?;J&LFuF zc-g0mj;7V|NPnu@2+L)yczXPS_{ihH#Kv3gg;i4?$_OpRe z?Zz+|nocHcERCv%3mqV;DF_s5AfDh2D>><4Xr4d2BIa2O%$0FQZlGg9_zk#qpL4;d zE53hXExI&3O*lift^v@v;3%U!JDhc~pZbldEQPe_fSE*JMfP?Fbbmt}3AT(06p|11 zdH&q&jANB^O!Ww_Q<()Y6t&4E%J#$SsT*{-571gyGvM)RbqIJ2!k6{U9+Zaz&7i>d zUVU|%pk9n%0K>M@4*+fAbFm=kV_5Nlxh|P}+TM)HF#6K@CWbpq1sKMYRUl|C%?*0s zT$q3NReA2V^!F-U^?zyH=NdO}A}tK|2K2oVwor8Q4nE(@Py(pRH|}EoIjbs92s9l` z5_~G)o^rwOQr4%Y(^i4L0x3a>rd8o4k#(&yyn0!Y|bkV4<&m9KWn; z0a{IQhv8gLe#A%T(AuavMb|JwL50ao{?RG9baQgg3xJVOd4C~H%J?exP$~Dr#C~nm za{6-~-JCaEe1vH2&^dm&Qrieu%I={uZ)FT4Q#53E>mgkpdj8TvD8BQS3zAN;b9oWo zsWR|WFVl;W%k<)K^$#xcjajEh%|sB*V;!e|QUw_Hh#N3$M^!5@>>>Ad9gc>FUENOs zu9{0qYl0ggLw|~^p;MMqN&!Fcc@($Y%vaI1AO)8>06`-opjhAtMEHHnxEH|V+ZlmU zHF6P5)Ayj=vaNi^Qt8wJ8l6YqRWSnpF-*IFn0_YqyFwaQZwzD4?^o>uRZO4w-*M1Y znn+2iqxzD8=o>BuqBJX5$kSa?1rGg6nfhB*K8WE%z<=~8_fo}pjE7!v)$u`JS)D`6 zT!&&C5AenLDjF9DrtGrZbA(oJL))SSlYLw?##UJPSX=~#+M6VzSa&-`hpVvs=JMR> zUd+R6M}G}fIrw>(d$}2=Alz97U*-b;sj3%&1D_NJ197*fS(S0bC?GeEKncPzIVoFQ zuUQYdp#10n5RkPPIQG!QQvmy5vOmuNDPf-z_~?8a{W40b@IODs|eMn_aR@4?soPuHsOMFn%7PAI`Bn!WTVl`{Ohj(fhW0XQWrKvZ$ zC$405r|}JMg5>+_8b)oh9Rh`}uaDejol2GUZ=U4L91g7dYm;Z^-mR#m@*e7)^- zF}0K3;msMRQvReKgm%y@J%D>%jah(kLjYGPV}lVUhBt9_^G(bG*wY-GRyXAQ@P_2$ z#Xjo@cI1+5dLihU-rb|A?lWtg#mvKE`hT}lYAqCox`y6TGm1<&D&+-$L#ctPOwGmf zq3ybQNJju;!9*#MkKjW%k|KN91TIn642FUpYQNf8)n9jYnB_NFeE2)DTK*HY#X$f& z0&D=t{o*T8t?~bsRU7`_K3E3Cr1C}jPjr%+^s(v(zo?A|LU$%Xkc~31S`2QnM}Gzh zougUiVYGTSP=|HeSLD=6~|dN#7ZET{n&VFm&AQK z(92#VsMHW?VTiD2GbO;3WQwT)wn=%KCk?oBykF`PLnx znow$kq~6sm^{}Kq!l{iBsb5R#!_88^k<^-IEi~$3e09+u)0niao;kbm0fZJJsm zsYjcoP9$miBhz#^W41Ist=af?>ydnT%t+=)@k7m8pQKw~e@yYYx}Eor$(SeY9BkIk zy}F%uj~V5B-OfA5WGs|+{sfOEqPs;kl_l2mE;_<5U>WCk?qt(xorD{e;yxM94Sa&q zYyuXk9G2Y4+#3Dc2Rg{!&wn{no965b=iDC(CBiuu)825-15I;&4ChR1n)5?AXL{3| z@54DWn&#{Y=RDYSY`eob4>hgxT{x$%Y0j>2&djDcJHt5-H|=LfIOmb3b+(6d9&K9Z z+i=dTrggpv=ge+e=j(9JV@-3u3g^se+S;~o&f}4Fy3&_A2fIBtGJof62?8@DBtN-N zEvNb35-q@j1D1a&_?Rwx_)#^>?VJj#>wq7?NfNJ@(3oMt?w~oMHKBTCl-xrf8-0vUW#mTQv*F zZaz0fxm+{Of$%){1b;&qG!fgvU1{NQ1t)X-r`}RJe9WyyBTt~l=)&^y;}ZA&f2q?o zvfMkayy$pj)+g%0_P-E|i=6v-!$L^m(u&C9$D=E8BFb$LS?7Kb(q!vk6xk*VVV0>$ zXCTpriLQUULMK6`TNEv!Sb{i~$~yCaCdZXlph;0j9F#`c zuc`baFC-f`rY&mQSn*+X8x-ej4^ol>0+Qy_1sk-F9l@U7P?-xD)#^fOuRLQ0?H9s< zQF2C`((5RuK!4H8LE}YIEmD*S)$%C@zod)2G;kta#5B-f3elY}SzSRF70_SmZ5rmG z_+q%ng!+3GBr@=UFSG$vb*^%7RCr4ySB*ylUMrD&4NM{0!-qypKjW!`l)=Y6Lmb4N28MIjDG?uO77l+exEy3(Jgu6Z8PPH z=hRnf$WfK0J@{#lSZ$NUVIyzBc}G=BI`oH6NQ0<9!gH7PN_6JnNBXCo0CO5-ZKn{y578xzy$f- zhI+Uxa(@>*$43V;m4B*9*7--6qB$Q7nB+dni1Q(nN)s_TVtG+EZ2aBlJuDd{qcGG-&V_vc61Qkjt*k9)L5Nqoy4HX9ifBxu{iJ$ryEVwGVk@D zh+3wbexXRU%sc(P(Pjg+rj~i6DqaTnb^Bw~GJn4)7PU+_)wqpX=3%Ca7459rsD0MS zDt?2Tw^qV3q=>&b-h!$U^_kKRDflwqAf6znIsPnc^6$fod`_brlOxo2wN{iKtsHfP zGlefJekV;Exc9m?C@$+lU6=gA;(?lmXT4l2}KPSy9NpF1>bDy9qMdKh|)1s z@5hH=CXfhwm|CJ9Q3J=Sjtj`mYc|W>hJRN3C#nSSykDp7(2;-DFE)N_wf~(2HAF1S zaqxj@jT1-D27N*7myT)yYQ5nX>%Ld0SoP~i(b!&yt|hF7P482k{F0W}i{v1Y6XuEI ztn0XYUcEbm@n-e7%;$6np(+$D2y9d#4<1{sq;%M!g{pDdH&!mnE%u9v*eA434}Xx? zs5=*ZIN;$YObYI_l9;;fn}yP|Bxr%yr+sU|0PN9#IC-o@ zJSR}Xg*RJbP`64?{4FZxoJGh{$m&P!#A!;3x}4VyJ7!(fXhMXi-zv+eV@X@R8|4&H zaWXeBUr*yF@iK&&;K;zB&7bVd<9}{(Fv_6co{IjD`a@FzLD_~5`(fI6R8QqWJ(WE? zm7#D?eco~js2~Gcm>79du7Z=~N&1jToP|QpA;fzUG36711lenF9^-mUaF!*c6OYE9<64=ah>}PJeCeBfoPf z-uShX@aR^;(dGK>Pt})6B+6HrFJQgt$THf;+$aO^v_Ed!aU*X2rK?vAcLx`*KObb@ znhat*e!79e;eSKM6EA%qItMP&ApCf@Quh0A(c7I{yGQ*V8Cxs!OAhIrYcSloCH{PM(2t%I)5Dpe3WARC9p=q zTn{txue6)6ltl3z#OJgUYECl23DG#djoQb-UU# z)nE`*Cc4CW^y6q;#FEm|TB%O8Fz z#waL`q`W!k)(b|csecM4L{|*xEBLVRE`fVloexNJDL@I+G#hU^z@q2EKVR6n=S@A& z)x2-J&x5alcYhs^?0a8m9!#6(!lJ91;Q=FCbb0{~D+TU4ZsumM7mQkbzQJzn8eF1k zp2INy2bH@0vX2m}%=G18vinpc!+|z5!zXk9UKPW?(?E@dU4LN&jwyzgv~Sb4cSn4% zv6J=R&j;yr_?Y?8Cw{jYBrIt{H8#Z;vG@}dOlfN>>%)L~e{>SeTN2RXOy6KJ)>YVt zyDO!sU!n{8s5HjlhWhIj-8PXvj+*Px7usJ>57i5(EDjY<_+o`f;)yVMOH^gh$?HNV z;RYtj+up|@27lm*Uxdk2b1RUM!R4e`7uA(359MNUWQ%)4;3?u6C_$?pq5*-te9ERc zjUb_n6Xr!Uq^$yglk!3tOh8*7@Tv4|b>Q;%vMdit^jNbjdsGs4gP_)Jy<$2mSd*Ol z8QvYHTFfD=+H|h~>K|g{)y*_00s!*>_@;hF(3Y+@A%9w=#F)}MX%91S4q~~1D!+&Q zfwJGkB-7-G(o>A7{sW9S@x3!lu<;>+hjBCiqyjFm!|Z|%8DUd!A0ODWE&w%<&QBRZ zl9#TrCaU(>T`%aD-n|EOg1ErtDw)$HoP#JI@oO~@aZ@|0FEOb{y!sZ#;PnZ5s3(+W zMLt-e;eXU)cAfm1D2@_s2QT=CH{!T0g>g5xW}QVFy$#{TT^5rRfh*#azT*u6A_mY- zHmY`__q}*}@^#e}l6S92S@U&}gx}=~r-=7CH5WL>PZbeEsMQ{+XK6To1x|m(6mh*X zp-p!BDBS9bh_0vGNotbp^4^NAx>o^DSRmy8$A8Y|li4?-naOQJJNlT}(LQEJg|LMZ z*gZ5yKp>txEnOKVS{kA4{Fl2x7BgZbkJ(9b&29QtOhwH6UliA<$8P#f{U*~^_YHb~ z`(1iL&kOW6(|mZM-{MXMC=kWPG@uyb{^zzZuK`Mp2OdCLt+7&=TL#25J`Wd6nB^5bR+oq3g zaR8IRI3Az9h;`Tzlj{%#Zv*EN6+j!VUAvhx#P6-r@p;b$MD@mp_s!$%+XvV;aV$cm zISASYRb|~Qja>uN@~eaaAYy3%;tF|x_kY?OFwFZa{~?|)bL zM3dDPc=ooQ?aI(>S48gfyD`pelV!Gf&1btRJlnT1i-)PGaPo#>CMS@rwX3G+t9LOWVwq zU$UFe@l^${$BW0w?$HnGW2rO_>VHBj#8dR!HlC1_^OSul-j--^Y(~pNj5v|-AX%2h z7$cDLiotRXfeL)b`+pw8dvbZTmjoQe7cmn?swzT6%wZdk%-t0ckIXN&JWthwfnVX+ zJ;1rEbn$(5(x@?V5<^774{}MT$xwgbs(n;E#`17QZwC+CVQ14xH*lf5q<_#VxI2i4 zzD$-OCOPYw@jkd2Y12rzB-7cc@et}}aQc$*vhADO6nnU3MrGo~*R>y-1No{eiPxKl zrQLVA8#@)=3xI-=eM7U%o)YUK4R`rzxhZA|KCzRW^!kbtjjYMCCtZe#tQ$X1=&?3J zk5vdg_OhKVf(FJ+X&uw`!hc&FZvZ}6h7>FAJhjr?_5ejdy1%M=;JX9q0e7}x7TL2$ zsr+X(``>79%PHG~U0YtuDii6-Le#v?6*gf*k6h zF9akB>GMhGEbYPq!gkFk+3c)AN2lLxr(cEOmO2MPE}3>(41#%*p!?Gj9rjI#ueDUi z8zguKI*wv7TlB!27GYxOS>)E=_D<}=S?(CB_YYP@IJo}=8$@lQ->-khp-@6(2&3o& zEOFOJ&4tOJ8INWe4bnuYb|wg*h8N7+Rl;BqCu!CU6K-#W$o=c|0+l|X9-%LywgVY@ zS(!k(jfrF7T^@Z~#c*k9)H<>bfT9?QBQ#PHQVysk%DzcG)1!Njk;!U-gq@v*;ew17 z8J*Ql48$%$wE1#hq%D8yM7Lv%3hWrFM(_Bi=oER@vw@z|HmfmIV^eh4e07^U{JqW! ze}67);@ZS90)6OPLAwGQ8J*flPgQQD`GJjYMVGFI4LWV1!&Mu_cLKlYnJTbU{xq|8 z-LzIGY-=v4<8&Y<*bx&(z;=V|GSs^DHl{T8)-;#gPtRw$hubW?J&(dF} z*-KkWaeCSxF;sgLDO4<1{Xg-XcVQg1ar#*_9h*?DqQDqHSi*`|ZpVZdfmt zuxppvMa`!3Yk8r`Pjk1k{%+A$>kvAJT2}(%H@N7dK%q{NCFdlYmb+_pk{tbk^iwsi zoUjbR9Vq2}f7X8=5z2GDGm)}icZN|eAwI7-L1!3+#Uo1!IJxJDqT=DDzMkWUH?tuf zlRL-}$Zd-{O*{W^4zl!{8H0Z7{_B2+mla-ek@+|txoEQi>yKY|kFhsAhpt+vI9~LX zAizPmpBoIpQ(i7>-CvFBr^?QgNOL+yB;Wn2w zl0W1EOSXqRBq^dWjnr?1F@`c)KA9+9qad41v#C6uQHl&SvqvXWU}CcJ&}i=lUkU#Z8uu1woPuRYVstf6)bq>A~FR?-pDKY{2 zYC4L@!;Hg}eo5{PvYh>}4e9Av(@|TIqn==zup~l=K(79<*8}n zfhVPtc9)kctdo7f%0(w5LAs;%1%fT4(Cv(o|1MRP(byeEJj4&u@C*7eHC3bNw%&+X zQZfZW1Z*l{EbswUb~>F?Yo1Z%XiPH}(1zjcW6%!oDgcPqN2MYPce2uPwcwDBH{nv= zH5z}1Afg%giI^jaJ&A)xJ?_hevzlnhsIIt(u}yb*tM^gUg`=tRdxnKCi#WFfgrdV2|tU5Be*5CFr3G z;Sj6{VG-J7XVK`1;#n^+F;t^L6>&Aj-r9fGD!M&cE8C(O`MkYBv%whWO@fIbM66~c zMSnn3`Su#bykf#(3YAYm@VtPJN_@CE0U8@et6Ysn4iEp>f@@OGI?62+_hn=kAR^uQ z-0C#`_aL|ZRrntz7sHqNWd4>^On=D}&MERB;7UQ%@GYXBjd3BOOo}K2%nlgO!dicn zxy7nYR|tN0(-in%qxf97IM-VKPzmZG@n&G}7szAy@(-&3ituNo(lt5My?}C)nX0S9 zs4p%Mk9p~r^o;ml0YT>e3n8q2>wG#Rmu`ivVgUt`TbLA3S?YvQ!_hjpf}&)4$iG7< z{sauThBAOyVXSR)p?9eT8qQe9W2}F7$ygB#C6I@)-kLK)-AJ(_NvsrKS$x`Lr2NT) zgio$v44arhwJtb_AZY%=;TQB&7ie&Wn1+lOYi!VTq`l6LK#SFRRLl*GluMeLN|jLQ z-|zRq-wM@H&^KV{P=-O!I}0H3Ys)LaN(=n*A0LGAe4QT%#0hy|o}Y7^FOYwUTYr)p zm=XHg2&g-gf-6=qB1N(o=TA?f1Et;$+^^4{9e8q47H#r zgWsLWU>g>F>39rh;Cww;hH|HM`=Y;cCjZ$=*T;!c4X3;>4>(@yZhL>#Oa+&ABa*3G z0bQSbE&@?!El_kze0UrT$-F}WuBXU&F3qKOkT=mY;qmZW)asO$1&^K6yHRi%u_y=( z8#MA+($H%D71UCbIj|10;t!;&%)j$7&MH-%)e!q$h@RqN=`^p729~Dog`Z8O1Ldya z62nzyt~{N%cjE>dc{_gtv9_QyKOH6^daLJ=+epkF7uJ5FX~FL45X}&=B84jV4dZ72 z1*`&-HYJ6cfYOp4~`sj5U>DHh;WIigP~h5%X?D*i*DzxCY%0~mA_*=rJq z4idSGA=EELpt6mOunoTeZW>g|RTRzO)5mM&kE7G;lo-1YycK_@Wjy5ye)SSmcW&x} zUJNGB4GVEj@oKbWv`WiWkE_gd1oT@b0mn8eZ7|V|KcB$4tcDOstg`;8r$jLb?=>!t z-%RoDnx<}run-Tngz*)mHghcC%7=Xwytvt zGiTLvR*|By0Ed5|@(~6)Q;newQOg}|narEvX7y^ltdMq-nk!3-`E6D`d2z|TTvAfB z5C4uzOR<1QTL}kLX7@Kae}fP+nrj1U`%k z1)f}+p4CHyb}5CuRI*V3N)gu`7!!s(3P=*e;#ad3OdWqy#Qp1{9tg5#bw8*sRf)!b ztQw>GiTykLMYl;66}l8bqOJIYJh@RD=~V1_0rms9mSc{>;ly*ZA0 z9pbl%5PMD8JomOqScO15V$&gVG^47;RG!B_;VLxH8@Us|DJ{pLle8^AeT=9@fpIfs#0 zO`tYFzI^&1sxF)`Q77;KUb3K$_I6;3<28O6qiOk+n60uHApr}NX`cnc@05VGwAB8r&lf`1R}B4LFG5~Hj{%R!w@63{4U2zvOpKac(zv8p^Q1l~f{9)EAy z%tuHzbC+K>lO`aBRy+8Kn;FPyaWi{4OT2%RmpBd9uw36dhd%OSQ(xfr2fd}h3$+KC z(OxQsMhvF7)twA2FOS%_i;7LK->E!-EH1FugyzC|`QEDGl<9~Oa7DZx|3<14l!~tR z$cyNq_<}yT5}3pq|4d!#AEG)&Vst{eFN z#k-?vd$oslGKw$BE4X?zmy4$zfgGK*T#~-4jt7UHr!R@KT{m#z9xnHdQ|<*R_X8)r z<0QQ=9$5H=0+={sF5T+GU^k1+?oxjgcva8s^>E5dI%SVPPu~9gP{vY-Bd9En4n}!3 zq?m;lCLNLLlN2zJmBN!xGP*`KjbFnFSMk1=^NRdZC4hsUk;H6SmAl+qx^Q}}KOU|B z#9KK~4N5nB$3)JV>`%t&$aId}McTFPPqbIb5GR>%csLwCQO2+v`%807l3srynmuIP z_df%>b?gc6efYL!E)XD@C2ijCUZ<=7P~{P%s#LZTf)rV>ss?izA9d%_qb`Gv7)YBU zSbRlKdFwNwtkK^=Ot|%4CEcjHylOP0_# zkD)>rl{rj=0^|8u_)B`K{4@A1U5D_ZnZgB=4ah~{ixSwwi`t941!Hjd+7e5oQe!6c0XJy`|WnWHF}DZ`{xavY33N=sHG1 z858Z-f9Oyrp&!-$ryK2mXitg1H7GyoanKLjJ~3S19ue%ly-B82l;M|fSBj)7O@wt|-Qg+(`Fok!vzT0QOXY^egbh`&tN5bruSnL4=Tq$M z4vsy^+$}jOT@hIhX8NUCX2wN-sel{NBQe=o)V6@i>%o;`JS(O^rorPz6o8z|6&;pv zgd)ADc*OHUBbFzJ0u5Z}ag>Z0 z@qiNi4PxAo2wx|?Iw>^WhbV4hLjAqCTp!D*^d(+CugQP?s5lRw(0;uQbVQ9NM*vUw zn5mWNYKRaqiNNR!bRaB}4sg!;3C4I}42LPpt4^tJNCZ^b8==q8@zard95PUmAz!l|keR@5(C0XwO zQsgkItfYUqXF(yj4*&m~hcz8l*~sC=#mC2(`ELa%5&V{3m*~GIJWTm@T>eh~k3Fy6 zKD_+ao+FCNkB8ADWyckl4Zrz#MlPj?k2p@A7YrJE-dtWX{Qs0i_J3#u=~O5vx~1rN z>@u64hnq`A7o2b<@a&3@r!QxH$Brv0Kk+M7K0JT4#;x!KFMKw{6Z|ylwAl5JJK{i< zsr3fRA#$VVU7h%STr>>Cd;Tkm)>Zp7&&HcO;% z6W`=S{=BX`;}-73(nOcVUPGtv)fngtN=J;C zth9d(mT_=#Wz(O~fFGickb;ske86=mP%T-JweHD2rxj239mJ9Ssz~4dpG4_Mc*4_r zwv7{u7ZmO&`2P`Y?;+^1(M`0ZO$J=e2cVE;?9J#tU%b|j;rIQDcuu$&k-&53iKfq2 z{JS@LC=x#rWoAbbm3F^oBe*Hk0|V;SvwDB7R zzM}B`iApQwXSuJa=29-WePnMpB+?*ZUMJ4zt7RWRPEFt>Rh^!$ag;cUT`a|)6Nw2< zI>hbcj9ihw^T9cTVsxAKpgp(BOn86&n6_CO(W2PZq{EID#v-!?<;XvsPBnuGVjI*t z1ocCSfx_9ljK80Y6LLW}I+@X$EExkZxW|D@jZxt7j*X9~F}zE97hz`bk?oSM5_rKC z5Wz&cy*HgIVs}W2C4BK9D(MZ^$TTjGD)VkcD6Yf}dNg!uhOn$ntcQE~qzHepd7v^m z6wjSpFcwUMB$#)t6frH|0xDG=uPZ(1RNB)*CB`yEtxamQO`>nAC2;R-7hhsJ;x??G zJFAkxF{Uq>d`Y9nT^anXkUtAxA*SF)IRAA;w~933kCaqn1`ktFg;hx$C7mIdrwyy& z0^u{mnID&`oTsb(j;q1NNc4YPzA;m);t+zupQo?nW75<>J)u{sapBjxGI+L3_?!lJ z%;(n9(0H59EkJ=c7|jpCngvv>t1U#R><|F?v`YBEqPKdr3Ponvs;hE=W$2QIatG&n z;ewRmqp*xVaIMys#Orm9PeL_biX7xLcdi^usq=GHiE>QF62zk_)$)Ij(NNz4ri{xo zv^T@ogrxqu;JnLGY%SOmAg9pC5^+KVCe77b74`PQxt<55-j-6pnNjTdP_cn4=&}Ov zk3gDsY7oZ`)|vFCDCjxCD&F=tAd)0EbHAvLVxJLv;yb_j zN5*EAa1`6B8kF(Icj|v)mBJm})}Xl`@<$w3amDQzX{sqg zMuTB3G>=ETt`5&332$%qXP0|%cxxAt2@x~j9bt=1pH;;R{7g6(p~-@0T(^bXg=kK(73$-@}zcZS8btpzXtzadcY2lSp|=4vv5GI{dRL8Hx4oV@;K< zPGYP4K~=o27HQ$Up-LW=XJzFq6I$ehs@|g0fYpJrXx~tDT3)MHste_q^O2@qyv2=* z-k10oSW>(yFEA$9djR2rVX(d#;s$NlQ?UhbV=gioPlrcpX z-%i~d`zdWxuQgY#kN3kUFsQ(1e!>+ZOZ;;IAsC^$KV6u$pW!rkHIQw_-q-<4F{ z;M68}t@9Piwe~`Fxkn5&oz~HAh4V{v5bQii3@_8z0r-Dd;;T!m;^F{xhRXvFBD|-G zU(7W1M?-uIa$)tM-C`z64_QgVoB2-EVnpooptYKFlWB&v0Sf+ACNhqAPSsXjSdK;E zBmR%}+0Ae+(B_PDkf&jqrQ#3Q;E$Kadd@M@R| z9MKb)XeNJfI6Q$Gp1={Fz#Y~G9zUngpgrPAnx|Ggiec|}fsH)z0<9sT^`Yp^sC6Q# zpjCXn*E8Kt-$w1#!RwnH)o`$3QH{!^8G0n&n~_Wpk7N&zWCo99x3yf4gxWQR*3G8Z zC`nGbJXs&P7b|T^s5gw-Iq{LfTS!{0Xc)S&Iv#&iT^VAfViYtQx=uyd`NxIDNo(M+ z`0rFZ3L|>ekJs;YO2t=5c3!6pd-Em2E7cAPD?eUf8X+IxV$`&?0EWs zc&k69Z08%w=$XxHltY&-r^^`&NQD?;f~i2e(7~ye6OkaZNeclPt1qJi zd>Uv8IH7?Y{uPqizTjR>?^h)=_OJmOiwIFgD}H-bTD_rWRbCIR3aP~s6H}Jw?Y5B@ zmF^zPbe5Q}aNZ)u!Z(bIqouK$crpqOqX5}yGov%|E*$~Sad~V(J#F^^Z`3tovQny$nfvJzXJmAI>tSK`U0 zE3sZy!uT(AJT^ZSdO7^_jCJj92Ta>EfmTzaeEf{s{MudVcmNVa zimWZl_|o}MfL08=H9w|?WZCp^uz_|&)hbO_?1#yHKAoIFW9Cu!r zAmExjP84UyDb#%~T_Z@~msYL8W|u}Agy>PhcFQ#s+aHJsV>Z=-a{V9)RTh6hRJP~+ z@fy$A$oQ=|4;opo!roujJFxEy!Sccx2AVDO1Dfq%Xa+~6RvJ`2=-N1bObP@>;?tK* zm&a48;D@mpG%lH9>*$nJOe;2t%9DlBpUg-epCo)&8B|nnf>fTqm%mfny_h|s&_3d? zcP3+9K)*yE0!9a`(U^h=44Hr5avJNS4%yON5?xcMK*8lhtFdD$Vy$WLrQx#ZdD25N zlOGws`b#n;@hVUAJM*;?8yN*p;_m}h{wi&{bWvk>m0yj>pfRaTX+uEa^;9UjHr~0N znY7C<&*Dtd&*Dyh=vl1e6S~WvOb^j=U>Kzh29TSOZ`i3F7I3=RBI18s0^$FyIpPmr z>wo79#{Z~n;WO<-;UIw%{#jRFRu7g(OxK9 zaub^>HMD+8g5}|tvGNX0Yrme>eP&ueho^NfPisF<>mCxssiZ+aghBv}0^K(@TG)_2kRDi5EdFqZ*C*9JPQF&;-VO8ZAgwb)bX-@i0nfz-!;`$5U;llJCr{sOnx}>5P zD-CA#rOWUx9#ls8Yw{qhI+HfMgod?7AD2wgv8%-IylAM1X<&a}u-N`Z89*EPkd`q@ zMAabW#IHxkBh>zo!P{;N9r7f3E6U`k&#Mv%(ib9_YU+n8`~guJ-JSEpn%QMEqqZrdIvRaXSXum z$dvuIUdRL+rpMG7fSr*|It?=Up*gS=y_#FN$jdi-B$oKD2(lIH`eu^ZI>V*;}B1 zUbPEQk1v)NcyxwoV6whouf)#%UoY6pN?$M~ku7O;Y*P~C?$R&`LT~CpuZkG-n>^@M z81!dN2Aw1!BYD(8%zqa7J$+hQtlhF$vqM=loofxW$pU_t$IpjoC=8(ovEX~6yiHfU z$rk5p{Skk_h;3031jdpW_>{(GJLo2)!ovUIH=mnrh?1kTyQOB|G#NJ4>Z$(}G4)!W z`cIhp6V0Z+MNeI0bNP-7@#-dTkNukCTRjmv2L8N6HB@OeM>^{U2l)#VUG%e$2SE3! zS`~26K)!Q7`x-cn$8c}6G5j2TNY>(03wImdT5Nx) za4+)0t;52tZwA|z;jWy0Fk-cU4&CRDW}IR$y;C)qUIK>}5}nBml?1h(4y;p10x>zK zHzJRb;znPUfCyHPMnV`hMg}|@E53^g`h<63xs36>&={BV7~jJf-)*-3%VmsYA2NTV z6w2FCv*tCL75hJ<5B5405614N4 z+{KFsRUv*9|0;)Uy+*^<(>je(%?^JUl&ah#|DdrrSbvPnp=VsnjkLm@VfcET1)db? zGXa@ynkYbHV<EZAT#GWLHN@V?&=+|aq9(# zUDt>KHl7iEpb!IU zfWv$eOD+5Qh@r!55env-CmXLwh^ZoI>rizGldbLbz{lyO_BX?2sWOLpz_NjkdWEf8 z6O(-#nr!f5{C6@T)Zi`T&jNq=pG#2>T?MUbo&_8M94C}X8N(EJlC(DbfGosvP9m>pAvDC(8w5fzMN`hmcB zh^lG4mT64c!hLVwTTO8c0)f$G0~na zc(9pLx;R##!{dzL?e5sQvJMzUCJcgI8Cnn2t?1x5KH3%(-3FSy7^L0O-VwXn7-U#sVDJc-8RH z13uth2u~$DnLOFfG>qK&(Jc8nr+M@I(K{PUI*;6S0^MEySK+Pz&dPXis?O%XknGw?>Vu^_f3hFknGs!{q* zQ;q%IHmwPYv!!8Nxi9Q1w;{NyZN<|A!3IwI4k9dx5qyT4fVYP$VMGVFz`vA>K=j`TUO)TV#3-qg+uBj^4t6|#5B-}U_W zvL_hZ$W|si3taCru%>b!Q*Ko|hVsf>r~(v-qeSD>Q&?4w?Y4Wb@$|W0|30-=FO(o= z&~i6{z3!$CjmDL(AQnSZ7O&D<)p4>!FYzJH6cakm-Ke(xiQ25z?oK7vX_n<;*fsIxM+&I=LT}p`Yj4nV%oZ&t>h< z&LJszw^MR`87!z@kgWem)+8tEJ*l-qvVM`Q$xhZglJ!zM2a}EwMt)g?9{d|_41SkP zeWrgi^_Ll*q}YOy!?qK74?B4)A%3QHA+B8vxArU(lI2P(+VjGEL5z=a%@>2<4bD@J zyet9UeJYJI$>wOUsnJuPfCZJpZ2v4esSlT%r900;XU{6r_uR_CW{-^n3>q)OD4D}% zC|l7Sg(djL*PEd>*GNxtE#0^W$NZkpNxbp+h`CkvF8;r$3>o zEk1Z9Sa`(_vI~rw)6NqfDcd>C^%(UCw-ss^;0AUQ~Zk z!i~UvV<4H!J!HXIJXLt$Z(^JHYG9xcZ%{vb8Uq$!XG>MWMDW${xM$?dXz}8J^l@uq3Xt7h{ z_KnKXsmWB|@xN<0f8McaJf}@Di$grv7+U1bp_E1gy;HKrekSnksc68r&6R*}4+rw} z>E2-(A;?z|%0moBp<#mL#S+0+90hRcPpgdTjamdI1zs%C1cmZ@h|C%y%*KD8s~hM( zSE?AT=4;E@>Uq*s7FBEGf-J<-b$cBSy&lj*RmmbDUCemH9}14qPsDpXwNhNe%kjn- z_eE#xyD_yYhfY3Z{IwWP$ouZa^aA6{u-1zy=B4^V?xVi_m@W+jQNB=5@Q2U@%YS2j zU-SHCN6ybJVd}84iDoK`F%^I9^#OBbfa~_2Pt^iI^e6y9(ol2}bZ+P~_whrJ-bpR5 z!4td&Ortr9W-)X`HvA{Q+3;FN4d~S-8~%4uDN57_26f%uh3(5tn*Fc! zpWsB_;fekY6Xkh6=RU;S>uF(o-;nKn)t&u6Z|`e7{Wg2W3huhA%o8Ba;)L+x7H^O- zX9|C;v&mqD*AhERliruwtkcmna1JPmCi{dy`;RJ)z-@9Pa2qIC#?WeivbfD#pvLL< zMY?o(O_xQWTH+;|3{!v1^D$#eYKjBpV{Whb@$)?juSPQzNJ_1eQg2aq6BJ0YUh-o( z*GblF$@<30`kP-~Yc#Hp3$zbwLX-VhY!ZDrRwg^|q~ZwlC^rH<(vzJx?!+dmXlraz z6EsQ&^!PX#(3aS2tc33FE+_LbWYTxB%~m3eUrDK1ky3Sz-K2 zvS#Xz(YUO{gX84lKx1x~bqEi3AWkIOU;)r8K#fB9R<4dIywI1Y+uF^KQUX#Y`*XPF zLCVlNXo>E&3^L=~?HGOGuWf;ROm&0c5KbTBCf=c7_1j+2REdcIJv+46AkW+Yee>jb zSgUD5x@|CIQs;k(uoWJ1=o~EhbDC%1ZjXqk+{+|}Pkkk=|9o&@_NyUxctjBEq z!6o)no#@dSZ9AxeS!pzj@9Q^wUt^V(PBZ*kXOuouwLJTsl@3NJlb#+Bg~sP$OZ#^f z37npmFhts6@p_{oD~qh?$$&>S(&#wqw%R!OWMJ{LNCJPgp}W8i37{(OMnhp@#sBh| zB0n_22N2}5REPZxNkGP52*M~|W%eo`Z6@KEbKuI`v zij_;J)ynhmH^TGqt{KLV_(aa`nO#JXwz z+GT100DONLIs(T94lR0`Ysw*B$=8{T*@q+Lwdo&$!L$?(EB+yFtTfo9B|KFe_+PXV z$#(8x6SOiiVIvTj2Yc6XdDOn{k9>HkLmhmXc{DxrC2bKMkr-O)c63BcFd!XJbWl&u z``n*=p5d-hN=ZpoHjuC%5n*u?OBfne1<-b%@YEu!{-p>nAtk2(|}>QbEiZJ&Kr zHu)OFiJE?ahQ(8$h|z)23`Aa0UlEYcsyN| z_ZxqYZurr^GoTNMU_&y30nVx3Y~EanS}O#%FvSNqYApgnge*IN1<2I##Nam<{NW-; zhcy#^E&z`~(yW#oIE@vU!Q1=QP=)F?LW$U$IdMKGyH?k8kNFYcfgi#^10A$dt@tB{ zc`iR&1;;+<0vjd-aDwj$Jz>^a$M>Q~z>I&;lYWGk{`Xt-(k~5bwFqqn{$+xRM{Vv( z5l%d>dxa@3F`pz%0-xzNTLi$rEqk<5_ULG3>w6^cYyh!}5xKpKJ&4!M9Zk>r2h-!# zgK3*9S9m2KQ4RbyEa59&CO`LLfLEzOm#F+v45)MjB{*T1g&$w9bUd_KX53aM?G%3z zimA8+ZQ-I}ravxB`6tsZQQEgBfp>+(XnM%+;m&r^7XDrb%mb`j4Ch12;H2mHr3Wzn zkOzkuhctckaa$UQK)%&7F7m$YW_$~~SueZ!iFLy8NYM)nP^OVDjyi1+pt`^UP~9Rc z|5@d)1J$kKb%>8dBDhahGl04w&>VlDK5exIP(P3fyl~n1&(qA|gOPJ) zX!D#y2MfA9T?!-k(ydjXVrZ^WSpCACB)>{DB|1c||BwYbI5~;_j8Lbu8HH_YWKw}F z4ag^p?;{=jxMyR$AXO=h*ro_=%#VCu1t7?WtFnY*w4GFoS3}u1ky~%YK^K3v;+|@3 z#ggCHihHX=?_08L$1kpC+tFywQ+PWLyIR|h2HB3g|BLPT1=~^g+tUND=U^4?$7Hwg zAplqsgn6UC#Zz=`>_R7Qh4xRq%RHP#Owdf?S)IfKdrFLxRvPl2asHF(L1Be;P!cZk zWO^5zccG1=;g2B!WCYF#K*N8@bbn=uQ}mS1C`Yd;Fj!Afw8j^&AT-R^jjv`L>tvcy z8LyN2Aniv8U#sIayCWLX5AuSGIaUI7sr`&I0Zqb7BH<*vLNO!-nu&EtU#0Z`N2o89 z4jAz?5PJsUCpU&L{v)moqlm=)O@ks*qQ&O5nc$*B66YQEuN`@OdTA`J% zW0IPXF`RQ4Idq@heCU56B8JNxssIIZx7~z-!Eu+mlkFzt3#T8bNY+MCpujit*bx8B z{ypcnGVB1=Iqai9kui})l2WbdM~jnKqi*k3>j z|2Yp*O@0T@BOU9ci5vxPLvHDv<+)eUnW@^fY>^n1X2N}p2R?t~9NtNOU;ZeT3?MFk z4|QKHc0I-u4h9Dy54Fuz+Dkmd>zVXNZk~G8LRMD9_1b61wI8TEm*J#ofesBSl!08F zDhfHx3T4twIy*5{;$(@~Cp1l36D)zK&7XH8L_k$}{SXy2=%e7oUNAph8?`;We7k>h z`S?*kvGsfEe^`G%qc-yE>$mur^|KNhTUx-Unl4~ODZPSEHC@5*OpjT@p-q=?lLV>` zBJcs@r88WO43)I2G~A3yu``4tyBjWsa3s!FX(BxxBY3Y@TSY^=ekc#5O#$QEpk1s4 zxVg?pP(lTv`6M*~5>9V?DaGD!IsGeYF+-Rf{!9g=;m>~!067dPtu6<|=7>Ixnro7% zY9qN)pSuaq>+B^=2u!<&E7T&l{&J;bb1Ns}CUSref zJf>(ESA2hcy2R)B8XMoiXnRjmX>>*|$TV2q~CFC44m_|%iy=8vbp4KjP{LC zFF2(H_aq7R1jS!CTFXVGBL*t@c8BZKJwit-V;Kk1<3U8+sfe3AnE}kxwnYExm}TUO z_|DnOB*c=Am<;il4SuOa($FqNyW(s10kfuRF>imzJuZSPIUYh^V>c?eeDy^0YZ88y zPE0Ng3vRtG0OqCMw>FY_kj2otBXRq2g@b`>)|%d#FcNBVMnDus;$=6^pMP zrZPh|M3j}ICeVokuWKK*?N9FC(US2Ef?N(1+2?sZL4~s588iy|3_a8^_o+6`VKmuIUooo2#pX(!A-?q~Hl2U8oW>?! z1&3T+QmIhE8H4L^zMbU=Gg z!6=_ZWaD%NYwZuxmG;UBCujC$ypHnaQXcLH{J1U(_J&d+eyeS(oH9z=^L9geeMlv1^l{|l_>4Y zg<@BSmvfM;O7H9tywX0m-%#3%N@!sNvakb98eYW;6O@Kt6MW*TCc}KC zwN-mlR&AADwbueN%GJTpF#E11d#`RDv?oa8$vWUu=1&UI6{%i#`cLT;pms8MI7hU+ zuQ>%ybBM&Fq0Le_F^WAbs)f?r3ve)UcXSG;}#~!_* zrO|vJ)yild3}Q69qhvG>@bjr^!;5pCY4>C4nwo#_0h6e$wECp9x;YA0Y(6*Y-qO74 zN3B(TPO5$=RiA0G>blmdu9T{8N!1lCR_)tL%`8;(px){h>s``Hy@9BA5$ff%R4t{I zYS*IL1*n$WQnkcZs@;TYT~O_>Emb?Km1;MmT1QkH(NeYFwNkAF)jFWsZ7o%6(@Hfj zs>OexS~(x4EqKn=4cb-E2)?nof)HoAPgC@ke;>_~h#ruZ8UrY(K?1#;@6JYBD~x-7y{x>6o}d%q}MWYAxev+tIET{E}x< zDnv{sP(QHl7VP(zH`6CR5A@n_M5#1qRyd$M7Y$UYr>8%wdm&;V3 zLurG=fqxbFpOa;y;5#aF%mTHRg7BWOtEwR!E^;kQgnx9^!6s6Kauc0cky=}PdgOl( zTH~s7Tf3xt8(1)Al)+@>>p$~lxClrn`6vuyYw>|LqBVM)~+%hs~qJ(CWuuOUhTIgJbqg`$? zvZzg)PH-u=g(om;cSQV1*!8Zr*T**gKj!`gJgVw?1IB008a9W3cq1w(1W3RHm;e*& z1kFGugh_>ni3+w1WCBdUa7iEukn2Q2#a2*2g;vyp3R>d5!HO3Uui(9)qAh>4YFpGw zTWA$qqUKxg+WSlfK?}eC^Z%ajd6b;lXPvYrIcLoM$Qe z%c3PNx4TPMfE%B7lA)kx%$Yh<{y7Oe)$$X=t363TiowDa^JmL;xYiF&{&novni zDPwf9*CdbTz$nZ_dO9 zYRuJf$7#<7Y0n2}&;4l6`)JRmj`qA4Z_fixd){$%G^nLHp+$QVTEyZUWI6sS!092n zkK6Re6KvB8Y12Q@rd4Ru-_fSqJKFSlyiK<{ZTc*sO{){zbReNktGO+oaa(TXzX$m5 zE!?Jme_xw6K-YyxQ+I!;8xVd1M`9z-mIhs-QWwxaVg(&7UFEz8(!p4O^Myv!=bT}cJ4Bzw!t_hGZs`#d zKR43RRL5{>qme+bQW^~vE@o=A&ab2Y(#3m?X&%z#%3N%m@XLQc8c`OYEQapXe%vud z8quCFW;chX;hN{ngEACdeY#p{1hsY?YH9I=_<0RBxl%4s#*%I7+Xq9$Be?~!Fs`notf*12Y>mO-jh+{CFZ&GyVE5$!pF4hAf2XT(1%<_x%T5G)uCZL|*1Mq*n)AJe2!=AKHc@+0jM+vJL& zHAC(lx@yRF{(s8QRgG}8)W$1838gBhGSwE)xm)#a5#LKiH#CB``!8(;D>ydK3H0iR zFXR6FV_l2SQZx|5X@(q+K)WTl58(J_ZNkTR&wAL2nKDiKu0~2yIDI=^cO)1 z?OFuoa^=ox09^9aCN2;gMoXte>6{QTuSOMtY_1wd{Hj9vR-;aG%O=?WmgE0?rM-5o z%b+SbukGIo2#*GBmst>8{Zd`A#5aS;OsDU1248>Nmzh?v=y$ISKR}YRX>PID->o&H zn_DVs7i+1o0M@zx(S@hVJsom68D{GDi2FuSb+ahwg4zzw$$Gp3dwp%*Ne|$dAeVtW zn)X55;V#&XJI&Fzz&oj-4*$A+5}^XX(B`r-;Y&YkB+;b_YNQfygbZw^E-2xrXQMSS5w^?K#(_rK%@z%y_9jAH$#WV|BGcC{Nk}0zE-_(`J&@iU=f{m(Eqe11fI$!$hXa&K}Y?dq~X?CY>)g?uKsc z0l_)m!+XmFk00BfM^_tzJl=GA8@|Wnn5lo}IkYae8>`WeVKuUhJ>eXi>2e>5LqAKl zU@#s8R{PW=+EtM(!$L=TgRmn3_O^-7q7H-RhV^izvui(48Y_Yb(5tjBhKrwj+*`GE zRw=i0UknBSJwU?0hP0lEgdiWhB>b;ayP%)me{2#k!kt#gqxi#mI?=0C%Y<|@w;(`& zZrs^_A=TKoAM-#rcdmd)xJA}{H65y5vw1hI?!1+cz|U%vJvxfk(d>7eSKjbl&U?@I zaNS37+<@+dD=wE8Vb-^{6PV$%Pm&p)hu94>%IB2H1O7PyKD4r0az++Zl-Hg>_G9Zf z(JxOv{=?CA&7E2^-RTf`;?oM^Jn=49kEHg0|EhR!H5TKS+LTvEfn_%CovBj}8iG8?IzVo6dQMCJien&&o>8u=q(Ac2pE@pNUy2h;@sE7TU=1Lx{c2^Gl z(qu{3lk`Wfr@x{*n&V-L#A5odsQ#CK$5j8JYc*9Yr_%)z^76oZX~D>Jp1xcO>D|$F z?!reXDCR_Wg+_)b7*?q?BHdt5OT^8|+a97=U{rGh&PQu;13V9`#Z%-@H2$YPJcajJ z^ufs#3?R%|S|1hycEKT;n4xp9&AH1jyAf5@K4&iO%RTgp8#deHIM>^aDLl`AcBhXQ zz9SxB77^AawI~hbM+4--KXyoeY0Vx$2Hfkk6QCOvfr)LIWMBg<4J!xZ)#Qb$=5fps`3OiCnq0&aQkF*Ehii5 z=ICDNU;p0-D0K3t+|hlhE}uJZPWgq%r{3Be5kam_(`-4BA6HEn9vfSsaG!8JKQ zAd(ECI$A&B6gcFqRWMg&vbD>#7)+{Bz*Lxcj1M+1f$KU^fyDUN_; zS7_4uto`wj%;7N6@QUW%Z}-m|6E>6;5;cIT#I*A^Fr+?MX~JZGheco9fGcYn1>5LF z*Ccux)+S7HAtf@Eq>)jn*~WW*rtwR_6N=dy&0nMZW7S2pU4qMgr@XD)&R4j=C#Asc zE?weQ?&x-xQzr7@7awg))Y69(LL?gRFHr~I6@S7E(qO4(H%tc++*T@@&cBZc`TaUp zN!Kx_-4;WIgLQp>7{&*iTTFesU7O?=P1uL>GJdeUZ@Ik1T;4ZQUd9iV_u&tf!>j>a z!{xL~Ip_aCIrJ1PsWO1%e5sLruf>^taTYV$+FmWq$hNrb5a)pSoZ82k(>ZO_a}pN! z1UggKJ0}3t3tcO}*rcoKLh^H!+#x@ z^EH>VM9NA1!DTT;mPNlGY}XB3-VrYEdMU5p|7_P(kQ&O23bxoRlvPgMxG1`88x8ZR z*_c?mG)t?05MXjPtxk+cXvi{r0m{MO%+%i$@1)F0`Wr=;WkEMiSAa^1X3zX8x9Plf z(yVSFx_o&F^^VGpwQ2f#{Ge_{RJ|N+MTVj<4UN)eh{Y^>&8BXfOk#C_N|$gtl`pyC z3K~3#it1?SBxtQ|`a7bUT(C<#8n!hTu*9(#UOYN~lv5SDEO1J12)Ent33aXjhciJ< z!-D!L?4oH95AXzx2~)<)X%L3@Kwh3U71es!;x?g#)nc+uNk31y3creA5J$4Z^Tbg)=T-_A>A zYqL}ScGoie;=fWwkAqyrMqS14QN;$QiV6H%MhFaZ@2|j)=5ji$rS>C2Z7M9MFm6Mj ztU>tE+G6SqR~HfuH!MSDKqAaYR~>Q9#6_WhxeOMp2uYE_^o7NFW~^Zq7)0|$GI1?mE27k1BOrkNkXmb#fZ{NX8?wA{uejDw_H^N#O(YXTCHCSkV0&bI}K%j zSWnBndBBxp(b@zA{EI9hqq;}FY?fVrnp!S~789N8hM>Yv(UxYAix=r-mgrzt-@=XX zvfOwvCfC45LTHcBsjV=|45BUPz|aqZa5jR#j25=Y`(J*yOVBB~+JU0PwQ*rD_>@^J zJNrt9@KcJm0Q7UKgCj;ke7{N|!dy8^tND(GZkMZ;Iv>$WIcO$XF3w>_r3eOpr5FH` zt2n=`WNLu##eC{&EN=D)1({E7Snx2#?P%mGX(Y=3Lh$yob?HpycROvM|L{V+fjKZ8 zO(jT&`S;Jjk?|+g$>_T?MVi(JA8t~f8p=QBV#$gz>_DtuYt(;)uo;^O(cY)>3oGZV z4oiuS)Qi7?&2ZIn%-~2Cu=zZH{?6b+0dt$%j4%J6tsTCpzJ+8QY-j}^5%BODf68< zr{77$E1CQIW4pPl;#1BYeV3d6>sZHp@8;hR!aM6dA#Z#14yDH3Iu`b+I*$5rY8G%% zH?Po}k5m2U9n~+_)thmD{wG&=OG5R3=ijSP{lTNEU$EPW_y;4tDAUUTeaTrH0#qLu zu2Bw?N|k)nLuO!ZZn>r{?)V` zF*8c&7Asv@+5FADNaLT;6?hxwC+?+tuP8{NdjqP1-#{iHwC8|K`m5CN6mJQx;p3(- zINlPv%Ss3C&|jK=wxMU_jsg+(lcqp?Vpm%sr}1^+`0lx_BNf`&6*}GwFAiB;DOXGE#jBq|GkQ)(!WS$hl$--C!(_TWN(9E_-pRvlt`Xug`de>D-60%&uJTv@MLu z@kGnG=n~wn%FQ|5+_aMpSyA=8^1nJv`zhLV3$N6JR+RrPA37yI>wo9@y`?EUH9p~= z>ja*dKLf(y@j+s3X49Ictf>wO`kNJ+LTj5^pm6+u)QV0XKLyJ;7MRSV)3J0uMXuGH z>*y?Z@=`j)l}rxs#L=Vxoy`km8B~w-UTiZ~QUfML(X=q&aciNIrqfyl5tm9^czL9( zL&v!$TEvTFr7V(aChZx**zhX(y+El65X}7zOE~p1Xs4S==VimG zAcfL@eLT?wV2drd$=n4gvU7C$w8=Dw*K%kKZvb9bGM8gU4d%QLmvTF%4aroavU9o8Dr z^$lgEg4c3J5j6%Rwoz?3OmFduYi)pk9@N#$P13DeZw!`FuEFUuz%?VXP*)!9&J`?c z^52r>m;?)+YxJPU3I9R6F+p%a1F)r+78SsCO)jkms2|bn3_8mZX^KYs!vwHe2Dv_SlEa!i7 z2kQw1Ar_Sq?@N1y8p_P>2IcKv#L0Q;d?pmVnYW|aVM>b1^q)4ww@;1LB;e{&4UJB} zZCrv2?_TOcdYLL{3oj&Q{OBcKQ+TF-R|%s8(*kQCO>d)q+>{KojRlkGpWr7qLON$h zL2M9~Niw`WoW&DGcN{f2|7<7&wp>s*Lg?xSIo$bVT2zckFpF5E@l75weBLxU{$8CH zzFplew-s;4!dPw(x!Y-eUHvCG$)a@)06tn&N2Qewz-e9(W(q$unVxrVbwDbA5PM{? zSuY5c#ltlWcB++fn@V$+WE$ZhPc!kj=D5BQPI){ibcAx$jdDO?8FXSXiYhAMr3`L= zK(?Z<8Ncs6UXpJ#!N z(tib2($1qBwfL2qFpPhSIpauc-2xB)C3AsKG3SU-K_OFmJfc=gYrL96rkdBK8X^F< z)h*`|CeyX`%i}zM!+$!3rcr7ueaIXUGoQa^2Ie)E(w)QVuz9_oU*p}IxOV@2r#PM$ z%k@hYIA$371oJT5ck|k*CRj4<5Ro^RbJC>=!40#C$yr zx_nD>7JuZU<;?|j5NfadfV0XkOLmq{rd~R8!--o;)@~%eyv~iU-M*sHDlSkufQT%^ z+3|d*%0wb0cbyXz(e4Exgr(Bm&Cn9O=2|w|@J-`*us;{^CStG(p{oU~KP-Ia&|5BP z+hi3nL3}fRWKu@8tA3&zo@MNenvvmL1aF%a5B90E=6;1Enh%=YvE|g11^r#`)fCN` zB5EmZ^|ujqOf}X=Ha+2PrNTf7Mb|UKbSKloSDpANxNEW-RWPJxa-*MCCdkM@BVL?_ zNGKV`t;)Vqw3R^x^TDS@MO20J1%9YHNG_kI;%l| z`O{Q~KlSFB`X5YsgHBnebTAExAaIUsNhYW_QF^*?>ORC~Jkv+XKDs>242|MH+|cwQ zNGzcFbK`M0=TJ|0np0hwQM`aW^S`s|K)4*&8>nrpku9ASN3>M@_Q7f zb8s#5XG-s*l}dZnfX@RZ^^eWdC?4q5+h$Z33p1?K@z$F;T3NcKxsT(m*U_}DTG%Is`*J|Z@SaSu}ifUAVm!qUfPS5<0%6F z_@pqBsYb^Nm9v*~L+=hbg<{L)J)Dg>WfE3+V-|v1aj}P(4Y!Y|rX)JO78TtH&S98; zs6rzWjs^B<*^a8oE!G!{D&+{k`LRw*A+p}*qpEFcC3RV?b&P(!fG}!5HC7jbH{X~7 zcNp!fowQ60ti+kguO0_4FSlKG*2Op!sd;lqHl>yRZET1DVv_GtkWMY<*qgqyM{MRjIz@%)3et; zr9)s~H9L!X_?U(3>l^^Fl!UDUWJj37CZt$>+Q_N}+r->V?;Xai;n6r$13j>K+ zX}8Cr8)@{22ovL##*3miSrl_#wXh)lUP9IfIO_zBi^a4VgH*Ly+WjtfRC~4;(zb>S zha%dvRS=u?*DvzdemWCIYZ)Yng{cuuO&>CbS!ml8_e z!uhHdmFg%x7p?9X&~?p!+i+_9*|i$(DXRJ$`lrh{#6a560-jti4gHU4w3Ue8sIe#YiI0?3Dv3 zr&{Im#(ZC<*3>=-hvI~<)#{E?g9t{y)V@t$oStHKf#XfBGf~oiCT+@>;v_vI8&uOX zsL!XU5ljZlE-WK(S& z%M!jEc-%Tmg0pO;GebBq=(h-!Wdcp{mb#!w@FFy$cBe8J9q@-hKyx1YVN~7bB<?A$I3*1Jo3rvqJ%z0blkoV%!Bl)rt+wP4S%C(JbX!oH~tt8=>4m%D9u@Z zyAxJiqTR_0gpJZK$|SkedGX58U(8#s3?@^axt0)QVE@<`VLhn@NP81PsamTsEM?2Z zlyWJMejA+->v6uoD|`XBRo=rh+3F3{s&hhBOqN%uCaOw*rWajD^juj357VD&j-#TZ zJG%O0i%0Ak+Mxp)LqChR;LE-C7<#X!nAUcU(i<@E$>mwPi!QE(zAzG|>>`@OqF}U? z@&a;|`wykj@*)5@Vew#mo9ejM&`~I51ma`Qt(H}&y{f2iJzX4yOn^o5qmYwawV5UI>qn?uxpz&~q|Q&5XVH&* z{iraDd_IZdb@*t8D_>$kfK9`nYW-(X%TeuTLPZO>9o;GvK)pa75Gts}peMyWu>BfI zP)fG)zfm`90+p`@p{W-`(z$?-g<PG%8joHEQCBWSF+BET@uwED+gaFf14wBPuh=2xC>9f4y;VeSCSgw$t}dB#&XVgf zzg$`haTA;6M{tL8-Z~gE_(j2YlTaVHFM+>5mDlKk_2?+L`GLZ-i{BQy<^>wveKI@J z_zXEn8_SHjLSnuV>OLTOH69XlB|q*@H>omzZA^eZJ)maF&8zVr+-aWdx3bhI>ZA3K zHp>xS7;N3QO64kz19?9$fPU(Yvx$!U?>wF(+Frv>&Cv#gJWqFE*1V(gL_No(@t&G7 zqxhgf_&(ks{d7~QX|sCcEb6M^HJF^ZkI1s!ldJr*9$<2!?>W7~i%F0(^%nDzSR9Cd zI^;gsksFBM$7Fs?`TOb2IDVQSmG0rDs9)=Vj)*#7Z2~j-Yrw{Xvgc9{@i2^NfIMw& zf~7KtV(1yv?ta|G@reYli9Z_#HNWHagpMwX@^;Z?T@~6lO5zlzUaYj4C680C3=mpU zx1Kzk?(dJli@ZB(GDJnGUv=IDU39~|&ydIN_kQAs9fZUG21G8D+@6X(KV}p7lIf>3$jXi|B zd2oO%z8CT-Q7$I@sp@mYm`bvTAq%Wocr3g_)$_`miSVUWyiVrGqMD>*ynDre=2pk- z)!`lIC$Kw+;`?9ay;p-)nfNBcBF!>1A75aHS?7I|$R=4Ae#M7TbF#;iMDNaD4;}9_ zK$T;``hG4fyH&eu!bx&>02&#ja}B3B zmAdE1;g97xLGbc^qK{)`p9M0`8>L)s`@6P^G@?lw%70&J1^7Ss|4USVuo4FUgrkX{-0tQ{J}c6Pd|&tJIh3zw%$F-6ry2n=`jI@ zOqCkGa7QtpH{qgGeum7?(Xemiltbf=hNzruumHPCC0Bp`u=K*^zmhCg-uhGTM` zwh+|l#ily^xXU_X3hJo`WL6;8W7E%Lhn%}VZMOxv8%&Jm%GL_D<2X58!1&TRqDq@C zwp)!3d3s-HNZ*_^;q@lSYD$A;r3uLDcj#u_AudNuy%!V+J@Een4Bvqva%}L=6?vi; z#X%%hbkPBS&L+s2U1cP@RP)z3n2CnTT49%iTqjJQN#(K35>GeVK{hut=HR2 zGc#|xY5_I*zpA-Ao#i{XV5LQ6AH`c6C#uFzeitBy1C zL%zSAHX=lT+D|yncitcT?i*)V>57y7_8K{VVTw=kJDCgm)U`u-3zYyYF;DP(EScXt z>-Gtmc+oWJ7tP0RJ-`QJ+xDSPT-dik!~|M>^ww6Alc#|9vY zjc zj8p_LCiZ!#2DhEGL*UQL1!mxx<`iyT0PIH|8X7=f^THjBlUc&?HT#|Ay94X`m|;di zJ9I(crFAfr5;CRqb)K9JENpP@Cyu3m(+RV_vt!m=wIFRuXJ-*7T7f%A7!}1(GX7W5Lz(o&FoJBmzH{0Z!)yLATW4;0KyR7R7MDU~g$ETV@(BGEr z@`B-8Gq*#D3r_mmWm4yullo4O zo*v;1c+CGO@fXZ(Hy2}K55$VUFXQ)p{0~=%8a~0tcQn`i(8utScNOs=wD)N7@o5ns zxulnj_(-iRh;nu^z=f$NiZ8;MTka9X#1j6@A9vj+1&nInKv%LjMc*CjJI|^ZQ)dc+UQD?0B@# z0n90Osw;?}Q=jXD>9*L>q#G^^Aj5d~S2?5ZkhR3my44=kzC#*Vtd3oI|B~E)`u@gS z=dx^mM7JK5{PAenH{S4n-t7jif1|sdOWb#~N+6!?C&!B^v+Ss$5z-hRf^{+ke>(0E?2oUVzn%O7_+$Lzf1UitAICrb$4P$N z6;6q;cHE-(+0E`ETp}-p8QX?D@gH2EQaxQDeS#Yioq|oTL*8$HWU@dH3((m~Pz8G1 zT}1u&YQ1xw8e#jO=FV2-w~Hb?7>{w$xJ31%?(H40vSMBZ${=uL_K(SlGcrrMhueBP zQ)`ujvvTvG?Y@3tWg1))yU_~UjoaqKJEencrB%&TOYTZ3b-#XGh7w*sLo@Ru;q>o&!qM}Sy4=C+;&HN}& zN&iwX(G{j0A9FJ^zRhGtI82|pe7Tv=ixv57xlY{D++y^9A-H-eGIia?uW;3Y>$0M_ zIc>zgx>VeImMQ?{`|Wp!4jT4wp6>s*d4DTaAJC{A9R?=7GCu$-PPyNWK;GLQFKJmv zNzzNhWaegnD%#k*jTgIo__+S?cR%pqM*i>v{o&Ki+myD`C$YR32h%SERt@;u7pMO(>R8hLAg(j_6gJ@{z zJ2gcotI3Lnp{C2iG)!vZTB3?VDaW7k!sARi4cbdnGjQG97?8;lJ5Gu^hG{m^TL2C2TKlRsaZRmpCR5R^PAiI0gSm&-(rckCQuo{}+$p zj^7f0gq4~TQlPt;po4!pX+uRs_=594T));bXt94n$l@? ziD{j6T5V#QtCNZs>PODB#J4L5eC8l-PY4a1)PSt7i z0`auobec}9OiVjnr&T1TouSj_CZ?UK)8-_9ruEQivlG*jb=s`Nw6kI? zwDa55Bi73vi4SI7!yHF4N|)z=UF~2- zd*xWQ$Jrac2NL@Pv9uAG?$z!rA)EZcp-0TeqVJbmfR|-W5s_Jrs2w1I* z>7#-?iNmM|KH%IrcIqbyQYf&IdQn4vf8o}0Y3Ua;Y68_Dl5w7O|3o= z?4y$hmNHeGH00BQni<*h&;K9Ls7@Y#^J!XLO=nUg%HI@G#50qI^&(ASxBCsrXiv;V> zRwcZZm`l4`-X^9fTviLHoP87U5VHkQ*Gb6DCg$c>A|{`>y5rjK1st^0$_IUaE@y5k z)_j`1DG&Euxhk7_P8un0n+y2Hx3ipx(1N#3n=7%$#A)ID7S)(NnL zO#mWFNhSCR`ej z|21pds}&wP|6<8~K?}2y1)O`UXy*Ld0Cxf97b`Js3OMbl2H1#(%&_U=gUpal$D_tk}G;n$& zCeA)hd)X9;1Pap^c=&CTC8kK%6ZEiuQ;C=#^7AOFzB0L%I)MLiW$6C$* zri~DVDi7utEX~m^Zl5;9;w8oMKm`B1plCUN-o}mnJf?@OcPl)OzW|28&jqalwt7t% zorV~*f4p9M@m;w&v5iwPO(I_1BJGbHnz7Nodwb8;v*l%7e z?=dPfSXhO6olOI*4#@XsKRl|+xm>i7_PN?mA>$*&TbxC$_$ z=K|?!noz5MRAc;~s>TmBCN%PJ+4sG{_PDITEaVCLFWQ(j37Li~U~PMuox3DOAdsNn zuGXG7@|^G+Uk#VIJk1ghG?v`)d~8a3tz(YuRpTcjz@$DYCs1s&BC!Lqp(DWc+qj?L zN|=IWFpD1rt4!{6m#9sr?xOh_Jj%&FmC8Gze6y^7G%f00#zmc8gc|`N8h&w+J-dkN z1G#ccO#u9^ghTzKtF~0DE3u4#R9KC-21zVO)+irKxqg8N;cXHC60&$N@?RG4NMa#N$F#LPFqa}RrF$9y)0;X6Km)T{s7FyY z??jk?U(k%OkhJ=631p&nZb!GG>=GU&7&*f7T0S87b9fOFnMyM>D#PRqfpkMatFv?E(}0vKR^F%=eu-#pX+R6rztI3q&$~?MHM?3ovLUv>v^P`=IGv$WhW5K( zQ;>%iJQNzK9u$}|%q&dimYNyP=HB)lJyHgLb)^P8s8-%t$|?|x*Tzq{wKTODhXp*G zelk?~=bHl`&O24h>6CP_^{~G*HWW2LT$@*{==5|L@bi4BbaDLf7Fy}w8ifH(bPDda zn$C_&*_UH>fEb)l6T=;EdoVi!$;BE-u{O*xpY~K+%w0}X*16xH!wTbERZI$Ga45}x z&7d=U)ICa-8AJR1*;F{|6P~CL!0;yp=#0=*>b{OiF)Wk)VDb2nn-`$;NwhE!1wa~q zJ)ckSz*JCn^f6D}0qVq$)V!Pz)to}!dv^=47A|isI^e3v>uC4@sizw^tvL+CAn{D4 zs`c{wOdxm6Pf-BBN!IVY;AHSF1=F{Gumx>s4p*t0HStDN1y~+mu;0Y}pwwEhHrh&$ zr8&RCX%3$-7+u;TE$Rup4M8AY^ZO9YG);XY=T~L!8Vb0@PX%NhUT}T(fKG((JM`r(y}!E{x{YU zdc7%w|N7+bW@{3?+LSQ>+9i6-%Aq$o@iBh+revCgOn4C@_g2*62fd9*Yur*@~CUI~IIILHxEj#2GfPlhi0?d_iGm(fdt*$)M9MKxu+< zaRp@}6q1z-2RJA#$0=ietgeQ#yGSg8ysfzLHAmoh~HB zZ%8Q4XJ$lF0mwm}qWPtzV0j#-wF#cK#dte8OnstGhFUSo>z;1zXsyv=WG8$>-){_9 zt-W3+;bZ#{OJDQ?!XX%b?oMTU>@lF(cSX$4rNM^3;$h98)2&0n(3` ztk=GfyXJ#`T<*2$w44AF!^;V#?B`JLbsYx!;wd9KK(D&X{Jsm5RjGn!!KNmu{Y&(2 zqAY&xxXzr#*j!;8%9-|0(7<)4#UC(1xO|@=Hm3kU5??2{{La$41hR2DL6Z%dvB|1-I3eS8O;SvIDL# z0T>%k2DFQ{NewU5D4>+I1BES+W+eF}UOXjDQdx51nVLHrfD%))=LiNFHGBF%DRkmB zb59Xa%l??ErSfiqUstXDpipzSNm{eh7?9gY7J71MA*y~+SFMgvovvE-0q=NB)nX(q z-r$;lP5N&AT{nUG@(OW|00E4;^BIq-yK~iziB)&ap_+tV+ehFSimL5CsNtlmw&3Q_u<1D zcw};E^bt@ZMvThF32iS>{_95z#)*{%yeI1x_qRr7_sjkiKfW`}@r9iMpiC?8Fbvi$ zWU>mrk~2&DGI~Wh!dS$SD`q>)ow#UmYv^Zl;0A^gbr}9(U_3XEj*u~&3MULhR?S)WyzvyWuB_Y$y%d-fX z&vF`1yh%l7F{>YuL9`10gCe)_e5dN@?3q+wjMFq#+5ZK?T7mYTVgmUXbCyf#Hg_xC z-?W_0u5F}6b?PH}*xiTwXJX~vj+q4qex(|hE*decJx(huGTe`VPBa1@oldWR;2ik? z7ZEj;5YK#}{-a09*|}7Z+|$gLx9Q01@@uJB+%J`5bSW=VOAR(8rmzswfaS@fbPzi!O-)3ITF@GhjVIz3EETEd?P*WL5chJyw zfvUBy6&i+(U&vy^&jbkonz?d+KJmViqAOJJQk4eRO918!93eELE<+jYE!_XFRKX_! zAOD0Z_qh4(jfmH)sG)8kObqEW*J6*GRySwB0`gl|NL`!((E@a>KQ*nnIAhqLg@cFW z^Ilj5h%IKZnbUEjkQ7C%8h*ffbH6OZ)Y|80l zh7ae{;qh1!rz!uFasjZ)EM)9(aoZ$Sq1}AEa?}5j$W+>4;A5kihMM(!6=_j<=3{LR z&~!NAr}dMs2IFD$sQ%Dt%;VpUjsAPQ0)X-7eWA4zz9}OL>px?4+M=T%( z`SMkDviRtt6U&tMQnfa72+w(EMdyb^g#~`w(;2WppYnvJqQ1X>x#89_D4jmxjVdXh zNy?CP31b!3X_N3-W;*@F$@HmY8kSBwos?^3*-OAWmgT%Z#zIL`+KfhUj_MIlet{~l z#1)G24zTk_s_d&(F#8U1r5mU;LbQW9K3eb!-ABNKXA8R;94^OnklYm%(^0tq{}B`~ zIWO?Gn5EImYpIfdnU{)NsImA8miiYZQ$N5j&^s|O9pWxd4~nTD=*HV{-Fir@q$L;# zl%ksL1daXZ$JBjw2j>QkO!!~1p?fk`-~<(yC9CZ}5eSzD<#7uhKI^HUp>9ucx!Gnh zzlGyK+}20Hwud+A+069x;e=}hItLbEqgtWv<9W;F<46*JYBh6BCgA9I;UHNX4^nxBM&#xx&13=$5AmyVHh^{x(_ccHg z1qD6mT3$^*1zWMhJ&F6h3N-9_oRrU5>pKGb1o+fNdQ}r}+yM1|hv1b0Lwf-3a@+z0c9GJE zD64XR1Xpo4b0J=8FyL;wm!I#WY&v$C+h;V9=>~8 z8<5x=K2Sazas1v04 zd!M3PV{42O^JA*d(sAGHKRBG2PX(Fs3nY3EtxwVy=r7Y}O>(PkFH^X*Qo#NVN@!w# z0b40Qsn+rT|6@4r#c=QfxKG`pG|Xbq9x+qVKcp4kY5iZn)B2TG2usF*S0?mfXGb44 zT1C^9poWO5B5}15z^!@p+@^cTHJR_hLnN z>$+2&x^v@mlnxIkMSnrZjmPDO$E)ps4+)%ehSDDFCQHV58zfm$#bDq$_kK=&CYFM@ z$m!6FZH?`u-&*NYuA~o|ic47Xr$?+^m(xd0l_kLIz2DkVJf)<8nu_VLd4G$wi<6*L zx-F(t{_Wm%#pP43e16}QE4NeQzEX;{P#wQ|N!|x++J?1qwx=t-CVcaTrP>;QOF~P* z4`>fo50KfmbVNkem>cre?y2*`S}WCX_|=ZJmh5w=c-(l72pOtoMJl9&2%j(6vO`FT@&UVArs@ipOwpQhp{NI9_@;Tb?_3&x;m8*}6h-^_VBuTFRZ)k=cfP_KB zeeEgfCX8YAHXNPZggLKbrt-7)q%?^)x3f>3NCPZr3B|!uUBI!#TF4A^8nWZ!|8v(e zZ9cY(zmXO7umuJVErJQzb8^8QV}_1jZ3E{$UrR%vxqc)*!%~4oFTkQ@O>+uT?q`WL zw?A2Xb;++eC2u~eBhKU#Mr&#rK z8RB64AaKE@z&`ljzK;2B*29n=ME<^m!}e@(C_Bs{#@$S>}d67JMJ z+si$R*!|G82V(1;u6-a~+sFw{;V*LGCAku~bf1E}F?BuM0+oH~mBW;OxLBi8dS-t} zXcYxR4EuUvnjC3=mpoqtL28x`b(FM8eVIgc85(u(`|>iOnyRZ~P&IXW-HAtS?fA5+ z{Dk6j$3KXcO)sB2^+Zme_$L)pYhcKFGM~(tQ#rNf#6PGx5o_1P_MA-7CslrR`OFH= zf1=qJR8&uYopB<@y+@DC2@a=Y5nNR^^#ET$pufb-nvbq!?$oO4lUf@yPAtrBJb!t` z3HRir&tsHdb@B_Zs&YX^l;6*-jF$ahw^L;5+~|cDoXls{^Q%r`NgiEI^$)NcD}EGb zH#+rj4sWl~nFXETbYqnU3b#c;GNK*&X^Z{{tEIb{7wf^4fB8Z&}%ZHSG&3FV`TMQEeriwfO(H0{C=#ytz)J!Qoyeg6qbIS@`HC1~N=zA9VNOcDHMv zh@?fy5q7vA{FTmpq zGmJ4^DYtTr=ocr!-ElBKPUpXi)VP?$p1feVFilNixk4Hz_YZ|QaXrvjWaFET!JH*8 z2M<#}g}+)Ef<<)?T_jg#fLhK_8bFP|e>cxqcHLW(e-|4$RNXX-!j+}K2?|p~I85{F zbO5ugBO0id#0Uonr=1aI88JgC3K%y5eFg@++~>libAyWL;1Uf>@^oy;vHG$!SEd0$ z%H%rRQAF$!^%c+*sb;;(*HIWYc3g!-aAZs9v-#^)s4CAvKxim{1w2LfJU}+%&@;KNQg#<>B8R0JLjOjbrk_B{LALxUr zI7{_YIq)lOPD!H9i#690#N=uu^l@tL0L;Xl*^896=$cKHm5RF8mO!aookXVrs4teV zD!o5e!_!n`K9ExAEp7e5Tr`+GMVBK+yf^0}f5Z1f=6qM_`0yWHLa(?C2aZ*q2Q~Bn z>JB@r`2m%Q>&bg$?+gbgmLfsa1T7txSECeFrqChRx(-JS+Sr`M-+tf_k)dPJaX?-PPXbLw*VU&Q`7`b z`aLbi`wfl7sD*!q#IENlnS_CfQw}6`id6~@7&qm7Gx>SE(3Uk8U}hA3NjX3Fe{`YG z8i3uj#slU0EUo`u*|-F2RMEd^6YRaP6do0&yG?&fqL;%QVGl2ESl zM=}9G?sps3s9=qHL4Od+AL;4LC9LP-_!ly4ZqOKO;%Y>_Li$ZUXWQKnP!DT|M-~To z0@RHZHAvNS&f}=W(y84uc{DyK|2lNpe_H6vd@?We$ zPe$$H7UseeW+j-r0PdC2G^?k!2&(w7ugxhhdU(0SE04*$J#yKKjotF|~UP{5ynYZAja`o2Gf2NHWtl_&RVVY&Cn$|2rN&FFBGyp*Ax)+ zuWeQi|9ZKpQkY!K4k37K5XHQ&0({`oY)@LCGy#ilz;YM2mZ!_ zv(IdOe-zN`@HTz6xl&&T<2=B@beDvTVcOv7ZqrB1^x8|Y9jHr%-c;c1b%dOiKu=SM zN2DQ`P^Tz?Q@-&D>_|CpTHc=b!Kx?=_hUAo)F}zj8U`2T9>hV1K`=iL8m3$Dk=qAP z_PhC1F%}H>D5^#b*$k;s@9&p{1aLvQsIvFhe+oh9^cja!tr4xcP+9{&25xsHOC&wu z+Gq>qWM)mQ5_OaTAoU}|X+A`_+M}h3d0}nGz6J0&=_yJ_NjlpXrdfe>l?KKgG1X{B zI8APzJ;+lWeoXkA+K|S@9w3yd2S9U$myq8za5tr~Ozs64xcOy$B@5Ke`bt8At}1XnP)3Nwxf+WdQXwH2K%3XYhF|1*?A-q7{&r@* zxb$Zmmhi;f4>S8mnMdOkICPeWsY{g8H+w=Qyz;|b?|Uv`)^2QG-odPKGCVcQf5V*h z0Uqox;=CHaS(f-_g^WH>?iBR{F$*Wt%dTBX?J!fErHpsw9Qol_cQG+x*5?IY_AG)t zEul7ow3AtY3z;PyqM02d+|q)b+}2eJM&!TeT{btvtnJH9d|w1R{J9|rv$g7j7gnro zjC}sqs0D+7S*)U>$9Q|B*t~&}e}PBByq$<3Ne#b}OAG{!^{Z!FV= z(N^~^dMOs3G6mt@7iNrPfgQobbgD#j*g=iU1@#Ew$Im}v7O(}1V$apx->A}@Zt_8j z6?M2t$1>*aj#0eP3f++>bnNw2vSaj#5SFAjOGGi0k>UUua>c)NM`^zRe^x&VTst5C zD9D3*6CdL5L(hcO*pMN1asFKJmyH3V3}CKvEHjyTrnI%m)N`xWa)<{~PmrDAdW(o; zp{3eXHPz#xr<)6ms;N8hF>ARq9{O!_87~eXZ(6D1`e>bdSo-ZfYKD4Jb6ehMt#&zm z)aXH@WGFqrD>-Do*Dadie<(lJk9MB!g#%@8wlyv;y%XD<$uBlZAZi>x zx0!JP<2V~6b_DlhiMZDRcI6u2&v8n7EK7bd7jRgw*E=!5a>JYtf8!Ra-KSt!qyr%c z3kB!5qgVDfB}Q3wDUX_XR*M0;y9m$VY_CQ@F{qfv=D{aNR&bqx_qxIKdc_z3e4*3i z-Z6PfuCbBD%lm;2HQN06wbFQ(AIp`XAgy%g)wT}aejqtiQAVR$4eJX~>;GV!%As$mdBLQgK}kgd|`~EX56pg zYdu_SCAa8dcda~!<(ZGO>Og$)`o)?GAs(R_%h;qF3orFEYZaLL2`b~VVV8iio)S0C z-l)6=K>Q`Rlk~25UQt!0eCL(Rt`}jp?^9Y4$`y%w%InO>e?-u~$K5$PmJi;D_d3b1 z&xNV(*`B8LctQ2JJme+5qXjAX@!$F#Qu!K`TTO~EnIU$<0&!)3> zD2l9sj>f5(>0B!HUB=1VfLiS&FX~916yG^ z6^FLx0YJ|Se?&2A+>DAcRU?9DB5K>!2%{;dEMy*}NGx_c9aeV`FT9kzSXI;XWY4Me z$Hr|A)}5$I5k@8=w%)eCzlvltPvuqD(OO3gfNwat_reN7;!8B`#$zsgr9HLsegHRV zNk4vk$J5#7ot&(#HKh~%lgND##Z(*RW4%q$sQ1`lafI-SCl2vYRZhQXrC3z+<;RzMdGvOrz;f__(rUxXx#I4au|O;0&W zC!(HDRD(!#4?0ai<_iNt+Q?S~8Z&m4oKisnfUtKJ#-~Jf?0`6jMVGai(guZoW4!FZ z0`g)yfA4Gjn=ckwlyrp8GE_nR`%v;S=vWdu@+1KIC;)s3-ID>*lb@z+L{A2UfXQ|u zJ(*gGVt7Eh`p}1s$M&IA_W{o9LAeID0D|6@P%@Mtc7GNLox)$_1YxP0Dn+cc4;sf; zrJ=ab8Vy=o7FHH$a@6e}~1+)OSG&OuJQLQc^lMoN~;4%bMmg z{P|2!r6)+GH#S4A#`0ixRiy6a&BYz7V+E(Ci{Q>Pd0n%aN@ia{;m6jPSakN!oO$a> zH#IvG2Y`(aVg7%efSLT;)rXRFh!JIf1hN2WQ!9-l_TbT@uEMrtS~u#?ERhAzp;Pwi ze`UEvOpi1=Bop!s-G)1vKH1O$RAc361HE2{GY1d7W{}*w6lN>`_R-S<6E(;-jGgYt zyV3G}%Li_?#KS9v5wES`A4IEw;IZOW)g@%^R;(%Qu(n0$6&Cch{5twiCZdNkvr4dE zgMi@`#5LfI(XBW$>GaxBuTkU9x<>kAf9w-Qceq1lUa8L}JrY_~1y;qn44uCcJ+}`2 zz{?~+^})YEb2wIEd)`B8f`&=#StQ&Ir}jUryqA<>Rf&QGj3KX9YY;%`BDAQC?ET6r zk=|LwV&eEC)U{N?wAqw=kmV-(@P!iVRwN1Pu}lMm&?#H_ua(L#aRp-eq!63ie_I73 zTj~T>ktIDL{8Qy{lt+l0T4KQy7V8VJRpLEd-)3&ySgg)f!AxhPhuT%{M4S!GEj0^w z+O&KpEvhTwMnsZnzt|la_S{;4;uk3G(**qIU|;po*>oltpIMn$5m21G&12_~x*6g@ zJ+VNRmmg>RP#|Lha+SK{xFfOoe_txP0;z>~|G>T#esyDco&1OoiEE&6pqJq6@-)mU zzvWXG-YO8x(D$d%xbxffSp*%}=PICfsltbO1aoBsg?i&=jAgZabAa0$d0eKpQ6HZ& z>UfjI+n$hH#`VgM6kj{6psfsXe`qU>O(8coE7m4^tO!Z6-p9*zUqn_ae^c5gVOctK zF|2|PH73%+Ha;y7uv*d2#bpz^Q98_t-(qm8Drr?ymTVL{z@2{4>2pLGU)x)o66xP( zDD8QacBd{4v77#4Nf3KZ99wC~nsvU+1D#n!^9x2(*C>F1>iE2W34l#ux};9=nSkz& zY&XJqM8Z^c910g5fm_zRe?Ts^HwNe%YjFuJX$sKe)?)4h_3cBuT@pmjCN+hz3N0C~H!Av=uCLa{N^n3JF^^(lgEP*s^RYc7e>K#xD{oQ}E8A>F zd##+5F>JTA!{VgtY__oe<8RMX8aisU)$1E)GmXZk>l6x1=CkzGdO1*&soxRZzS%}6 zO1CtEywV|I_cD!saV?e!%agxsboho(2}i@r0+M3(&b#7qMf3L+%O%Ejjrx9?j*yNc zYCn=^mK>JG^^J*3f8#4I&X!x;n>8ROr0IW=UTC+A-zH-2HkcyYNv}4$XToB;=BN_C zj+gkeMu#X%HQ(Y~Tdf{68=J>+CNuheM1S}M=7PLm{?%~wj$Y<5JK7eVvTW#~?W09v zSnV*}+=7NS+1;Zbwgw+oP_7)kx%;;pGU&Kl>+5iB21=hcex_uRm)zG0x~09ymYIiw$K`Xa#(!lnxWCjo51p zKO|TGw5?%%e?pPZNH=L`gH!5nJ(?w&Cj+BHLqAeL-A#Bh_G#$MBn zP3VSo0lm}E#`E=p+$GYxJT17^Jzhs-SfwZ2g@-+$iBR%d0hyAg8emt;RirydZC~0X zlg#W=saDTj3E1uiXIs3@^*zHmR?sW*kyR~(;YR&!f3@`H5<1h+9tb9H8Z;K+R)5)$ zCDe%i$}5hKv8vb*CYBAwiLAy)9$5F%y$wtBka6!N<=(hwVhXL}>Hm;ZKl-svJseNr zYm|S+G%@hLt|8#*Oy79=Af|<)59*g|<>dXHa+Kem2tfGWw1*Gn2}pgQ)2@Z+^4IlQ zn(c928g?`50yrcvSM6Pguq9RX} zls+yrlk6R$s|F5)9UZFZLxH<5rxh_c0~d}MA$LJwWM?BhtrNW+pOnjho(ip9J|+@623 zxO$jRj-PS+R>ZQP4(I0aiS#QLi9Zyp2U-fm`Q9Nuq{NvI&O;$c9?8mHDonp7QJM&x z7e62G$IonfslH9L;AVQS?%QVWqgck0suWx{lG99kZz!6BVTdR3CTd0i}Jp7iE=uOu;7BI)CSwl2v z{loQjyh7f^df?+@n<`(3h;N45A`v3Qbx=ozq2D(a7#5x9{{cE80&bBOnuSo)t@Xkv z&;j6h-?!0hVgaq(GrB`yT9r5$^l2vqf8vFkI^9(t=NSIn$zda!wb=9vUSMAO1EPoS zsK*IG&vsfSZ??0fj*ESygy{MD<4`oFK8YmlVU)W90OOk}M6W{H--wlG(+7Y~`4#N~ zKnb@qO#3@UnH4M*Jcy9ZJ;dNf)f;p#^`Rb%%~;Lo7^_}5^l5v?Sf$c-I-(q;e}Nh~ z;_A?sb{-{t1$qP8&&;eDBOW49vnBP37vHFg}my z@p;dT&ja!Cd5_2E*C#$cixs`eCr=H zaG6Qshl_~se#tT}KDKmUEp#~ar_M#Rt`_IU^PTym`mh$v&ZBtqd}rt>fu2a!OPC(8 ztOLJbwHQjY2=>I^76s&5#-`OaZrowava+^JrSeW$VMlH96vb>n7*uXke}d)+!@#b- zQkHJ`6)h^jSe)kj@ieL|m`)KUF6TvgUQR0l;_Qr;>4J|Ze!UMsys4w%Jj%6gFv+)1 z10}QIY!4nsqr=@q|4(<{0v=U$wLLRy*f~K#Zs8^pAQ2KI2_$L~$Urh+VoAhM4TTIa z#3Y13m)Jfr?sCv@M@ivEV2A6>6~+zKR#HS{1a~3R+PKnt#1( zpEH?6K=7yS^Z)Q<=FGmGweM@~z1F)5JT$6=b2HP`B6=1^Pvtd%SY~dd;Y>TPRJAP{ z0jz5)?y4qOl-0!-vv4qrCP*Qjd=qJL&egnj@^V;1&TY89MeapFeG zf+y2vxo!l^-HwPtnWNhR%dEX2B0x_^$YhIH1zi;S$0B{yCu@n!28znZl@L@Q|GJ3f zq$e=z|HzXjhK@FRV64sUyp<>WD?CGA?G(q8z8)gcEu99^e|xr894t5>9)FBF$O**I z<0?zL9xz4Ezqa+rrQ(eKvg2k~yWTW6x#DoHhh;!-26b!wT863C+7guI7eybJE)2|~ z%|;=r)yHRaS0cwov4UOCf7PgqfWQUQ>RWj%$ zAcbu(vef~&svL7vpF;drPUCURoFKYSc`7Cmx;$3^FE9?xbpx$l7)607YX}(Y=%^tB zLmEgB1+Fp&k)oD5FyV&{UfTL63rBp>HYS&MCf=)fe3f@QaZ$bJoeCnMLSr)1QaFOf-3KO~j1TKEC+1hSbrk`{H9NVV2yP z)u;(Ge`?hX9D0SW{eGuRpGy>3A{N+YFEzDTOO%*@>og_G09vXePjj}r>%#ZLyCY$4 z-nf%KsS8c=^*W5nUyb#L1%S8eJhU;ggcfsy|E(^38G^y^`pDh%X$1f-WhUp^DSmp`pwuJBYk#Zcqla? z&sa^Z{!uhS$xS4|LNY|y4WUr>d+i3K*aURM`0Sw11RsNMD6JBU$9cAe?$SGg2 ze`Ompsoup&;LQc+YtY%fZVU6rLr=^E-Rpx}D6NE2d^ZAjZ##Z%g`{nMiAe+`>}EtYvGB_CSoBwd~gOFHj5nK0Li=nZV8 z0)UlK{T7u~5gLg^o6$Yf`SDH#=)K^60sj^YUA++EipcA@iY`1szEXvo5WpDbse+p* zxJ>WP1uBDrhsd2Yu)jxY$cF6nR|w7Ce`?dz$1DXjthoxiMtEfBg;H zswB#cr)xX{ML*XSmxJpm5`}HFaMw7%s=M-&XlF1U4%Iu0dXCxgFWELzrVGDu|A4DA z&RmI`t{Cv^Jk|`{Nzj6g8gl;{t&Bt6nYLN$MI)~cHm9-bYBfxB@iRF-R}E2G+YyRs zcwPc*qc)%woT#s}oA`~J)C-cVeU(O;PM4%C>KNyiwRNqW$^Dw#GPJ|{crfCc_Qf)p11pF$(&3B6FYn{a*s*I;m`7FeOf8FEv3>Vzj zvas?g?+84t1!AF-dyCRg-Ms(f5ZBEkG_Hi3#u#Q+$f)4z9v3{WT5A*Ozu9b)kL;q| zHKkRf$=*By`Y4-6Bwi+ZG*}~`al@2;B&a=i0H}0sNHFasN&!H_3Fxy2$6z>_UqqSp zl$K0>4;VUTIjPJ%_jup7e@?Fx(4tA>4Sx;Pn-kO~&RhrO-F)18?Sj2&VrX&Kns(Uv z1yC%<=rNsnOUD9my)H-kSM~QX_xC5kvzFtE6@u(A*YwAJvVpgWL{jU(21m5Y%q0pi z@4#E)ba58efDuPMvf;8ZYovD)Fqkb#>=^{Hf$P0P0c_ne^F4A;Ayap=EQ^D znv1?+#*6b+2t<%pgJpK6M@j8CsUW(FN{(@nacZ0zo{ZCuKwH_|u~&~AK2kl%of|wt z5xyiqd1F0K5TM*e?Thtqp)Ms<(1MGRiv{(&Rd8w+)YmKR3+Zt+b~<#wqv%g)^5fih zD;l-nv=WZ*>4fMOf6Cc1w;At+H#0K@HiMXV$fAWVaWqfp^qU)9;rxf$=f@o-nM=`` z1)?};-@u%U(*DDNT1%*>x7OK>K5dAXj%cPr(FWPAmrw1_e6GsUR> zshSt*0U5E*ZU9Y+QZKN4%cSk(jo!;)2JI3rS~3Wpb!2l7?`k~6g{^nQ5oI9PXAJ^9 ziv%}O_Bb_bg62Z55(|NncmY9O$+IKb1Fo-{YNDLoe`#&gf9X4FYbzqkANm6sC6t~m z2*Yi0xd5g#sORoFYAhWi@}}k(>Nc{#F|CCz2P)&JJE**#dS*XD<$iI)QR$MA79-$0 zU>aUjW7ACSqaV5GavuN==jC8<%3gn&@D1I7Wj6|waIEa>V2RLd`ph=Cy#Bzd-?GmMU1LjSC9Y==;HXc;#M0{4NaUSzff!+(HL##`8Gq8f4I6 z@|KR{ei_P}Emu6i8OGy2^6^;FIA2t1ZlkmaNc%(4w!!taVrIs#TCSps3}JQAA7iR$6xl4LEni|)f9?u^ z#UsE;T*7^J_+W6vw{pqvh{42NN-O69Qlok>T)tjy~cxbeo7sZI?dpiHYe-;tPh>br|fbL`FhFfB#;D6l3^(qq_p*zm8rWO7& z{GCO`YRWkZAKwSuKwPf1W$hkq_shKS*e-IGqCTSK{Gx!1R<)SD#NYdY7% z$dyUSfpBUbXKL(6bx5lfpiF!$E6Ht@WIx<44Tmgm63ibH%FtSBo>W+Bww>cr<14L6 zs;#QP-@njTWP6X7r$Z6h6IzP)+ITJEQGe+M{^0>k$ONbye@Lr1hD%H6sX$`_`XrG< zZbDNbS2S`JA=i%JX|lnMx!is0jB1Z;&k@ zb%?kcfYKoF>9pZrKcyXRu^feEiQ=pxfj7W~&4@yzKpDhI!g89&B5p5eT|*THr)09D z!1WfDMGaH`f2&}*kkv=w&8}f8X4x?HDYN8F^+3xmRjJJienaRW41>Pnxv#+~^3+6% z%cjDVak9FKngNetz&chzSoyg=ras(ss6&Xsw9)H8U5tPQ(UsTmkjH@&8fur;TA)|M zq7^MnX-oT{q=h9sEDu-8R>FnOji!DXRFXn{wLiTqe@FB;;NP#M*)FI&FLKcho|)9I zWTw&=u$<@3CVg&5_uDh*E%~934ta*k$>>2d0e3+PfTY`}QdF%&6}{XfwqEoQ*APGG z0uIzBC?+X%q^ViIY&{qAVff2_s$Uj>pa$HHm*z}%|zf}-Etw4`D+r*3~#+5;jJf1^*q3?#mf0= z(;o6hX;imA+DqUi4uLt+og7M!*iQ^mF|x+z3il{>GS3P6Y87|!4(Omg*R&_}GXo{O z&)eixa$zPu@9FYMXHB(yzIqe4Be_=0VQJXiqnH=$9Q!~Hy4tqX7e+29Q zi7ri@IL6{`c$T~2h45~8Mt8&W)}VOSp4>4(vMLxGg3^F9u6LTEPC=hR>+HK#qId%` zEq!!g;W(4P86BwttR2x`PFb8(clWuJc2G(?cv|9i2r>tqraXxNBec$*-L7cS6_*zr zf3V}khj-yUO&;Zj+CqW)oOj;`Md{fsJ^qCKuti@Im-14R%gua~yGrk6abiMeu#8?W zXLl>x{$vZbXMd=XkmP6&LHF2Y90vB#!aW~AD;fCD&#{PaN_kqfk)^z>jv>5HJuTwE zl5^a-s%m}0{TB1@;-ZQQc!xe4{Iu|Ve?`^v!{M#43)$YZcA?HRtQXD^3jiU+n~BGN zALLq!&Q5cWhj{KDk8L*&#BW#UT{uMo-fVrP#Wnt_5WmmKu3J#i7IC@?pT~EVRF&7A z6|5VVz`{k1_5JT4t=f0~JXW7ax&WMeHe<20s>)wgZGN3a`m^BH&SNdAYnVTqe_!f5 z8_c+>(%BVUNK#!9o2W8j$ptGvoFbaaDH;nmK^b*`$O|?H z#4%qmTBSgX*{w#n=pvX7IvoZrh-&jU@{pBpfGP(E@sI!pzu7cdX%IR`e`;tUwWIT< zd(`#HSnGCIG9Pi#K7D2+E)u4;PN2mC0W(hhNbV$ZaX1&bG<5QlHBl_0e{hQ9OqRP9 zm_z28H+*^Kk(HzWSEBYsadN^V*7V!K;yXLRE+2BtT784II7ht64Zzi+IHEm0;XIMkD=pGp~%9>MKsDETuhY77=5qe>_#-xEPnj@Ff=yjgx?OR+?pOqljdxECmjBuMCq-) zK{e9+D1-Ld;6RCKxl4@IMDj+fy~hZV|}Ec;Zcs6a6`B=K4A;sPT#<5IA`TXV7N&kKM}p8YH<a@G*BHjh!MSC2NarZ{-C8YDTMdH&w# z#6J9n>95U{i(LCbt@gX9UIB>737b$3pt?P{(TzN6!CjKqf3IjLPk<@S6q_vw4fg}i z&Y*g5 zK9qbf%m6e1e*qvMPa3_N+qoL;ygKL)wKIKUg9S-Ul`e8icq8A}u94ri8u`ACjeN}3 z*2u64?%2r2f8}=@SDs@t8&}?ITy8eBkvCH)_|k?`klt}>fx_+eI~rSXB~W7CfF3t! z`NHN?aNHV0i_KQrV!{EKm0I7fQXg2ATHmo!Uxiibrr_kFL0qlsnNlsz?H!_TU>yCA ztLmFV)f%m4NWHLdb*NYMATvjDtG?@B&$A!;&3LXZe-$iRUN!n^)$*7UDAP1~rgIN1 zVIi)13&mu&1s%0zi-LV)ipq3G(wg8N9vMGX@Qfsjx>wFFSVDp)6wv^63~dQ{4+zEH zqf#xKG>+ZT1`!N5pdz%VD-C0VO-3-TUJEUr=EgBmd_(KInF4i>c`h$!$;Ob&N6s2C zSZ$W;f9JYr`QqJ(_ohyVd3ZvKHQu5jOSQ5Oioemk%!Vtchr1uvs&@1Y4U|)m0<7*0 zFnywvJ{FA=fckaPnXg?x-3+yHge>cmjo;tQNl_{N;nONNO5%-V`gma!r{SP}auOIR zhP_yJkYK+GI4_|47o|8m(_5YL`FVppzuhU0e;avAeLU}uogIT{pE`lp=!EY`o#OuEO)OE=aecN(h4rbxRkfj801Aa*1446^|0Wzg~bX2ikOVWk6j5Yi#LlN4#j+M+7vrw@EX8C^cE%DNef; z`+I!~FFr!#?PxywK;nNUHT_6hW}Ve~&Pb-^V10{9Zfft<`#be5y8^ zcP|{%T<t+$}cuLMvDl4Hj_bMWrf z=ZF<87-(Hge`so#pi)_|vF5?Q961j9!fF-Az^_2rPrCaQJx$pdtx@z8l`t8<;T4PK zuGc=5%xmC@))latrUYFs!Bj;C@)@|GCf-VU$PJ)hs}s1Aq7Ngo<@=3*OTPC3e=4FM z7r!--L#cWOgMy>o)@jw44s$2!T<6XJ{Q5&g*v#2w%g}jlvU*14BK*rhw7?||k?Yq4 zal(YNdq@A1VJ&Fv!db1KJNA|cIbluGrG6SnL7B}F*~95kc#S>?Wn*a_qZJ803PcNK zpLf%3%au98O^cDacbwpebp{$_Sp+14Hvq#$>r>NhdG2URDg*nP%$umeg`gG z*1A974W;W8MD?eIE&3u(md!k~u-DDP^a~$uT9yevOVO$yH6EhAhdUbyf6j|2c#PlW z7|2g`@Op2=T8edDc?zQNTkR*!vTJltGatKGX$Nh>alpSEOq{YT({;i3D^nwJ(V^Y? z!23=ORI#3r3z9_cs%y*234$Laz+iO{&BQ;GC-{FqD48*?$qss zwN1h5ItFYHP1cFi1E2 zff>r8V_LR0m8af;P_DOayv@va=`!Ojy$zX$zkv3!k6XY4?mdnk3FgoNuIewi5q@VY zF>kXMo5?9_KaCF1RUR5$qN&~%^uv#we$@-M65}&LjVo{r=cpFkW;uJ(1l*R0UJAF* zD*I-OFfonHe}W}$E))lyz32)oJA%(}yW_B2b2j3xi|%w3^2*4~{hSFBlI2L^*PVb% zd#-m5fTYZN@3Mtgd^2Tk1TKT<8~!B%9wg~~<`4=-aiI|bevVR95{2tcnxj=#0+z~3 z584hh7;y`MWz%?wDLm#7Z4QoH+vws_=^q@RjYW+{e^gJ0ekP&otk9J@^h<;uuxXqJ z4t}&jg7@?O8wz_whaCuo>2dZ@gNxV9Ui3Ph;6(Q}#Pjnfj?IW#(-;q5%)GyFSpNW2 zRyON2aK``#Tv)3_+nf`;LWLZ;wPB|`CmTDM-;Pgq4B)o(C!@GW#H}@e!o{Q-8^gP% zAw=7^e-*B;J6{K06wp2~F=!!NJ@Xtup8#edSN%*?8~v+PV&aH2HKImzyA515kF;LY z%`E6{^LrUe5c9!Q>hGfmgC1_S%`8^tP^Wb?MvqH+Cb);^QZ_XRC) zPOR?@?c|A`;*HEPvQ_+C2#_-fdd1dpY!_NlFMlh_fTvM_9A%o+9|#+{NA#S6U5jj@ z29$suV_L;)qdFB7c5wV zf5EknnIK&Mac{2(xW-bjS$Sbg_)nX;{MLoZbQ-W%ggU_hoNKabHKxs0f&sB~p+0rY zN>iEW*(>DS4F=}mQMs*Hpo=)TTGX;+iGJN?Zs7|p?dF=clgTU-+GQwUu_d{&)bg9F z9W%dXC7!BGY;jKZ8|t^tD%51Y`-d00f44)K>nz8`Vhxz};6o!6ys2SJf<4UDI0lU} z=)W6FHO2;*t6Gzza*HiixeCDMuuu(GNs0WCD$3JP=NdacO=Fe<@6b^)c0#6GkO+aZ z8t_xZHf4N__dWyEYO3`BI~;KO2`b^&xDSRQW0n{S)E+W-PF|@3$Donj?cf?{f03-E z$|#C9fj^V9{=g4R&+l%5Qn$A~I`Q%Y;A_)mS4uUJS&bS~s^M00!~!w-qGVVLc1i{S z9f$Z@V6+zS;HVNdht3Qd#=}6^)Q@c&G|wAFci=$N(T{RkGK-4^*>Lm@9@#XtRCs*o zu2pl?D2eKds5;p=wGFRMFfWv#e>V~=3`LZMBKk|A;=ox)`9o1XIEw0cq3fj`_KF26 zrzj4k7^q9NBD|r9A;^lex0n($Yr4rHu_Sl1x>9L1k6PV-7)PAFAe4QCRUPDfNUQzG zAlVyAd~GQ46+4uROVa+x9cd7YdCm0JgHyWXI3@@g$v+&)?I#cq&jeeXz79vx17b}`_aNwT(pnVocV~mePKNl@;A@`KNW)Bve@P9 zL$?OE=n4J4#rvUYSE|%1VP;ZAPUDy*ScRI_^B&i%xtxK5;P*xREVm*#1K5t0(H{+O zIA9udUhY)x8{Q<~cdD)#Nh0H@pvc(phH_nSo*AG$OnKqB z+G~x!Sd2d|clv(wf1JWGRTM^_)(osOVqECmyjaVtoe_^BhhtUPS{kRR#c{@XGx!;G z!&oTk^*cnp%%wWjz2L^qo9;EImwPV2|9O0yu|v&CYuw2N{+ahd!0(G|NXUj-&;{~k zzMeg*35!`nj=4o(A-p>!&Rmh?7w{X!3r1T=AO&h){EJHCf2o^Kyjp~1sF9P$ZebZJ zQos<0r>RV_yk1)&b5iIMflbE<%#W7iQV3UB54!8PfnjJ16qkTYjf1ie4MR{RT^3hA zeP;N706Fk>G>|UcjhavFSo4uq&GX#v^iU-I?*0gZTZtz(3GM=7Ou+jy?Q#tz@^k{H$=S|!W;?AqwNYL?Z(9GW3{*}=b zx$Zmje}`%g4q(?O9h-t28#)B-`enxeqHW|@ZMS%zi#gM&V|Vz3SC-{GH#OVHBMUI`OZdL_7A1)(D` zZlUU@o_baOIWMHmP5WPUMlvx6olYiT|Eo{Ie*&-{&GkdqFjqENeTCL4C2xY_Ve8&D zx48%I5(YyHjg~9+^3Hn&n_bC`A-94Yba&8id=y?*+w2E!s?;vrxiHi&ZxFRhm#AH~bnOzRxoA(S zf32=cD)$vv)RvT*ibtgZ*u*6kLr0{#rlg|$hQv8Y3*C{C-L4ni5$bJU|ClGw=5X2{ zp0**+5y55llehFd)mv<~&SKg3;%Q0XwbKLur>?DiZMZTCTxLRLmA}GYW>%-9e{{C4j@GW4!&KS$<>h|;$SLHJ__4m)TUu3B zQC?l6!4V4am_y6fCBFJ;Lflk#@&L-!;w882OGw?)uJU=*;8e^2GFW z86h?<#B1p(TWcDWK4naV#)qSAd{Eo?u*)Mi6hGVA#){cIYpmw!Y+o^LV{V~Cag{!o zO8)8G$Nf3htNqAFC1-QrSIpLRf6Ra#R!u^=Z>&joQB_%o8n>SjVbj2>{3!#??^<>0*tt+am3max%z^vz z_UTStcRfs~{U9*&TZzP>_bD4|O;5A2hS*~kTr=%`BZ0cyTlYNGCwi7mf5Xms&5EAY zxrNpDO{@LEhl5<(Yipy8-Z9&2pZ$Wm8Lv{^8l&eVPUe`74`gsWg^%U@VCF`Y2vi>7o!s$$di!*i0DLSLPth%%&^z19D zIAwQ)b=bG2XNSHxeTS8oe}$q#Gu>P3D-Y=McrWmUPxmOZKlj`0<#jV}TTZ_U?xtRA zsA4Mhytj7R7}uy}M((sRxzm=vznp5{qi&8k`=Mz!E*m@L_sf32c6IKvBS!u{*Qj$` z$Q{vNy5@_2?^<}~B)t9U&YM5KsPg+Pl^k7pI8^WZ4j~jpMYbusY?bVcLfJy4ELo;P z5-~$rXXa3r5V9rNN=iQ2*RjpmCp*c$%vgskGYrOIreTo=c(o@@CE$rZD5VfBd{MU?p!Lbyj5~UBjo(BJc}b&03(B>&xd)Xs9!;M;@Ikf-{Md9z~pLsTjK z`!P~|Pp1>2${8KQzQ?~j(R4T^^pbUnQ;_O+*@fh)iw<|1ntOOK5d-MrV!54d=(co2vJ;c{rC6avdkqVR&lqCmehm@#B8f)!%2jt-_Y{ zf;Rw(x_h>rCq>`?9Z<(SSr-<)-?i%%<#oifH&_Xmc=YSRUIOdJ!`7?0*hkT2r#Br% z{u<)`0}2p#$D-HVOvQk2`DN;J8AY#auD5=$y_S3Nf#0oh$6E$I=SIiD!O;8n@AoJ$ z%|!Jlo)EHG+};|!tVegujgI~AVpp39&i>mR0vGGNpruNbb6!5Jp%um3pLSm11aEb9 z8oio~2;9$-V;XM$}X$8D`r30tcS&FiH(3P={)e7qq$ z^M>OV?{e64;UU0KL*g*|cJItYd2iKw>ttnNRzG8-EyrJ}Q5v^jITN^CKW}gY=lo}p z*T79CqnHl zXR^EgzG#fN-&OE}rj43NdONCSgVH&fA?Z(>ZH?MzKl1TZ^!s6#dkZzvM7&pmuYMt| zw<$IyhT4?zEj5z}ja>aE+id>T6tQ|W-%oih^;~H7YL>;}gQ(n#hioZm=dXlVbX9@c zgH_plqQV;aTxis4%mw~g{l9o(9cZ<&n;t)Uc*bDzB3aGv@vi^bT^D!eEej@z`GsZn zr}1p)`&GcSaT(OvJ1BYV(E1u+)D0nh&4^_d(U<^%2+=*U`_i4MW5J9QFo0iKb!yzh z#f=+=o>-lusu2W+2^OKR#mhzsx4;)wUp>F#{07=DIQ}5V&`or_>w$9wRH8{=%#>4? zt_v4|PWJ@<+~Hfie-)Gw%i>rVm4NR;@pbkj05e2N5s+llC-AL_!oRM*4H$d7n%p9R z%{6>nT#={$xT^ofH6cjK(<0c;a*`2R)&e~$y^^}PB(g-_3F(e`hyGqLc>jOBBfD00 zF7(Z+6N*?eR0XDzO+c{%Y45;-Al}X!Ag^50SmdVy&$A7;cBN$ycMJT*1)Ikam@eQi z@725i-N866NV&b4_Xle$YQ5*&qFDf1v8r1_titWBk5nnF6wb~9&2#i#`WGH*>4|#k zpJ)%ak^P1h{N>0nyVlsuRB%MeU?;4lBn9=O>;16D;(aFt7~(?i1ilSE z6S+T-c>vN*& zi<=|^Xk20wsW5De#yOPyQbYBZipeG`{AWTe>*;k(F+*VvlYLups_zq`2H>8(tgQ4^ zdX2(6zxALC7xT35)KRNDr<4U*(-JV!>QHCs*8(dV}4TE2WzVrw5r^)2oeSLN^N*}W2 zQ(`wTdh{i@n)1z%#)=)T_lEBXpJ`@$He*#yXAj(h4No;N@PF0+#6b3wL%$o83cE$R zzN-k~<0`KI+8U#GsPkk-DtGg*y6;#0hlv-$^I!d-x!(74J0(U`#uQ`jR|@8yp`WA z)~qjvGzu49yZBE1!|uh*#Q$`O=fsTaF&>+rBlR<{qyJ3TRB|0ye{W74U24~EZdH!1 z!u2YFgimDPwSU-H*87T}BxFjB|2LPw^27GD3MG!RZ%V+LCPp~h^Y>~-du#f)$`+f9 zU^h{qOlp|&baTp^{;)WRFLUOu&KVTY?f>6;6D-eRRlOLQo*EwZvBYh2Wg!3CbboR7 zPkwapWs*QS<;+ep5(zC%{WzFP8i`{ARxSu1wDU&ouhK>v*F3GDSo_ez{J! zLr!P;wl%=*E9e~qE_Oh?vDv#|960OIn9Bx#t1OJm+0(S#?fxbnYQKnRUwJWndQ>1f zLZBt;(&X&|E6lk4zqSFM7%4l{dd@59c8Vf7SnRgV^7eQ|$gYS|1CdBls6 zmR`z$C$BbML#JJ#$lt@u>O^=L=5f=<;IoZ%9>e z$adBZjM0EvBL<^+3wR5vK6!TGhmcO5^i19bRkyRRsSBF;v8zXx zEl${3e(^d>xrFaisEVy)zB=vSBhl%)K<;|cxi*PG*i%O<2`nsD?`^uh+{`WAflpmi zvSGqd%rm0ppvE(G=Ote}@<)>&W*^Pjwk$GGnGQ+P7i#22^-=>y7V3>U&H8Vg=Z479 z8WZ`f0uE zT@~w6K!77CGv69JDH2uIjv!DI`s(mp~>-?oVEE4!Mt`rrjvb?#k z06iCNDH`-{zkK~7b=0k8wq+OCFM#PyZH6Sjg6T*zkCO^}{WqEK;(4p92pK#(cGX`)9rd~O`($N?S@6LeJEjPwRO;;HCv zzwJhKdPX=dYgEarNm{gHrq@M8yjgwcGO6>_Y-r8oe(cqRmjwNE;}RFNa`Vap0DcBXHN?=0ub3t0+C_X3ma7QjaOpTEz~%M z+_owSX6GB~afnpP6TUKc5%Azp~~2W5+*$$dTu{Cvj!W0<65b z2s&2Bkt%T5*C={X6gVoP&K$5=0B)i4e($8d2s>j?Kq^G`RV_DwQ)yx(`JSEk#XC$; z1XEuuuX#l^KeyRu&g@A1f|QMWwjsP-Y&?nKpv1Ke#yxh2tS)M7Um%&1L!L^`h6@KQ zAFod$>5vqCaaXkbS~!pi$Ghrl;+oejm-HOF>&`9HPNld429SC0CB09}>sne;H;K<= z$gdc`cGQ+=&#SY_M)cdldDeVJdNX=(Y?wg>VVs-N#zRJLlZE?w1#NN~`6S@vzwUpg zi{ttN-zICp)~|AH#ZS={Et+fdLm78}N98aM0~T<`=y!kkO>Om7{qt&gNcK_AaMAN$ zUkNYblC2_u>4eFfkNTQTjln8j%UyNHn9_DzA7ITx>%!&!Zcgk$Z!1+_4L6i$fzfqb zOl`+f6`KwXJ+r4`_&+BzD!IeC?d7sTm^fcP@eG^$cfiTCPmy{l^IXCW%jS$|sPtx* z{X2AKfsO4^MdS@o_m<#=h^_Z!BE$6z#h324Fm8a#)vL@5OrfmuUld1^(E%j(2Hpoz18o?{_dOF-3-6VcKuE zc5e%E`$BFp>v;xkRu_jpv(Y(=(Oym*l!+(pDlHPF8*aSyjrPGByHm7pSA!(7dFWhm zk{4@N52G*5sw~lpVjWxLgAF2$GF5HK*^n_U@OI+M6jU)qy zemd)>iL2h}`%V0tI_5G9uTw?}dJ5A(xo_!P=+f=doE`>CQ&cT3=gtI<)_HtW3oCY7 zQgUI(4kp=eypO!V5th8Ufw7;ncy$q{WC5Ot$fy+eHw*@og3Ov!3Uk#sbv$uOf7h06 ztsd%lAyP7sMotloBegBFu!!1$2teiL_gt!K8b!b(PmDHh@HDL2^Gum1I_p5Q{VfKY z=Ksy0#l;VWat*NmO%}Q|S|~aJ-{M3fItSp=8+~teS^w>_0q?GD*>t`$98U+9b*BaB zHN^EM!$TSJm4aHxLyfgIAVX|psuz*^ z@HY_KW~wC*o+|0)jui?QP};YznA@YM(;_vF&pc49(|ou*R2C)vVnAebU_I50-(&Of zg~Ii~{?v%Y{rrOF<@MHEHeX-gUHFggkBUYj;^rV17DW|~_r5|p>YfYst-CYrq$9}~ zI8=l>3s|{93=Pig^oWAoO{4%3!bsVU?;(hW@_Qw%Pe&F<6Np0kRt1hKXxWE^q0sZVev8R8)dk z5g+pUh7XbOE%t@pO3(}$@c`H?z3UKKf=nUHE-^(2k_ z7;9~ZI*Ga`rmY=@@mAkrxgp>Ct+*FR9E|y1hRK_;z9*=6>qM%8@HRqnwlG;TV27qT+RaZW`Eid!M%Q-^nx7Y7#+<3vqinNK?b@QbA zySuYTLMuudELKlKi=V=D>)HGSTi4ZRL#$uBz30D`cNr8>ZK8ZRn97}{`_c|lChG2T zFIe&@MpmN)wchZ~=M5FFMfT(qO3;R^HM7mBgW{Q3{{tkj|7GHfWOd1Vf5S$oFmy0L zr*kHDYW+@oBiNnzZQo=0$42skSIh*XC1-%{(a>*TwaQ;^|2oUKz<4H~j5%6tUB~zl zD+G5_dXX8bS(>6vTEr0WjiLeVD{%=v?!FVKu_`}TB-?@MM3{pn2bn}O;z4COvVt#tRcUShnD_n+tcjQs)bG ze@JXNkIWhaQFGPBVj`#i4Bg3MnW3#woW(OY)unnQvLSBGaPHtyVC(AD?9FC}B3wp< z-mPT$4yGCFqTMNFNg;h^F;NN^e@P3%8`uN2HmC=@M9VBy-r=(go4>U5zIT<@ z;y2vV+ia8;KdYInBzyh#^shu$=cyvYiw1Yb)`O#RWe=$-zS-Dml^x+BCt1V~Xw%+5 z9mlo=ci~j}M`(~D+$*AntWkfNueV_-vrItwI`9ph+jCG=*lGjp_D`%E-l(8l%6R zYYr0qn5y*LandP+rtDU1mb!!3+`eK8B1Y=jWnzM2C*wAQ_nORn&XVGC{UlEy>pMoL z3xM9|ZM}@)(yr9#{__?1yz4&B?_cQ(R`suGQ=6=gJf)~joCy+L49zB>ecyloUwU$X zxM5m}8seEyKQ^O!PipuCeJ(D$0ZgXc!`}0?#Aj4di06>z!2yN1HYbjtZyQ?EAo4Sg zbC9S4<2+*L=7*$ptMflvuMiqzHzOKTHX952&Zm^A$l!GEj34Q!om4H04l-hr>k)tG z8cRGRqHjDAN93g|RsycIxN3)k`*iV}K3aHZLys`r8qA9S-4_4M^-@-rUVh$>HOA*z zX^}ZE)}P!K!&Yi+h~cJ_@tL|3>7~4|t(KLf{ASyLiQS#UVfUol zXueOZ&f{eB3P3=om7cJ+tdz{tGI(#w=??x?G*#`HJUhkM5fseqMoJ$dnn2LGFXM9q z`#V`3?)ZA=Pgf%s?Vf2sFol05GyFm6t9-J}Q;?@@7qa`77o_GjAI_=2g{A+&KJ>aw z8oWvm*AbxI&i~92KyB)?;m)Or{eYJ0do<3sOZ?3t0`=M?z~kWNVn+S~wgR!WaT3og zsvd!T3QGO7rQ?*|Sf%nC%a~E;6W>mtavb7iaG5;f6vCzkQtfbDzdBm{ir9gs>(*yc zrZyXF*be`IrS-(7aR}b+Tm~Cq z>PViBYJJsrLq~>+=A217XE1+Z2N;y5rVj+gDSaT~dJc12X)4c$)~f^$a?a9rbdOT= z96@i2DR+FdLl-X>vu{0(7J~m7@tZ#h%~13ou&WjzZkcNPyFEF5fCveD3{try1^7O& zt@xGsDG8VO{4RZ^$NK}osRtT*Vtu`duqHGq3V%9uwX~jIY=Tlx4-_(;PgxOo)vN{+ zBsnPrPidj^qi2Gzk(?9{99sylG4*ssSMc+``Q<2UPKK|C!BhfW#H5}h+wa^F7I2Ff znHHT9y09i=sz_&Wk|+#w7jY+`9l5K%)TpzxVmbdIUgfJ9Lo-Yc8gv;odOtdOz0a}5 z>fY3*PqkQ!;lQMXYmAJN>tG#BCh)opR(Sb{-5=$)r#a?3UxXeIS7TbX4cT2p z{!Ow>&Td;O-jMx0F4L=(xJFB)=BF{qOFX09l5{<<0FvQ z%@Rl9y0?c$gO|%Qh5Y=N%fEq9^!1Du*2na$XK~4CVQL%$vt>DJ+S+>)duikpXlY&@ zOtcKLYk!^T$nX`>6aa+w8lO1iwxlg?jyLEhcO6($cBo-G+uoX>u)ber5R|PG;i>%} z-I6{EL$ry0l_iE}7VEQ~Ao5l&;}57Kci5j2+|hZjYV6VFn_2PK!)$V)?I$z1K>3WZ zXR!T8J+kA$drzdX>-J4uN?IB`R+Hxmn{NN55S{sEIK=C21K7?|j>Nph9+9itZI%w0 zv=bB_B{j|veNGB1ZNbyFN%Ekghl$OpW?eddfIg1%Y~l%)6nOGHSyceb6BOAd&yqUe z!wK}yo)oY95N~r6ZK3jP^HGC@w$_$|?OyZeWpGvX;w+mp=1=MP z+d+_8)_6L3>p1iNcjxWgw<;T$cKh$(0O9SL(?DW5Ad7`D7JXe*t=i?W+qTbb$Eq5e z={;c2(LyT4iE=FHi+F}hLLPr6UuO&b)pJQfC)j;pnbwB*P09W9;iG^zJL|`{49O>YCao_Ji1E2a{#qg6%M=ADR>7a)oj?2d zp&xLM6?PD|b~Pp5UC)lN>^}>U+tG%qpJSABqznp4We#91_hS#2dk8`Ud+Jq-H|Q2; zwcpPB+pq_vyb*%?UhF=2xujU8zt}bUsdY}?6h)C8$i*@6btSrnznT08vKxqNPci!H z_B!_F+LERoEv_*Jo4J6lh${2W73Wn-D*%lOM|D)SLgxu@=Hu94W8_w7vhbUE3pUuK zAatw#Sy)c4!eZ@jrb@`Npp#9^lioS44}qJ)UgDK|^|(7jAs=k22^o;Fz21}bmm4DL z{rsSK4Eqelqu%Nvg5tKyc$#T_!f&HP%BB(hql~35nIaAXYuD$ZSC(z|;Y}g{{f5XV zE;;`YS-LI>M?$EPU56zls$PfLADqHtQufL>pL<_asQm}mrOS~5G9kBOLJao{`_iuC z%~-f=Bc#K#MTvXI4twksZJ#zYMJEqj?Fp2g0b~c}u&QxunyJ%%NtN|$b>)4wdNZW=&y`MQUeK4trX!**}@DuNR;9a`(5yF)+PYl;H zo6JD)(1YHCaSQ9=_6z0{lAUwfpCk2BI|bG?3GtLIP0I5R%b9I=&g#0fZW^HmxYj@z zN$4CIzJrL}s@u9XE)ZRHLMwXl<0?vOeg-xrBXzSwA3zOp?ZNypDbTPh&d<)IYP~~N z=W{zBgDsv!G%Nd@(5Hm0$+O-vYczJh5ZPGjopYzJet}vIEjL?*WAv65yxzJ73z-}E z+TstGd0}WO&#a-!N%+0wU$;{iKZIG^?AuF|r2CzUa6W7^XKO(kkCjsPnd8$x>;$~U z@VL7@fWdjPn@0k*LWPv49#S;!Y!W>(GE26d<_L;g@Cy@Y&Rf@(qi_ZtXL_JjRoepF zbxwsE#GS#9YD>LSXrb2D2th-lEjcn)n1APUB9s*9TSArcu0=IYFk!s?Rd`v*g_`!} z1_mq$?*g8SB4poU53WT16dFx5Xfc=qwVp}f~2qU9~2s^&TV5C_7`~PHSbNWi&l?o zBbbq092kdI3?JP{n0S!kAQTQ*A5x~bpUl;6zg!XNc>9%<{_+SlUg_Y1pPRbtB#*vp z-%B;*Ti#*RU*9lUG96xct`dh9%t?U5K|MMwx4-4;(M}PD_lEtRy&b#*{M}omi{q_U z)F%BTP1j8xk+GLwt@`&qPVy!2^>c5rc_4F?Zs&fgbw$pZlf%iTi(Xf{mNmM1jgBhq zZ7KzRF+^&aXW18?y0pOR)nm)m4B!y-4HWk|v^nhb`wR`%dGCt4=Jz5%lGLz(N8qOd zlwn8d{75N$oX`3C(t;0AuYdmjw5)|T66pGJC1|2h$=RUj25L}dK+;~SrI_TGN`IvY zwZDeOx#dQ_uFvU~#j+K4q_4L+iTAGfWkS97(TXX;wp|=%s!y5o94)Mv=DH}d!}-L_ zk+oL->ZrfOkHh+psoALKwZyt5`N)95jEPO?M>n-!Ovuj(MGN3O3AjtYto7v(S3GT= z+CmQS9J6?kM?2$be~hpNnGP&J_Zco|G2GC$;+;gjFlo;GHEG`VD*}XFu*j{kdw?&l zDNxI)83X@b*k(x@p})f!QY^nGEK;ePcR0vyO4elaO_eI$_2U6lMQ7O`0n+Eo4r5mE z>_4D=67wVY09TrSrR)uS%S#0KTKhvW?o7Rl62Z^ z?3W4)uh2txUzfqTx;O72%|B;};BNqbyS$f`@j;Kbfe%xCzCuce^;0^TB+eG{LI0B0 zwOsPUc&I)ay=d>&)V15lW?SmV+0O~j@Ad@+1 zOflQ*iyFHa$Pp^{#sgk*Sn&`UOMmhaGfuyg%3&0OKYw{0e>HlX`O<~Q*GnO?B!_2qj(Cu^bUP~q%Qh#F|gxp(%LaaaUFw9nrlgu$$VK3GV|Da#nFz90^sIs_v zQ$kn)t|cqQ_r-_xj^-9(8|f|Ii;iFN&eDd3ZhG&77hX9~&OlO@U;o^bZV)Bz3ASbc z)L6dmq^-i&+2aDRIIbj*K^38aMjP3^58O@rl6w3xBqxxdYmxC{TIfd}R`MIb?xK^( z+`Q9w?%2F5=n=22qyx1HEV00A!m&5+>b}BGBc;ACEwK80t&QzPal^794oX6N<(R5>37BBoe@VahD$acm}Alm?VQ*WdXv$*B$5XJOQAj9w)mS z&Q~w0(nGH}w{go;)#nEuY}m@*JWVU_f`@PfBhm6+(~Khv#P~JuVXfx%pmb1NfcJ$8 zo6PMkr!%=U#rvdp-)F#Q!}w4@Il=RNjYzb*_g{)l3z;#OCV`6?ShK8OdWk=%FR4bD z-m76Rfg2`63FV>BpihjS0lHzpx&$6w7xi}iMU(dg+%kKl1bIc%mf}^#IyR?<^wYVh zx-VPO*koXV3i&I_<6bNw{pPW)_a~C(6%F-x4}#9tuieBOH)Q8I2n2%% z)XOWU?0m+{LJ)ZRewk2YqiHNHbRg8VF~r>#FX=W|^LV)02L!`{k0?QB=yNIo_4qO# z^2H6kc(1h61O5PyvB;8k{di0g4>y~-Rm+La8&#KXx}sh+JDQzSCr8)ucTV)n_UO8$*Ps9T)yFGE zgP%)hgsP->a=N+#dNz__pO@fs7qqu9pDWY?rN)#Avq?a>_k&$o80#E$ZGqnqTcAv( zs#^7sZ>RY6MlMp6-F?C$#?}1BAESnRTcJ8__3-NMdD}PVdSI3)DKTMdXZh)D*|NP3 zi73TjD6f^QMjqk_O^Y(PyS27KO+*{U&OZ%fC;S7Bu+pi$*ZP*IqB#BWW5~aSgIRx) zB5)?jKwbyfGKJQdMq%G_{+`>mo8mmsQ?<|KTlywTR?oR-JyOqU-uqoIN6=iK_%oBu zv5k0|6vlhJW}NK$ifx*e8i;3v10Om={#_;h2>6%x$-$3V)E%GvHrX#1o;WNP~u}rs2dojkOjWOer<%&#g6zVciUN8P<*`vn3Glb_rVx&u5CMPhO690 zyJfI3GU<5YbX98Lj1up(%%*DObV^CsY*&D0>2ysK>q!ax_{U@^U|9?> zp7%^P|3ao|{@Fj=9BywV_Hbdd2B8HJ7%FG!`ao*pNZb3JrmY z4MDyRYJ2TU(S*4a4Bs5cKRIWD^AW0R>W%J~=rAcl20t}EJ7IFr0f*~8a0HoTvtDsK z$?me0&W0JIg_h}Y=_78rUpgaVWr6U<@J``uBUqUS>$73TdQP?Nu2kMQV4gVm{R_qm zwOpIU9ltXLEBz_);&$T+Pi4Y5?6ARi@;u1T`4EZ!sHkm_2# zDi?lwP#k9eEonU0mIK3nkdqb?z_XI@^P^~nT&3VaUgf^f`a3PO#vo_l0 z={b^(0)5}Ax|jH3qp|GA>o+xSpaH9Wp2jD*;~t=jJHcBSxsi~x0H4NAB#+M4TI86o zZ+5xMW>N}KAYx$f%>D&?AXdJvJV539rLwuZ(|K2#xKPOpQN1YrNbeNw?A~-{y9wq~ zXMKa;M3YJI{Rf85)8PV%&!w@GMZYOmv#@U4;$?6e}S!*_p`V;Y{>w9^>f`I4?X7lDfnMtX_Kgf9{mty+ z_c23JzcU2tsjFRT%dS^LwlYZEmUN5nbIW{t+qpOOXZns6R9^_>%tltJb`|0(0|ZJ) zG#?Ec-y5M{pAXnwx>U!TP&#_AXc^vg2S}0`sF4W~@0XhQeE@AMPwOCI6QlG64wUc^ zcjCxPI*)(c-JphBKuv?w=wXMNDHutd3Ew=iyj&LPRGfx6v7F&O@vZb2)4~pDD4seG z%%Vcdav07<5?jxjII_;l>~lp+xt&3Vcg z9vJcT`Hwko<#cXr$LE+45_Y7HG&y_6L#gI3^-Pv@@m*H|=O1O!IeWUzm_G}_ZlSsU z;6!Ly<-Y&Gy;qemy9P<^t?{WO+SkJ;pI3$dMLWy;9%o*#^A&_;d*S}G&8(Zu3diJ@ z30>GFYM7PU9?qY~JAIUh~w52GjKO&2XG)vbpb zbHT>Ci~s%rnrxQ%@sP#fIJZx&$be@mb#-%`@H#m2&cWneY!B5E1yoVKlEumoJ)mY< z>W(>>vDx2+6YamP^|Sh`Rt*{?NBNoy>r!#Q!qm2PG|`PwF;xb`<7-G23I|Xv#qAuK zYhXp-o9B)o5RR*BZ@b5MeB4tJOvE-`h=j}Wp9H#JZ(jOCILipI|6`~&%vgwP2?#Uc z3Vq!*=Ht;M*2b_+UTj&V9S8np^+XC^FuyyHYMRXATGnyg7T-v%RoJu8=hCO-nN`us zmK$!MUY=u6d4Jby40xu4xO1^VFV3ig%+6)c1}j>S-&e}kOxPJ@D6Pxp4r!9F0bs{!mlM<74?*LG&j%B<1WFC^-*+ac-O-fH`@h4?TX zTb)P>QTmw7Mm`W_Dv#kJAZ>K*Ialw*^Md2k-u9sc2vr@Q_i!qJ>#!(#&hF>kFc`Hf z+Y(N6n6;*Hl4fuUUP*pLhIiy5As_|%#iq1$|MN^9l^d#eh1S*CzOo49vkOZPyxgM+ zWdBH}<>F3K0n)1;Z-)-eYA20OVh$HTE+qEGfG zVFRHFdN)(}C`wnemBKkMNa_!0#{=ASd0xOUgxoTtUIM^EmCh5vVUls}?0ttMmWJ znm3pVy|^gtAs0H+N)hK{f|ThA1*doI1x%q5U!H6dw2zh9;Pjb23N50vz>O`Dmc8`< zzTd|yewkb~ z!P{uHV3w35EGgvD4=X-h+SNuQYs@XtWIz2Zt>!@Z&Er37z6In&TMJu5n}7E&HI{q; z3_oH71fh8$iZ6*^Vxn*n);AtLKpYMH)UtLiA0)lzu(ljpFR?m9)R#W+SqX0Rat8zx zX?g|t0gHQpH&*fR*^@B5T6!p8zex7(hrKxhnQA3s!;ZO~-Lr*zE_vhn`h&1nIHyXH z!Tr=LiQvAQ*WMqOtbMo>8*NmY*;3N*ng4$1neRLng_kzJl*!vpW^pTIrF5E|zt0mi z_N#vxu77U7aJz#}&mnV`e4xOxPk5%TZk4ZXG32-bDF8HG)_c-lB~n$%INn3Nd92${ zB9dP6ZH77U38F#rw5a)E4pFm=xx_-p%_$r>07`a~c}mPg(__F@vfhi%=FyU8d>e94 zlf5_ZZ!VikAE7{=H{J9OTxhQ(aR(xJXVydG$g>~UMTV(}BD)0I{SpzV)k#k+v|QO4 z-vVF{l4~l)@&CjS`7C=1gYF1VxKT2A=%2Vo*@UzN66w!!*7+g=zflgFg$*ioz89 ztJag86oJ!QXF6G86w4=#7@MEtl`}dmY97mS-ZM@@FE|ph!s6vYrvC}P5E`+(969}P zJ3!0^=_{}rYQ#;lS0vOw)gI&o>M}!SN*zDjtk>Mft?7dP6@+w*zi!C8Qk6D2EZD-h zQPIeF*ksS=UAStrfU^i0@>b7z@AryR4D|ID+xXY;BPdZ$edf!=y(j+>_5Z|a71NjcMPcoeI5fWBO1f!QvxrZD$9w5qPNpN{zo_~jw!jCVBAw* z_B_u%DN|83^v?jB;FjhQ6hmX)E6WWPhvKd||Cs~!7Y^TU)0F2?n1_FYjg{2G^r43L zHqPM2H{?1a9-}^-^Kk}*m2=bt#_+xK%Pmx@j#KaJ5M?hhu4bfYWL7VLS7 zn2^w_>)Z}$Hac*%D}~axr@q@CZ%;oFBou}YkUu=W!b-DZBg_ha+`o_y`7)8<*&+qy z7d)f#%`>|C<#wQ1K{D&OYSK{sV;K1tmQ~sm7f6?xb0{2A{{kd^+~bV-xPDae(ts48 zUBAws@KW5zSNuOsz|sui>H`%AoPTfod_X#x1TEG~gnGs6@yE_duZ_-0{2>zJv+uHW z?&UWUzQ0#Wr^q!l0*{@4uQ}?1YLW|nA@AzsW7cYW#b!VqkJi&IKa1LGEO0LI6n0@t z{~Hq$wH*;ry#^F79!9JaQ2O&T!8Ed{o)1&6zTz$RNrGoY05NCX2mV;3g*)04MPD?L zplm+Eqg~b)cx#~EC+fO7Wv%~<(2Ib|qfn&o76V0CQJ0_n8Q=7HrSUcu>6vSG7~2>4 z^QV1VPug!8)NpM*dGYBVw`bn1Ej30p7cyt$#`;+3Hjq5>Vm>GOQC(Mj+20PmQ?*;i z)zHDADorEMb-R%5diA5HT+VfU@iz40^K)LmU-LB`tY+4bDsPVKs9awDQT1Yemh1JS z2mdr`wkvPuoKFv2sPbO$c&n>&nG!Wn6q|ACU-i!!0qr_DSIwUz`G5RW?1j|C{(9Z3 zCq57(YAOIVKWCD3%H(o26dpa;X(mVD92PF=SfYcF2y~Ww1BG5}tR^@c#_!aXfI0Sx zf|Ofy)l2smIGW4wMWU357`1{>|K^UwBs1;$MCao(&nla|cnw1DFMKZ_g#V7-Bq1@ze{WC=RzY^oy-q?qFe!~Lv1gJde&_+g(cgad=0qYopn@b;7lMkf3QV+(ucJvb3cZZOdyayU%k5b)~*fB2E4aQ$UznU8aYZxAvtF* z{E-BsD;_#f-7G@tdz(W$9)yTQE%s=I% z3(zdyxOm9>zkeH1mEmTe^fStdV@5Rk*Wb3BV>3J_Gf;xsTE2}BU1B1fI(vUbIdRQg zbH(8Pwx}HQWdm@(Uf?Bfw@>s|_+TEPUjM!F@Vq>2@dYv1Pmn+J>Y*xOd329zG!~Of z{z^csa)LsKV_bK>W*q4egF;t7AMTb500u_83>T`S&rzQTsH|?)-?fc=oVM2(u^Mfu zC1Mb!zDnt37?aU^A_jq`j3dLtSHyZ59q>DJT>+?Yh#Yi4x|JU`IMPFrKJ-mNI~3dp zp+>w7E5_?8rVgLYIKP$0mzexyy6`+WxUKYdDYF)z}9;=G#Yfwmm^lJY)D$*FR1Kl zevB-l!6=C~BqZ>cz~`7xyu3Ec+k9hpQ%2&Wx>uppq1pcRdVcVU>^uoIQMasm^$3(B@2YH|s2=7=~az=zx zKTHvOW^C55PssQCeb+|UIi;3u#QycffdZ;_ck{yNug#rj-pf(0vW<~%)`zB4C@;zn zqaa5M?xtBuy3ZH_H_l#*1HIWUYy-VX7e+{+GWd}|MTG-kpm~QZ7T*Garj6>%86BT0-9x)iQJ1>W8AG%6+1Ue_ShnX z4w}0rF~>4IQEczyBmRZiybvcfQDWF|wDxc!Q&}thmbLQHtMS#oxbCzc6ZP`4s%+rVBaK9SgvZi`_aje_?U4| zYUaCmo#@D0ob*$M{9~4&b%K*n>UwgvCvJ?u@yBM-$pu$+8q;=dqFF5k$JBB#aKnub z35>1oz}FfdAKvzHxq|pst@?>B@-2&(v4p*A95B06fZ?16g2mbR*6;QQ-Vtdbhh4V~ zqz4J$E}t1#54uQ=;c0*vdh!&`^{VDK#kiDB8_)6djX;mKkj2z) zii^N2NaKll_@?qYN8JNQLYMctb0EhHLysIin>0_~BCK12-`V0^**0o7_crl=<3?Tq z#oyeNuntgSmSQ5wskHX2W5N%oxaEUjFDv`^gr^iFJ5Owd6 zornC0n{IvdERt5jyz96~TSMo?lHYzomvJVeZaD`#Xe7Tz<+RLa|7VUp8FZQ)||!?jCB_OkhhRvs%5g=bnUVo25(b^nObbEXewd zpLRRdFt&zo-tXDL^@aIi>S}C{4sAmqoUkpTUTYX!)3u-+`YdxFI5S=rG=zK0?xjcp zUUUYYj8;0{aSM4uypHlGO00(wd8_T^mnP7y!=BZ}=Cf>bjYL(NoBR+fzgle|yK3=K zDgEX_${SM~5%L~EIEZU*J!9-9uGhryURTV8+o@SAt&|6*RAJR}v9dqa2Qqudiy zig$ATD))`3M>(whV-_DtnE;V-ke)t${6nC9@-h<; zfi0p$glr54VXq3d+pIjy`jHKBPJj(3n3$<~&G6`P8}@IHVRciclK1Sn2p}L0WfA)= zoZM(%e*?uSnH|K8O5)nmPy9whXafqTx7fZTPna}+TIa?d8<&Dv4H#Us4PjUuY2w4= zS5aol4k3{y1LJME0`#}2EP;*YkbcnaYD zJ}Ok6cZ=sN@~|ixqQvWapcIwZL@0=l->t5qt6uc zu5;AYbktlPj6Y*g_}5b8(Z*1+FWkK?Vad=%GD4NAKg{Z0h?hA%u6?N^JCa(ha;sN+ zL?{9iSp60Rj7GKrQg8FwWnpk8-@- z$MFlcNU=@|S8qY@@Qf^oSiNQW#WvwJa%YBPIGX+s;qrk5g^UNwg5PUo(4!scMT#q% zc-H==^Bg&r9BxlJb1_BgkJ{BxF9)Ga- z3R(6#0t&coez<)S0mKO;RQ(%ZytyX%fSt73 z+A8`#^vzvtI$a;d*%ZpO@B8hp6wl#U`6?u&Me~(CHfnV;!fv?gPhzw9LGprz89Hyb z6uX1`u$D~(JdaQ~kiX1V$u0X@c5O;7IIJl?IoWk!&{QZ9J8mgzblPku7)Lz|wX&e$ zE<%M`x6d}ZddQNbHybTjjn|b|-==-n?zj z!2as@_?L0yR>ZYsz7HNSsNMLa6i+BgT4!4=;|K)ca%vFXykm3;dTt=u@LgHULa6S} zU9VFlq9P#{%KAT&zC0f4@B2R_i6~2UQ-qLIvNIDxE1@irDc({kOR~?*i;$gcsVrkD zl4S_lXOJzsWM9TU)|s)+KJ%N;@B7EhW9IRAJ??VOecgM`JuX+KHTGq|oEFmw3TIJPP+v*!43U`*PpLLV`cB3rKm^(c>aHII4 zGwxbT%$pO(3@E}yXIU&s$nBoiq7>P@_H;7(Op)9h;1N8lfXAVTtJdiS4!Am?_m}mJ zeTuo~N+XgyPtdP-n_AD2CA??6Ld(fUI(ly;Qn%rX#OB+Kqvnc-kyAsX#&xHCwW?5A zk@VCw`gS67Y1JI`R-dwBc*|WLk_2Q&G^L8T#$S5vb=ZA6(ziP?H(vO(lI~>xZvWx3 zYIYm|Yg8re%OMUgzD~R6PZml$G#P*VE69?}h#RFaq{ z%r)bm<#;)7?J(X8I*a`nn=P?ZmLLg`ZoCKcvvH}d&@do%p>f^0&(oF7z~~pG zynlMv2NEsIPt933Kxi!B-E@?|OSkcsyI0l&PJm!MTzRuE4r4r}>oHuIqTL+cot)?_ z-hxLzEYsr(kSSpKP1ixl>7-A6$ClC#m4y&qZgUsk9S!x!TRUUnXYc^LH)R)Z9}SGk z+j787+++-dH=jh!p>_ttKxOl$^hSc#L3t^CS8u_uE?=AZVR7WdtY@z2 zZCyP2e#dn%q1n+IbIr((ZhzYAdsHuA+E)K2AXPr)_`Cf(vYO88N;re8e|*scB(-Cg zAzMDH)Q3WzJZ{XGz~tg4RqMsS`6IJ!dA5PymEZPyaZN z#8;GHfeS~9_6Jz(a=^_LXN2su_)7D@oN9P<uRCDk4 zKilcEURB|`xXYoI8HiqhKzHxK>AqLHOY9|_=gTEAN+O8!Olp{8m zGv#nt^_n#GAVScKo9AWrpQ$pk$vo=eqLY`UPx)*d>#IS%Fp*a2zj;;Z+<>1LP5szY zu|E69@JEJw5My1Z!ODtud$Tya<&$krgIZrfaTlJ~xlz;K{J9gcUcf((8TIxQt;4zD z*-%HQ1E})yVz60BCMv0NHVk@h=W}O|$_;c`Vef~-b!KG9Sx~K%Qb%>wsOvAFR>>QN z)MjJ)>TM-}h$ZT;DojhF`n!|wj1^s(mV#g(l zV*k73)ddg3`P9-X0Qf&U56q=sAfl!60ioqu_V=aVR`Zbm$cXL)1|622Hh##%47m*- zkf{VOaIw+w%StRMaPV28x-y~hzh#o)adK@M>Dx(+B)P|kXt zQx7w+kK!C8_^h`w$_#4;v{wbVm_iQhd+_KEIN}ZDY%rkXjfd;M_g+Y0a^47FWX6M; zvdQw-aXwKazuw!x6DN{xg)9o3LiolcsqQZxe_Ib0o*f*#h&Yd^vsrWkI9FzVTeVPf zLe9?IWLiQ05-JPA92@GxtF}2%+7;ZB(aOB|_myz#t!3`>dmo}HnG$Vct%DjRE3xv* z=M#r_{{v*FTFzWZs$3GeUVeZY{C%@M{tds9oRji8el`3gOj@LHsd<(xR?ax`1tPb4 zlPS!DNEU+94Ei!|mCv8=MRL%^`kd!H5k@3EbYYoCq(h5Wahm!Tx%xHcdd;1|V`y^+ z%c7@-n$ALh&qEDEP2!1&_T$uD< zJS#7u6fse1G)nvF@w};+^panyWjf`9J?}TC9Bzb|HohZC(mp6T^*Z)ZBT3jr;b@09YpD8-(|f8-}MGp>wpHl!OK~@AN4V%gLn_0t->9e)nM_frmqQ^ zM>BQ;b;N+znQxW{=;7A{L>Uj$rqx8k@sl6kNBVr9<{ey{+L1M5j)*opw{t1_m`@0$ z7@OR@^mlm&mb@?djir9QD~@&fucbm$8cNm(?QUX#Z5GnMfx*ct=$cZ0ztxOT*PYuJ7YCnA8(Hs&4a^K2*)0TgH3n~K$Csp?vM&W!Rdq(H5=TuPDn_$72 z03r9@Z-U3euC)%vVUEl&_%p5@g<8A;Vy-TfTlWalhZpOdZjIZ}P9F7txq{ntK8n8? zQ&Qf@Hw%||k)a@sQTj2SXz~oZaE{-g+2uv9hoSV|k6uA%Gv*mnuo%tHRt;0WrOHPA zEXM;YS+c>RZv(J1I~cUKGngD zle)TE$y&`hxh1s*e>D>YCQd25qBw2oo$Omh*mC&9V2%_`U_Z0IR4>79?y6ym+MBwX z#s7G^$7D=VzmR#m%KlPpW4s@~a&l`wc;fmMI{Wfcdds%;Y7#u0p3p-UMU4E1fBBT9 zFzvhD$1+2B%^1~N2pJZ1$8nuk2j&!ooJ2VbDymtG3^Hg?JKCv8?sV<2pP%<1;Sxu& zk-cRwk7<5iPq5al7f6Df-j2$OPA;qo6A?5VGWdkco6c-IH^KWp;{4T!>BFyJ?%JRZ z!4_RmLnxAPPP!JNa|~JYFl&jBr5!fCN)sqA*%AA_T9BVt0%{wGns^QaLM?3XS)OaV zYFt`~on9va!-UR|6SJ?hAHZV&N~Hza%?KSdSXDxfvy#C}vdPC8v-N_%rzFWd+Wy$3 z_fPlKtYS8JdcO)fijzZ|2VYW8pZ?`@93{7HcJ&5^*;WOr=F7>j-7vTP?;I?aNG+G~ zx0|&0+r%H0<5I%FxcZa%{|w^m{^fMoL!j_rzwu|(B!7#=2BgS zSkLD{0^vQ;NJuaj3aR}7@Ns3NA= zGgBTZSi6ffw~IuO3U$K$i8o#oQx5;eOU|d!qtbCnTySAi!E=p!Cz_GJ`&*Kh1ywe0 z)u}5CAk+gLclK`lozp|x0*et-lK4R#jyjS=ImjGvpeEsPeoCBO1UuOZY_B{9#~Tpo zB4&`d^-l2Y=km?s9p&!Y%!@$fF4!R-`FqRHr^->^QZnb*%+75VHr&7AI)TN;tkffP z&+@AdZ0D<{`FgUm;WB;(-#rIeP}V#=m#@~+=>JLgFKg8KW7E>PYZ?>5sb`(|O3WK~ z^risq^6>&4zQ6I0C*Zm!v&nM}BN@Z_NcWZK}CTwNcrr3x$HMalpP4^Am>nu*A z$=)D!GCnQ^Suk)n5e7>3&1G8iX?qA0t&0Vn2a3{I?5WL}qov+I5x!wIhsv+R<7*MV z9%W0}!HlUFO{#UCC&j+-NJBC{XeEx1jYn9db+e(elKiubzA3q zt*a**E%5C%JZH*kDpN1acQ9ST&DkPyjXu{d^1veGOShj2<_H_;^Xp6u_~G9K8I6>&QmioB!SNmp$03- zt`m`e=d%n&CC&9Bk?q7gs-> zHm|hAsKpg$e zA^$vWEMSLgRd<=^;A%?72Uz^kE{k~VleO*ZLr8fCBg+p8(#&v75XGl*2=~~w%GhOy>i_MaqOIS8I?{Xmfsff&@h)AR>yGh%%Uw`e+`ZFWH zmkxx1K5D?5#+#0Bzwq<`av$$CJjTCSj*Iw@75kuvCnIE>XIxe*W`P~+y(s}riaFgu z$~Lk4K=0pq1)uB88d{6s~BC_j* zDTS(gG~>HZtBh?Zfam!P`4|n>KX(2Y#^MFf3Zk(m1Ayt2Jy)Ca=& ztH&GH#H{pRm(+OdNX=`+GEB+pr0G?&D9D`<3h*6^#w|AXNgpQkxsRJn-KE{Ml&^19 zGskbDqM(u@j7Q|SZ>Ku^C20`TGiMo>$GQYfUIBo*X``}5({S}6D91th_!;F-y3zj) z+;EPKsr`U67Uy2@UTN3h_lm_?PPS|#>vS#lEobP(7gQ4y#&!DM`Pd&UO&m>f4{hg< zLAhXdSZ|7q@O)m8gmU!UdB%#8hEt@s19$D+Md{}DDakrDUF_+^z-)~Pz&_gTjk3@= zMCcN{ zbw2B}k2odYt|u$$oFBy)=e!X#UGBCW__5f4@9o>sW}$m=v<#)J0Fc9!JLgAXEH8VP zd2R8^2J1;nkY)O2V2&9a`^{t`v+ z$y^+F3;A=QdRoA5LE+h5MPjgN08ixf@XHQARiOd(^2{{o;Sr|mFEHuDou^5so)~U+ zJCm7@x;yl7sTJ`8*L)4-G1~0(x`aDhT){(iKEv=ZQfESH@bTdwSTskeFxM}@q00lB zv>gRCYXH>nCYGn*Uv>N(@{>f0E}8G=`fRvZ&DX;}b`__-;a<2{Jg)v6_MDv!WCp(W z%2V$PcxElxQa(x!%kyd`QNi@t#WQu46PJ9@#fVo6@*g12VNF*T7>i4{m_A>b%$mjF z$VARW78^akzVMu*R>geE1JTVXrF?_pMp|T-NxsZuu!Lytt>> zRi@jL%S$KK`9s&bN}Y@={@_$|`7X{bhKn>1APX}7JdYdBC|S zw8Tz*jM$6Qc&^EX6LY^mwbQvIhKA^d2CWfmEN~dZ@D+M?C``pUgS?uW<^$yr+f0c8~hbqDMV3I`W8;n#HNC}o8 z+dp_-wo6dd7G=A4>jf%}UAdI%wLIS-iFxeN8PVdz@SdZRpJZ0(V0j14(SW!o+VQ>e zk-SZJL!MiizYy<*$v~@=lJ%5e4D($YuubhU-6=btUE5YY*&qTf+(YmM$g`Y(!o1Ja z<4?`j;QGRv^o*r@)?Da|Vo}xuy|VN-sqe&mT>pAZ>K1b@n8n&T$Wd8kf$1@B{{~8P z4i+Dpsm*&W?L{S`9>@O&7RuuFTYPByQ69@uWt-8#weLIEfeX$AF{>~ID$|^N{*m@4 z$eiErRUjhVfeRY(8KVbjN{()qeHscqE#-AfLjM#r*U5 z?wh0fJU$B*6t6H8;?vW`a2dJxIKIcXHpQ#>4nOhTDsQ^Gyy1{L7&lQvUV*-%+gIT1 zb?OPNQ1hkhfP-Bmyl^(q>U=*8s}RgZ{DG-?eo?9N3d*r}flmud_c{i%yWFuH#{W#T8_d!Z4 zG{+b~L*J+k;i~VlsMa8(5}<@2zuOsgShafR-ggy9J){ollq4h+g}gAR4F0-+!AFP| zJTJlA-x|rI-LkxYXmrEG=9PkU{VhpZ#wy3(k~Ca)m^r=SJ#yFNpG8klu}zqH^mXar zyVJIh0suMZuT1MLkNGEUAT*X!D&+WJ+Rjx_nVMiX+$o=h?EIF#$MpF^iUpCUE3gXf zfFlr>x^$Lwo`||YRh^97Ca20$T7o4ZTWu@66WlagUtRKNs?MYrX1vQoa>wDX6C(BS z9gf(W*h6kHyx)o14-yZO#Snc@E5{f8bMe2Fe^Cl+yrV5?I5Sv20!TWQa{I90AhihiSOH*Uk(ocG~eA7MP(Qz?^~e40B+1h zD{_bX{BKP9BjjOWQLH-9Dra7u&8wV=D#~4&a zkVlN#IX2wfboWUDGsF@Jfe*P;y-SNwsl87-NMRV~VmrwLA$i04P&@0xUg!s}&@SLQ zz13m~t4U9Rw5#7zWL1A5e2_*zn1Zcqay(PxbtFQ`S7rGY5?u(|y#{vw0?zcQS5>I7f0r70A=m84 zrZE}s$Wo72{XO6JW*t(L5YJuS*rsR+rHbR#wlsq117pmQ(ThEnBm2lNAF^72#%y?U zmc#CEuN{WzH^|R?$VVT_GNxs=cs`;u+w*B1IiLZN+}Rp;EdwbBY=+WQe;-W7w+VYG zNVf?>mFqJ6oJ`N3~j z02j@JIGC%Fz-D`43(jLf0-C<0&JR;)-()puIlE*o@u24pCr`wPkr+=_OrU}Kl=-YfpjvY>%z7%=Zsr8}n1Y3L&A8Co;8TK}0KD`dRE=kfBwrCy)tS-70i)NwdM|89WW**?c^DpQO zz6icx*$WL^L^`bP$QX^IQ8HDMCyi0Gme@j@yK_$m8&b@R3xFEYqgp7lc4u)btmq_j zX4ft+A)x%uMyvkl25zs0a(Yq%LiD|?OiWEHTh-k&$(g2{CdyNAxM+0x*FoDgZX{g+ z1O#^!(TSH1)~(n8Ai-`%+2aiec2^mKvq7{f0e_T$jv~auV~>#)m|Sq`S8Yv!?0L5R z0Nic6x2z+t81@t0Nc|TOLG7mEZIQAEd0p_eG0%g|jJ-TDSdTho8AV=ZvvrI>8+n$2 z#&I0*6D)6FIp!{iq*O&&0^}hz0J+O{blYTWrX9;sHv$GdCYFBPlB!KM+^h|GHAr3Q z_E(yD#jS1n`ytHxCj;TcVw8bs@$N`Ed-UHxG$Qu&nzj0bsyJ|KOEexMa=2Sea0VY7 zZx`iI$&md*@LKG{{DonfD2FE4tT&I34$I2O{PhQ zFCa+z*f4nW;P~4=8A$@2P~)znOX@qWu#J%T{|SPPVfz#1yi*L-0aiz#S3r~=CCo}H zM4NN=z@7bczAJlTi{c=POMDXS%2*VZI^^oQnSmtcxp$4>)G3v%S^-f#VL=<$QatSqE1sV$^JHd7(ks5yGq9JktWI85zqjjvGS9t(Hqd1+&b#bc zok)dm=uiHyd!h)47Aa^5?qJ(Q#5^4PO<_OJep%QGV`ysrug#O4P`MGZloo% zRM3!MgJ7fna%_>9h(aE=DAy0BXLps&dlW{(cQS6WmG-A|69a&qfhJM-ZU%fe>KVCo zTz*Ian)5$hK4Xt~MFM>AdZ!pAXt-)(Ngk?FV>d0>46NB8CY6Bag@ZKOkSln<{VphI zLJ63Qa^6?QY?%o5{}>dMt9rM?-dop&Hz;8V~8I+t%saNO>^Y2Az@>Ajcq`;60iZhX| z?Mz$&w!Z{2w+N=FA?fu&;9dOjx5e0gzF$mpy?13S+bB!8K5S#tM4d9E%9c5udJsn) zTH1r}`ylDM><#4quR-AR|4?!I@YO~^!?|@0XZTwE0F|CQBoPmaIP(uQp3L1!4y!pU z4!J;?|Bt2sBfGVkV-Efx_x?a{lH-x5*Z!8L9Pbo#;S1jhpD{*KFYU7>+`MQa7(j_9 zT|!duCbh7h!T(zk32gP6zQu$n3&pXaB2n^xW%>|6GAdHo=k6)XyFIRPVN&bPGZV+( zI(X$LvGWYkMcDzB!Nl-j)Pmy|2&U#JB>v%m@NClFjoIL=3Kw<6q?ImVugumnNEz`d zH%r()#+S2p1NSb!iv#ne7Ab?76CN+UUUxLked2|g52⩔ISb~+=3IM0P!-h0#V~V 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 RW?W$?4#08lk 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 = arg; break; - case 'a': + case 'P': arguments->password = arg; break; case 'o': @@ -115,8 +115,8 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { case 'q': arguments->mode = atoi(arg); break; - case 'c': - arguments->num_of_connections = atoi(arg); + case 'T': + arguments->num_of_threads = atoi(arg); break; case 'r': arguments->num_of_RPR = atoi(arg); @@ -176,7 +176,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { case 'x': arguments->insert_only = true; break; - case 'f': + case 'c': if (wordexp(arg, &full_path, 0) != 0) { fprintf(stderr, "Invalid path %s\n", arg); return -1; @@ -291,7 +291,7 @@ int main(int argc, char *argv[]) { }, 8, // len_of_binary 1, // num_of_CPR - 1, // num_of_connections + 1, // num_of_connections/thread 1, // num_of_RPR 1, // num_of_tables 50000, // num_of_DPT @@ -304,7 +304,7 @@ int main(int argc, char *argv[]) { // For demo use, change default values for some parameters; arguments.num_of_tables = 10000; arguments.num_of_CPR = 3; - arguments.num_of_connections = 10; + arguments.num_of_threads = 10; arguments.num_of_DPT = 100000; arguments.num_of_RPR = 1000; arguments.use_metric = true; @@ -331,7 +331,7 @@ int main(int argc, char *argv[]) { int len_of_binary = arguments.len_of_binary; int ncols_per_record = arguments.num_of_CPR; int ntables = arguments.num_of_tables; - int nconnections = arguments.num_of_connections; + int threads = arguments.num_of_threads; int nrecords_per_table = arguments.num_of_DPT; int nrecords_per_request = arguments.num_of_RPR; bool use_metric = arguments.use_metric; @@ -371,7 +371,7 @@ int main(int argc, char *argv[]) { printf("# Binary Length(If applicable): %d\n", (strcasestr(dataString, "BINARY") != NULL) ? len_of_binary : -1); printf("# Number of Columns per record: %d\n", ncols_per_record); - printf("# Number of Connections: %d\n", nconnections); + printf("# Number of Threads: %d\n", threads); printf("# Number of Tables: %d\n", ntables); printf("# Number of Data per Table: %d\n", nrecords_per_table); printf("# Records/Request: %d\n", nrecords_per_request); @@ -392,7 +392,7 @@ int main(int argc, char *argv[]) { fprintf(fp, "# Binary Length(If applicable): %d\n", (strcasestr(dataString, "BINARY") != NULL) ? len_of_binary : -1); fprintf(fp, "# Number of Columns per record: %d\n", ncols_per_record); - fprintf(fp, "# Number of Connections: %d\n", nconnections); + fprintf(fp, "# Number of Threads: %d\n", threads); fprintf(fp, "# Number of Tables: %d\n", ntables); fprintf(fp, "# Number of Data per Table: %d\n", nrecords_per_table); fprintf(fp, "# Records/Request: %d\n", nrecords_per_request); @@ -414,7 +414,7 @@ int main(int argc, char *argv[]) { sprintf(command, "drop database %s;", db_name); taos_query(taos, command); - sleep(3); + sprintf(command, "create database %s;", db_name); taos_query(taos, command); @@ -479,22 +479,22 @@ int main(int argc, char *argv[]) { taos_close(taos); } /* Wait for table to create */ - sleep(5); + /* Insert data */ double ts = getCurrentTime(); printf("Inserting data......\n"); - pthread_t *pids = malloc(nconnections * sizeof(pthread_t)); - info *infos = malloc(nconnections * sizeof(info)); + pthread_t *pids = malloc(threads * sizeof(pthread_t)); + info *infos = malloc(threads * sizeof(info)); - int a = ntables / nconnections; + int a = ntables / threads; if (a < 1) { - nconnections = ntables; + threads = ntables; a = 1; } - int b = ntables % nconnections; + int b = ntables % threads; int last = 0; - for (int i = 0; i < nconnections; i++) { + for (int i = 0; i < threads; i++) { info *t_info = infos + i; t_info->threadID = i; strcpy(t_info->db_name, db_name); @@ -520,15 +520,15 @@ int main(int argc, char *argv[]) { pthread_create(pids + i, NULL, asyncWrite, t_info); } } - for (int i = 0; i < nconnections; i++) { + for (int i = 0; i < threads; i++) { pthread_join(pids[i], NULL); } double t = getCurrentTime() - ts; if (query_mode == SYNC) { - printf("SYNC Insert with %d connections:\n", nconnections); + printf("SYNC Insert with %d connections:\n", threads); } else { - printf("ASYNC Insert with %d connections:\n", nconnections); + printf("ASYNC Insert with %d connections:\n", threads); } fprintf(fp, "|%10.d | %10.2f | %10.2f | %10.4f |\n\n", @@ -540,7 +540,7 @@ int main(int argc, char *argv[]) { t, ntables * nrecords_per_table, nrecords_per_request, ntables * nrecords_per_table / t); - for (int i = 0; i < nconnections; i++) { + for (int i = 0; i < threads; i++) { info *t_info = infos + i; taos_close(t_info->taos); sem_destroy(&(t_info->mutex_sem)); From 5bf9e7987140701cb1a3492424306a89de13f41e Mon Sep 17 00:00:00 2001 From: Steven Li Date: Tue, 26 May 2020 01:47:15 -0700 Subject: [PATCH 10/85] Switched to actual detection of states, discovered major metadata handling flaw, and is now blocked --- tests/pytest/crash_gen.py | 528 ++++++++++++++++++++++++++------------ 1 file changed, 360 insertions(+), 168 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index c060a5dae70..49c3c15a42a 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -14,6 +14,7 @@ from __future__ import annotations # For type hinting before definition, ref: https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-method-is-the-same-as-the-class-itsel import sys +import traceback # Require Python 3 if sys.version_info[0] < 3: raise Exception("Must be using Python 3") @@ -105,10 +106,11 @@ def _doTaskLoop(self) : while True: tc = self._tc # Thread Coordinator, the overall master tc.crossStepBarrier() # shared barrier first, INCLUDING the last one - logger.debug("Thread task loop exited barrier...") + # logger.debug("Thread task loop exited barrier...") self.crossStepGate() # then per-thread gate, after being tapped - logger.debug("Thread task loop exited step gate...") + # logger.debug("Thread task loop exited step gate...") if not self._tc.isRunning(): + logger.debug("Thread Coordinator not running any more, worker thread now stopping...") break task = tc.fetchTask() @@ -143,7 +145,7 @@ def tapStepGate(self): # give it a tap, release the thread waiting there self.verifyThreadAlive() self.verifyThreadMain() # only allowed for main thread - logger.debug("Tapping worker thread {}".format(self._tid)) + # logger.debug("Tapping worker thread {}".format(self._tid)) self._stepGate.set() # wake up! time.sleep(0) # let the released thread run a bit @@ -153,11 +155,11 @@ def execSql(self, sql): # not "execute", since we are out side the DB context else: return self._tc.getDbState().getDbConn().execute(sql) - def querySql(self, sql): # not "execute", since we are out side the DB context - if ( gConfig.per_thread_db_connection ): - return self._dbConn.query(sql) - else: - return self._tc.getDbState().getDbConn().query(sql) + # def querySql(self, sql): # not "execute", since we are out side the DB context + # if ( gConfig.per_thread_db_connection ): + # return self._dbConn.query(sql) + # else: + # return self._tc.getDbState().getDbConn().query(sql) class ThreadCoordinator: def __init__(self, pool, dbState): @@ -187,8 +189,9 @@ def run(self): # Coordinate all threads step by step self._curStep = -1 # not started yet maxSteps = gConfig.max_steps # type: ignore - startTime = time.time() - while(self._curStep < maxSteps-1): # maxStep==10, last curStep should be 9 + self._execStats.startExec() # start the stop watch + failed = False + while(self._curStep < maxSteps-1 and not failed): # maxStep==10, last curStep should be 9 print(".", end="", flush=True) logger.debug("Main thread going to sleep") @@ -197,7 +200,21 @@ def run(self): self._stepBarrier.reset() # Other worker threads should now be at the "gate" # At this point, all threads should be pass the overall "barrier" and before the per-thread "gate" - self._dbState.transition(self._executedTasks) # at end of step, transiton the DB state + try: + self._dbState.transition(self._executedTasks) # at end of step, transiton the DB state + except taos.error.ProgrammingError as err: + if ( err.msg == 'network unavailable' ): # broken DB connection + logger.info("DB connection broken, execution failed") + traceback.print_stack() + failed = True + self._te = None # Not running any more + self._execStats.registerFailure("Broken DB Connection") + # continue # don't do that, need to tap all threads at end, and maybe signal them to stop + else: + raise + finally: + pass + self.resetExecutedTasks() # clear the tasks after we are done # Get ready for next step @@ -206,25 +223,28 @@ def run(self): logger.debug("\r\n--> Step {} starts with main thread waking up".format(self._curStep)) # Now not all threads had time to go to sleep # A new TE for the new step - self._te = TaskExecutor(self._curStep) + if not failed: # only if not failed + self._te = TaskExecutor(self._curStep) logger.debug("Main thread waking up at step {}, tapping worker threads".format(self._curStep)) # Now not all threads had time to go to sleep self.tapAllThreads() logger.debug("Main thread ready to finish up...") - self.crossStepBarrier() # Cross it one last time, after all threads finish - self._stepBarrier.reset() - logger.debug("Main thread in exclusive zone...") - self._te = None # No more executor, time to end - logger.debug("Main thread tapping all threads one last time...") - self.tapAllThreads() # Let the threads run one last time + if not failed: # only in regular situations + self.crossStepBarrier() # Cross it one last time, after all threads finish + self._stepBarrier.reset() + logger.debug("Main thread in exclusive zone...") + self._te = None # No more executor, time to end + logger.debug("Main thread tapping all threads one last time...") + self.tapAllThreads() # Let the threads run one last time + logger.debug("Main thread joining all threads") self._pool.joinAll() # Get all threads to finish - logger.info("All threads finished") + self._execStats.endExec() + + def logStats(self): self._execStats.logStats() - logger.info("Total Execution Time (task busy time, plus Python overhead): {:.2f} seconds".format(time.time() - startTime)) - print("\r\nFinished") def tapAllThreads(self): # in a deterministic manner wakeSeq = [] @@ -380,7 +400,7 @@ def open(self): # Open connection # Get the connection/cursor ready self._cursor.execute('reset query cache') - # self._cursor.execute('use db') + # self._cursor.execute('use db') # note we do this in _findCurrenState # Open connection self._tdSql = TDSql() @@ -410,27 +430,231 @@ def execute(self, sql): raise RuntimeError("Cannot execute database commands until connection is open") return self._tdSql.execute(sql) - def query(self, sql) -> int : # return number of rows retrieved + def query(self, sql) : # return rows affected if ( not self.isOpen ): raise RuntimeError("Cannot query database until connection is open") return self._tdSql.query(sql) + # results are in: return self._tdSql.queryResult - -# State of the database as we believe it to be -class DbState(): + def _queryAny(self, sql) : # actual query result as an int + if ( not self.isOpen ): + raise RuntimeError("Cannot query database until connection is open") + tSql = self._tdSql + nRows = tSql.query(sql) + if nRows != 1 : + raise RuntimeError("Unexpected result for query: {}, rows = {}".format(sql, nRows)) + if tSql.queryRows != 1 or tSql.queryCols != 1: + raise RuntimeError("Unexpected result set for query: {}".format(sql)) + return tSql.queryResult[0][0] + + def queryScalar(self, sql) -> int : + return self._queryAny(sql) + + def queryString(self, sql) -> str : + return self._queryAny(sql) + +class AnyState: STATE_INVALID = -1 STATE_EMPTY = 0 # nothing there, no even a DB STATE_DB_ONLY = 1 # we have a DB, but nothing else STATE_TABLE_ONLY = 2 # we have a table, but totally empty STATE_HAS_DATA = 3 # we have some data in the table + _stateNames = ["Invalid", "Empty", "DB_Only", "Table_Only", "Has_Data"] + + STATE_VAL_IDX = 0 + CAN_CREATE_DB = 1 + CAN_DROP_DB = 2 + CAN_CREATE_FIXED_TABLE = 3 + CAN_DROP_FIXED_TABLE = 4 + CAN_ADD_DATA = 5 + CAN_READ_DATA = 6 + + def __init__(self): + self._info = self.getInfo() + + def __str__(self): + return self._stateNames[self._info[self.STATE_VAL_IDX] - 1] # -1 hack to accomodate the STATE_INVALID case + + def getInfo(self): + raise RuntimeError("Must be overriden by child classes") + + def verifyTasksToState(self, tasks, newState): + raise RuntimeError("Must be overriden by child classes") + + def getValue(self): + return self._info[self.STATE_VAL_IDX] + def canCreateDb(self): + return self._info[self.CAN_CREATE_DB] + def canDropDb(self): + return self._info[self.CAN_DROP_DB] + def canCreateFixedTable(self): + return self._info[self.CAN_CREATE_FIXED_TABLE] + def canDropFixedTable(self): + return self._info[self.CAN_DROP_FIXED_TABLE] + def canAddData(self): + return self._info[self.CAN_ADD_DATA] + def canReadData(self): + return self._info[self.CAN_READ_DATA] + + def assertAtMostOneSuccess(self, tasks, cls): + sCnt = 0 + for task in tasks : + if not isinstance(task, cls): + continue + if task.isSuccess(): + task.logDebug("Task success found") + sCnt += 1 + if ( sCnt >= 2 ): + raise RuntimeError("Unexpected more than 1 success with task: {}".format(cls)) + + def assertIfExistThenSuccess(self, tasks, cls): + sCnt = 0 + exists = False + for task in tasks : + if not isinstance(task, cls): + continue + exists = True # we have a valid instance + if task.isSuccess(): + sCnt += 1 + if ( exists and sCnt <= 0 ): + raise RuntimeError("Unexpected zero success for task: {}".format(cls)) + + def assertNoTask(self, tasks, cls): + for task in tasks : + if isinstance(task, cls): + raise CrashGenError("This task: {}, is not expected to be present, given the success/failure of others".format(cls.__name__)) + + def assertNoSuccess(self, tasks, cls): + for task in tasks : + if isinstance(task, cls): + if task.isSuccess(): + raise RuntimeError("Unexpected successful task: {}".format(cls)) + + def hasSuccess(self, tasks, cls): + for task in tasks : + if not isinstance(task, cls): + continue + if task.isSuccess(): + return True + return False + +class StateInvalid(AnyState): + def getInfo(self): + return [ + self.STATE_INVALID, + False, False, # can create/drop Db + False, False, # can create/drop fixed table + False, False, # can insert/read data with fixed table + ] + + # def verifyTasksToState(self, tasks, newState): + +class StateEmpty(AnyState): + def getInfo(self): + return [ + self.STATE_EMPTY, + True, False, # can create/drop Db + False, False, # can create/drop fixed table + False, False, # can insert/read data with fixed table + ] + + def verifyTasksToState(self, tasks, newState): + if ( self.hasSuccess(tasks, CreateDbTask) ): + self.assertAtMostOneSuccess(tasks, CreateDbTask) # not really valid for massively parrallel tasks + +class StateDbOnly(AnyState): + def getInfo(self): + return [ + self.STATE_DB_ONLY, + False, True, + True, False, + False, False, + ] + + def verifyTasksToState(self, tasks, newState): + self.assertAtMostOneSuccess(tasks, DropDbTask) # not true in massively parralel cases + self.assertIfExistThenSuccess(tasks, DropDbTask) + self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) + # Nothing to be said about adding data task + if ( self.hasSuccess(tasks, DropDbTask) ): # dropped the DB + # self.assertHasTask(tasks, DropDbTask) # implied by hasSuccess + self.assertAtMostOneSuccess(tasks, DropDbTask) + # self._state = self.STATE_EMPTY + elif ( self.hasSuccess(tasks, CreateFixedTableTask) ): # did not drop db, create table success + # self.assertHasTask(tasks, CreateFixedTableTask) # tried to create table + self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) # at most 1 attempt is successful + self.assertNoTask(tasks, DropDbTask) # should have have tried + # if ( not self.hasSuccess(tasks, AddFixedDataTask) ): # just created table, no data yet + # # can't say there's add-data attempts, since they may all fail + # self._state = self.STATE_TABLE_ONLY + # else: + # self._state = self.STATE_HAS_DATA + # What about AddFixedData? + # elif ( self.hasSuccess(tasks, AddFixedDataTask) ): + # self._state = self.STATE_HAS_DATA + # else: # no success in dropping db tasks, no success in create fixed table? read data should also fail + # # raise RuntimeError("Unexpected no-success scenario") # We might just landed all failure tasks, + # self._state = self.STATE_DB_ONLY # no change + +class StateTableOnly(AnyState): + def getInfo(self): + return [ + self.STATE_TABLE_ONLY, + False, True, + False, True, + True, True, + ] + + def verifyTasksToState(self, tasks, newState): + if ( self.hasSuccess(tasks, DropFixedTableTask) ): # we are able to drop the table + self.assertAtMostOneSuccess(tasks, DropFixedTableTask) + # self._state = self.STATE_DB_ONLY + elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data + self.assertNoTask(tasks, DropFixedTableTask) + # self._state = self.STATE_HAS_DATA + elif ( self.hasSuccess(tasks, ReadFixedDataTask) ): # no success in prev cases, but was able to read data + self.assertNoTask(tasks, DropFixedTableTask) + self.assertNoTask(tasks, AddFixedDataTask) + # self._state = self.STATE_TABLE_ONLY # no change + else: # did not drop table, did not insert data, did not read successfully, that is impossible + raise RuntimeError("Unexpected no-success scenarios") + +class StateHasData(AnyState): + def getInfo(self): + return [ + self.STATE_HAS_DATA, + False, True, + False, True, + True, True, + ] + + def verifyTasksToState(self, tasks, newState): + if ( self.hasSuccess(tasks, DropFixedTableTask) ): + self.assertAtMostOneSuccess(tasks, DropFixedTableTask) + # self._state = self.STATE_DB_ONLY + else: # no success dropping the table, table remains intact in this step + self.assertNoTask(tasks, DropFixedTableTask) # we should not have had such a task + + if ( not self.hasSuccess(tasks, AddFixedDataTask) ): # added data + # self._state = self.STATE_HAS_DATA + # else: + self.assertNoTask(tasks, AddFixedDataTask) + if ( not self.hasSuccess(tasks, ReadFixedDataTask) ): # simple able to read some data + # which is ok, then no state change + # self._state = self.STATE_HAS_DATA # no change + # else: # did not drop table, did not insert data, that is impossible? yeah, we might only had ReadData task + raise RuntimeError("Unexpected no-success scenarios") +# State of the database as we believe it to be +class DbState(): + def __init__(self): self.tableNumQueue = LinearQueue() self._lastTick = datetime.datetime(2019, 1, 1) # initial date time tick self._lastInt = 0 # next one is initial integer self._lock = threading.RLock() - self._state = self.STATE_INVALID + self._state = StateInvalid() # starting state self._stateWeights = [1,3,5,10] # self.openDbServerConnection() @@ -448,7 +672,7 @@ def __init__(self): print("[=]Unexpected exception") raise self._dbConn.resetDb() # drop and recreate DB - self._state = self.STATE_EMPTY # initial state, the result of above + self._state = StateEmpty() # initial state, the result of above def getDbConn(self): return self._dbConn @@ -484,9 +708,6 @@ def getTableNameToDelete(self): return "table_{}".format(tblNum) - def execSql(self, sql): # using the main DB connection - return self._dbConn.execute(sql) - def cleanUp(self): self._dbConn.close() @@ -529,7 +750,7 @@ def pickTaskType(self): else: weights.append(10) # read data task, default to 10: TODO: change to a constant i = self._weighted_choice_sub(weights) - logger.debug(" (weighted random:{}/{}) ".format(i, len(taskTypes))) + # logger.debug(" (weighted random:{}/{}) ".format(i, len(taskTypes))) return taskTypes[i] def _weighted_choice_sub(self, weights): # ref: https://eli.thegreenplace.net/2010/01/22/weighted-random-generation-in-python/ @@ -539,131 +760,52 @@ def _weighted_choice_sub(self, weights): # ref: https://eli.thegreenplace.net/20 if rnd < 0: return i + def _findCurrentState(self): + dbc = self._dbConn + if dbc.query("show databases") == 0 : # no database?! + return StateEmpty() + dbc.execute("use db") # did not do this when openning connection + if dbc.query("show tables") == 0 : # no tables + return StateDbOnly() + if dbc.query("SELECT * FROM {}".format(self.getFixedTableName()) ) == 0 : # no data + return StateTableOnly() + else: + return StateHasData() - def transition(self, tasks): if ( len(tasks) == 0 ): # before 1st step, or otherwise empty return # do nothing - self.execSql("show dnodes") # this should show up in the server log, separating steps - - if ( self._state == self.STATE_EMPTY ): - # self.assertNoSuccess(tasks, ReadFixedDataTask) # some read may be successful, since we might be creating a table - if ( self.hasSuccess(tasks, CreateDbTask) ): - self.assertAtMostOneSuccess(tasks, CreateDbTask) # param is class - self._state = self.STATE_DB_ONLY - if ( self.hasSuccess(tasks, CreateFixedTableTask )): - self._state = self.STATE_TABLE_ONLY - # else: # no successful table creation, not much we can say, as it is step 2 - else: # did not create db - self.assertNoTask(tasks, CreateDbTask) # because we did not have such task - # self.assertNoSuccess(tasks, CreateDbTask) # not necessary, since we just verified no such task - self.assertNoSuccess(tasks, CreateFixedTableTask) - - elif ( self._state == self.STATE_DB_ONLY ): - self.assertAtMostOneSuccess(tasks, DropDbTask) - self.assertIfExistThenSuccess(tasks, DropDbTask) - self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) - # Nothing to be said about adding data task - if ( self.hasSuccess(tasks, DropDbTask) ): # dropped the DB - # self.assertHasTask(tasks, DropDbTask) # implied by hasSuccess - self.assertAtMostOneSuccess(tasks, DropDbTask) - self._state = self.STATE_EMPTY - elif ( self.hasSuccess(tasks, CreateFixedTableTask) ): # did not drop db, create table success - # self.assertHasTask(tasks, CreateFixedTableTask) # tried to create table - self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) # at most 1 attempt is successful - self.assertNoTask(tasks, DropDbTask) # should have have tried - if ( not self.hasSuccess(tasks, AddFixedDataTask) ): # just created table, no data yet - # can't say there's add-data attempts, since they may all fail - self._state = self.STATE_TABLE_ONLY - else: - self._state = self.STATE_HAS_DATA - # What about AddFixedData? - elif ( self.hasSuccess(tasks, AddFixedDataTask) ): - self._state = self.STATE_HAS_DATA - else: # no success in dropping db tasks, no success in create fixed table? read data should also fail - # raise RuntimeError("Unexpected no-success scenario") # We might just landed all failure tasks, - self._state = self.STATE_DB_ONLY # no change - - elif ( self._state == self.STATE_TABLE_ONLY ): - if ( self.hasSuccess(tasks, DropFixedTableTask) ): # we are able to drop the table - self.assertAtMostOneSuccess(tasks, DropFixedTableTask) - self._state = self.STATE_DB_ONLY - elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data - self.assertNoTask(tasks, DropFixedTableTask) - self._state = self.STATE_HAS_DATA - elif ( self.hasSuccess(tasks, ReadFixedDataTask) ): # no success in prev cases, but was able to read data - self.assertNoTask(tasks, DropFixedTableTask) - self.assertNoTask(tasks, AddFixedDataTask) - self._state = self.STATE_TABLE_ONLY # no change - else: # did not drop table, did not insert data, did not read successfully, that is impossible - raise RuntimeError("Unexpected no-success scenarios") + self._dbConn.execute("show dnodes") # this should show up in the server log, separating steps - elif ( self._state == self.STATE_HAS_DATA ): # Same as above, TODO: adjust - if ( self.hasSuccess(tasks, DropFixedTableTask) ): - self.assertAtMostOneSuccess(tasks, DropFixedTableTask) - self._state = self.STATE_DB_ONLY - else: # no success dropping the table, table remains intact in this step - self.assertNoTask(tasks, DropFixedTableTask) # we should not have had such a task + # Generic Checks, first based on the start state + if self._state.canCreateDb(): + self._state.assertIfExistThenSuccess(tasks, CreateDbTask) + # self.assertAtMostOneSuccess(tasks, CreateDbTask) # not really, in case of multiple creation and drops - if ( self.hasSuccess(tasks, AddFixedDataTask) ): # added data - self._state = self.STATE_HAS_DATA - else: - self.assertNoTask(tasks, AddFixedDataTask) + if self._state.canDropDb(): + self._state.assertIfExistThenSuccess(tasks, DropDbTask) + # self.assertAtMostOneSuccess(tasks, DropDbTask) # not really in case of drop-create-drop - if ( self.hasSuccess(tasks, ReadFixedDataTask) ): # simple able to read some data - # which is ok, then no state change - self._state = self.STATE_HAS_DATA # no change - else: # did not drop table, did not insert data, that is impossible? yeah, we might only had ReadData task - raise RuntimeError("Unexpected no-success scenarios") + # if self._state.canCreateFixedTable(): + # self.assertIfExistThenSuccess(tasks, CreateFixedTableTask) # Not true, DB may be dropped + # self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) # not really, in case of create-drop-create - else: - raise RuntimeError("Unexpected DbState state: {}".format(self._state)) - logger.debug("New DB state is: {}".format(self._state)) + # if self._state.canDropFixedTable(): + # self.assertIfExistThenSuccess(tasks, DropFixedTableTask) # Not True, the whole DB may be dropped + # self.assertAtMostOneSuccess(tasks, DropFixedTableTask) # not really in case of drop-create-drop - def assertAtMostOneSuccess(self, tasks, cls): - sCnt = 0 - for task in tasks : - if not isinstance(task, cls): - continue - if task.isSuccess(): - task.logDebug("Task success found") - sCnt += 1 - if ( sCnt >= 2 ): - raise RuntimeError("Unexpected more than 1 success with task: {}".format(cls)) + # if self._state.canAddData(): + # self.assertIfExistThenSuccess(tasks, AddFixedDataTask) # not true actually - def assertIfExistThenSuccess(self, tasks, cls): - sCnt = 0 - exists = False - for task in tasks : - if not isinstance(task, cls): - continue - exists = True # we have a valid instance - if task.isSuccess(): - sCnt += 1 - if ( exists and sCnt <= 0 ): - raise RuntimeError("Unexpected zero success for task: {}".format(cls)) - - def assertNoTask(self, tasks, cls): - for task in tasks : - if isinstance(task, cls): - raise CrashGenError("This task: {}, is not expected to be present, given the success/failure of others".format(cls.__name__)) - - def assertNoSuccess(self, tasks, cls): - for task in tasks : - if isinstance(task, cls): - if task.isSuccess(): - raise RuntimeError("Unexpected successful task: {}".format(cls)) - - def hasSuccess(self, tasks, cls): - for task in tasks : - if not isinstance(task, cls): - continue - if task.isSuccess(): - return True - return False + # if self._state.canReadData(): + # Nothing for sure + newState = self._findCurrentState() + self._state.verifyTasksToState(tasks, newState) # can old state move to new state through the tasks? + self._state = newState + logger.debug("New DB state is: {}".format(self._state)) class TaskExecutor(): def __init__(self, curStep): @@ -750,8 +892,19 @@ def __init__(self): self._tasksInProgress = 0 self._lock = threading.Lock() self._firstTaskStartTime = None + self._execStartTime = None + self._elapsedTime = 0.0 # total elapsed time self._accRunTime = 0.0 # accumulated run time + self._failed = False + self._failureReason = None + + def startExec(self): + self._execStartTime = time.time() + + def endExec(self): + self._elapsedTime = time.time() - self._execStartTime + def incExecCount(self, klassName, isSuccess): # TODO: add a lock here if klassName not in self._execTimes: self._execTimes[klassName] = [0, 0] @@ -773,16 +926,27 @@ def endTaskType(self, klassName, isSuccess): self._accRunTime += (time.time() - self._firstTaskStartTime) self._firstTaskStartTime = None + def registerFailure(self, reason): + self._failed = True + self._failureReason = reason + def logStats(self): - logger.info("Logging task execution stats (success/total times)...") + logger.info("----------------------------------------------------------------------") + logger.info("| Crash_Gen test {}, with the following stats:". + format("FAILED (reason: {})".format(self._failureReason) if self._failed else "SUCCEEDED")) + logger.info("| Task Execution Times (success/total):") execTimesAny = 0 for k, n in self._execTimes.items(): execTimesAny += n[1] - logger.info(" {0:<24}: {1}/{2}".format(k,n[1],n[0])) + logger.info("| {0:<24}: {1}/{2}".format(k,n[1],n[0])) - logger.info("Total Tasks Executed (success or not): {} ".format(execTimesAny)) - logger.info("Total Tasks In Progress at End: {}".format(self._tasksInProgress)) - logger.info("Total Task Busy Time (elapsed time when any task is in progress): {:.2f} seconds".format(self._accRunTime)) + logger.info("| Total Tasks Executed (success or not): {} ".format(execTimesAny)) + logger.info("| Total Tasks In Progress at End: {}".format(self._tasksInProgress)) + logger.info("| Total Task Busy Time (elapsed time when any task is in progress): {:.3f} seconds".format(self._accRunTime)) + logger.info("| Average Per-Task Execution Time: {:.3f} seconds".format(self._accRunTime/execTimesAny)) + logger.info("| Total Elapsed Time (from wall clock): {:.3f} seconds".format(self._elapsedTime)) + logger.info("----------------------------------------------------------------------") + class StateTransitionTask(Task): @@ -793,17 +957,18 @@ class StateTransitionTask(Task): def getInfo(cls): # each sub class should supply their own information raise RuntimeError("Overriding method expected") - @classmethod - def getBeginStates(cls): - return cls.getInfo()[0] + # @classmethod + # def getBeginStates(cls): + # return cls.getInfo()[0] @classmethod def getEndState(cls): - return cls.getInfo()[1] + return cls.getInfo()[0] @classmethod - def canBeginFrom(cls, state): - return state in cls.getBeginStates() + def canBeginFrom(cls, state: AnyState): + # return state.getValue() in cls.getBeginStates() + raise RuntimeError("must be overriden") def execute(self, wt: WorkerThread): super().execute(wt) @@ -814,10 +979,14 @@ class CreateDbTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_EMPTY], # can begin from - DbState.STATE_DB_ONLY # end state + # [AnyState.STATE_EMPTY], # can begin from + AnyState.STATE_DB_ONLY # end state ] + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canCreateDb() + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("create database db") @@ -825,10 +994,14 @@ class DropDbTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_DB_ONLY, DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], - DbState.STATE_EMPTY + # [AnyState.STATE_DB_ONLY, AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], + AnyState.STATE_EMPTY ] + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canDropDb() + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("drop database db") @@ -836,10 +1009,14 @@ class CreateFixedTableTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_DB_ONLY], - DbState.STATE_TABLE_ONLY + # [AnyState.STATE_DB_ONLY], + AnyState.STATE_TABLE_ONLY ] + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canCreateFixedTable() + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tblName = self._dbState.getFixedTableName() wt.execSql("create table db.{} (ts timestamp, speed int)".format(tblName)) @@ -848,23 +1025,31 @@ class ReadFixedDataTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], + # [AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], None # meaning doesn't affect state ] + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canReadData() + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tblName = self._dbState.getFixedTableName() - self._numRows = wt.querySql("select * from db.{}".format(tblName)) # save the result for later + wt.execSql("select * from db.{}".format(tblName)) # TODO: analyze result set later # tdSql.query(" cars where tbname in ('carzero', 'carone')") class DropFixedTableTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], - DbState.STATE_DB_ONLY # meaning doesn't affect state + # [AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], + AnyState.STATE_DB_ONLY # meaning doesn't affect state ] + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canDropFixedTable() + def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): tblName = self._dbState.getFixedTableName() wt.execSql("drop table db.{}".format(tblName)) @@ -873,9 +1058,13 @@ class AddFixedDataTask(StateTransitionTask): @classmethod def getInfo(cls): return [ - [DbState.STATE_TABLE_ONLY, DbState.STATE_HAS_DATA], - DbState.STATE_HAS_DATA + # [AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], + AnyState.STATE_HAS_DATA ] + + @classmethod + def canBeginFrom(cls, state: AnyState): + return state.canAddData() def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): ds = self._dbState @@ -1015,8 +1204,11 @@ def main(): # WorkDispatcher(dbState), # Obsolete? dbState ) + tc.run() - dbState.cleanUp() + tc.logStats() + dbState.cleanUp() + logger.info("Finished running thread pool") if __name__ == "__main__": From c1bc7ef982d1021579a141b119762fb3c36ca4b1 Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Tue, 26 May 2020 16:51:26 +0800 Subject: [PATCH 11/85] shell suport multiple commands in single statement --- src/kit/shell/src/shellDarwin.c | 9 +- src/kit/shell/src/shellEngine.c | 191 +++++++++++++++++-------------- src/kit/shell/src/shellLinux.c | 10 +- src/kit/shell/src/shellWindows.c | 7 +- 4 files changed, 111 insertions(+), 106 deletions(-) diff --git a/src/kit/shell/src/shellDarwin.c b/src/kit/shell/src/shellDarwin.c index e4ef06c4036..987087d71f8 100644 --- a/src/kit/shell/src/shellDarwin.c +++ b/src/kit/shell/src/shellDarwin.c @@ -335,17 +335,14 @@ void *shellLoopQuery(void *arg) { tscError("failed to malloc command"); return NULL; } - while (1) { - // Read command from shell. + do { + // Read command from shell. memset(command, 0, MAX_COMMAND_SIZE); set_terminal_mode(); shellReadCommand(con, command); reset_terminal_mode(); - - // Run the command - shellRunCommand(con, command); - } + } while (shellRunCommand(con, command) == 0); pthread_cleanup_pop(1); diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index 93818d7d73c..4ef51eaa5a8 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -82,20 +82,15 @@ TAOS *shellInit(SShellArguments *args) { // Check if it is temperory run if (args->commands != NULL || args->file[0] != 0) { if (args->commands != NULL) { - char *token; - token = strtok(args->commands, ";"); - while (token != NULL) { - printf("%s%s\n", PROMPT_HEADER, token); - shellRunCommand(con, token); - token = strtok(NULL, ";"); - } + printf("%s%s\n", PROMPT_HEADER, args->commands); + shellRunCommand(con, args->commands); } if (args->file[0] != 0) { source_file(con, args->file); } - taos_close(con); + taos_close(con); write_history(); exit(EXIT_SUCCESS); } @@ -111,96 +106,37 @@ TAOS *shellInit(SShellArguments *args) { return con; } -void shellReplaceCtrlChar(char *str) { - _Bool ctrlOn = false; - char *pstr = NULL; - char quote = 0; - for (pstr = str; *str != '\0'; ++str) { - if (ctrlOn) { - switch (*str) { - case 'n': - *pstr = '\n'; - pstr++; - break; - case 'r': - *pstr = '\r'; - pstr++; - break; - case 't': - *pstr = '\t'; - pstr++; - break; - case 'G': - *pstr++ = '\\'; - *pstr++ = *str; - break; - case '\\': - *pstr = '\\'; - pstr++; - break; - case '\'': - case '"': - if (quote) { - *pstr++ = '\\'; - *pstr++ = *str; - } - break; - default: - *pstr = *str; - pstr++; - break; - } - ctrlOn = false; - } else { - if (*str == '\\') { - ctrlOn = true; - } else { - if (quote == *str) { - quote = 0; - } else if (*str == '\'' || *str == '"') { - quote = *str; - } - *pstr = *str; - pstr++; - } +static bool isEmptyCommand(const char* cmd) { + for (char c = *cmd++; c != 0; c = *cmd++) { + if (c != ' ' && c != '\t' && c != ';') { + return false; } } - *pstr = '\0'; + return true; } -int32_t shellRunCommand(TAOS *con, char *command) { + +static int32_t shellRunSingleCommand(TAOS *con, char *command) { /* If command is empty just return */ - if (regex_match(command, "^[ \t;]*$", REG_EXTENDED)) { + if (isEmptyCommand(command)) { return 0; } - /* Update the history vector. */ - if (history.hstart == history.hend || - history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE] == NULL || - strcmp(command, history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE]) != 0) { - if (history.hist[history.hend] != NULL) { - tfree(history.hist[history.hend]); - } - history.hist[history.hend] = strdup(command); - - history.hend = (history.hend + 1) % MAX_HISTORY_SIZE; - if (history.hend == history.hstart) { - history.hstart = (history.hstart + 1) % MAX_HISTORY_SIZE; - } - } - - shellReplaceCtrlChar(command); - // Analyse the command. if (regex_match(command, "^[ \t]*(quit|q|exit)[ \t;]*$", REG_EXTENDED | REG_ICASE)) { taos_close(con); write_history(); return -1; - } else if (regex_match(command, "^[\t ]*clear[ \t;]*$", REG_EXTENDED | REG_ICASE)) { + } + + if (regex_match(command, "^[\t ]*clear[ \t;]*$", REG_EXTENDED | REG_ICASE)) { // If clear the screen. system("clear"); - } else if (regex_match(command, "^[\t ]*set[ \t]+max_binary_display_width[ \t]+(default|[1-9][0-9]*)[ \t;]*$", REG_EXTENDED | REG_ICASE)) { + return 0; + } + + if (regex_match(command, "^[\t ]*set[ \t]+max_binary_display_width[ \t]+(default|[1-9][0-9]*)[ \t;]*$", REG_EXTENDED | REG_ICASE)) { strtok(command, " \t"); strtok(NULL, " \t"); char* p = strtok(NULL, " \t"); @@ -209,21 +145,102 @@ int32_t shellRunCommand(TAOS *con, char *command) { } else { tsMaxBinaryDisplayWidth = atoi(p); } - } else if (regex_match(command, "^[ \t]*source[\t ]+[^ ]+[ \t;]*$", REG_EXTENDED | REG_ICASE)) { + return 0; + } + + if (regex_match(command, "^[ \t]*source[\t ]+[^ ]+[ \t;]*$", REG_EXTENDED | REG_ICASE)) { /* If source file. */ char *c_ptr = strtok(command, " ;"); assert(c_ptr != NULL); c_ptr = strtok(NULL, " ;"); assert(c_ptr != NULL); - source_file(con, c_ptr); - } else { - shellRunCommandOnServer(con, command); + return 0; } - + + shellRunCommandOnServer(con, command); return 0; } + +int32_t shellRunCommand(TAOS* con, char* command) { + /* If command is empty just return */ + if (isEmptyCommand(command)) { + return 0; + } + + /* Update the history vector. */ + if (history.hstart == history.hend || + history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE] == NULL || + strcmp(command, history.hist[(history.hend + MAX_HISTORY_SIZE - 1) % MAX_HISTORY_SIZE]) != 0) { + if (history.hist[history.hend] != NULL) { + tfree(history.hist[history.hend]); + } + history.hist[history.hend] = strdup(command); + + history.hend = (history.hend + 1) % MAX_HISTORY_SIZE; + if (history.hend == history.hstart) { + history.hstart = (history.hstart + 1) % MAX_HISTORY_SIZE; + } + } + + bool esc = false; + char quote = 0, *cmd = command, *p = command; + for (char c = *command++; c != 0; c = *command++) { + if (esc) { + switch (c) { + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + case 'G': + *p++ = '\\'; + break; + case '\'': + case '"': + if (quote) { + *p++ = '\\'; + } + break; + } + *p++ = c; + esc = false; + continue; + } + + if (c == '\\') { + esc = true; + continue; + } + + if (quote == c) { + quote = 0; + } else if (c == '\'' || c == '"') { + quote = c; + } + + *p++ = c; + if (c == ';') { + c = *p; + *p = 0; + if (shellRunSingleCommand(con, cmd) < 0) { + return -1; + } + *p = c; + p = cmd; + } + } + + *p = 0; + return shellRunSingleCommand(con, cmd); +} + + void shellRunCommandOnServer(TAOS *con, char command[]) { int64_t st, et; wordexp_t full_path; diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index 856e011a78b..d8b3e9bb4da 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -307,19 +307,13 @@ void *shellLoopQuery(void *arg) { return NULL; } - while (1) { + do { // Read command from shell. - memset(command, 0, MAX_COMMAND_SIZE); set_terminal_mode(); shellReadCommand(con, command); reset_terminal_mode(); - - // Run the command - if (shellRunCommand(con, command) != 0) { - break; - } - } + } while (shellRunCommand(con, command) == 0); tfree(command); exitShell(); diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c index c4466772766..440aa508ab4 100644 --- a/src/kit/shell/src/shellWindows.c +++ b/src/kit/shell/src/shellWindows.c @@ -203,16 +203,13 @@ void *shellLoopQuery(void *arg) { char *command = malloc(MAX_COMMAND_SIZE); if (command == NULL) return NULL; - while (1) { + do { memset(command, 0, MAX_COMMAND_SIZE); shellPrintPrompt(); // Read command from shell. shellReadCommand(con, command); - - // Run the command - shellRunCommand(con, command); - } + } while (shellRunCommand(con, command) == 0); return NULL; } From fbc50a3da38563a032abf3b9ffa83935c698c453 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Tue, 26 May 2020 11:02:05 +0000 Subject: [PATCH 12/85] [TD-90] tag schema develop --- src/common/inc/tdataformat.h | 17 +++-- src/common/src/tdataformat.c | 143 +++++++++++++++++++++++++++++------ src/tsdb/src/tsdbMeta.c | 28 ++++--- src/tsdb/src/tsdbRead.c | 16 ++-- src/vnode/src/vnodeWrite.c | 6 +- 5 files changed, 158 insertions(+), 52 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 0aec948015b..b1dda88d508 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -226,13 +226,13 @@ pData typedef struct { int16_t colId; // column ID int16_t colType; - int16_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar - int16_t offset; //to store value for numeric col or offset for binary/Nchar + uint16_t offset; //to store value for numeric col or offset for binary/Nchar } STagCol; typedef struct { - int32_t len; + int32_t len; void * pData; // Space to store the tag value + uint16_t dataLen; int16_t ncols; // Total columns allocated STagCol tagCols[]; } STagRow; @@ -242,10 +242,13 @@ typedef struct { int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information int tdDeleteTagCol(SDataRow row, int16_t colId); // delete tag value and update all the information -int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len); //if find tag, 0, else return -1; -int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes); - -SDataRow tdNewTagRowFromSchema(STSchema *pSchema); +void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type); //if find tag, 0, else return -1; +int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int16_t colId); +SDataRow tdTagRowDup(SDataRow row); +void tdFreeTagRow(SDataRow row); +SDataRow tdTagRowDecode(SDataRow row); +int tdTagRowCpy(SDataRow dst, SDataRow src); +void * tdNewTagRowFromSchema(STSchema *pSchema, int16_t numofTags); STSchema *tdGetSchemaFromData(SDataRow *row); #ifdef __cplusplus diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 3df94452d81..822a92322a4 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -14,6 +14,7 @@ */ #include "tdataformat.h" #include "wchar.h" +#include "talgo.h" /** * Create a SSchema object with nCols columns @@ -152,25 +153,136 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) { } int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId){ //insert tag value and update all the information + //todo return 0; }; int tdDeleteTagCol(SDataRow row, int16_t colId){ // delete tag value and update all the information - return o; + //todo + return 0; }; -int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len){ //if find tag, 0, else return -1; - return 0; +static int compTagVal(const void *key1, const void *key2) { + if (*(int16_t *)key1 > *(int16_t *)key2) { + return 1; + } else if (*(int16_t *)key1 == *(int16_t *)key2) { + return 0; + } else { + return -1; + } +} + +void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type) { //if find tag, 0, else return -1; + //todo + ASSERT(((STagRow *)row)->pData != NULL); + + STagCol *pBase = ((STagRow *)row)->tagCols; + int16_t nCols = ((STagRow *)row)->ncols; + + STagCol * stCol = taosbsearch(&colId, pBase, nCols, sizeof(STagCol), compTagVal, TD_EQ); + if (NULL == stCol) { + return NULL; + } + + void * pData = ((STagRow *)row)->pData; + *type = stCol->colType; + + return pData + stCol->offset; }; -int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes){ +int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int16_t colId){ + ASSERT(value != NULL); + //ASSERT(bytes-2 == varDataTLen(value)); + ASSERT(row != NULL); + STagRow *pTagrow = row; + + pTagrow->tagCols[pTagrow->ncols].colId = colId; + pTagrow->tagCols[pTagrow->ncols].colType = type; + pTagrow->tagCols[pTagrow->ncols].offset = pTagrow->dataLen; + + switch (type) { + case TSDB_DATA_TYPE_BINARY: + case TSDB_DATA_TYPE_NCHAR: + memcpy((char *)pTagrow->pData + pTagrow->dataLen, value, varDataTLen(value)); + pTagrow->dataLen += varDataTLen(value); + break; + default: + memcpy((char *)pTagrow->pData + pTagrow->dataLen, value, TYPE_BYTES[type]); + pTagrow->dataLen += TYPE_BYTES[type]; + break; + } + + pTagrow->ncols++; + return 0; }; -SDataRow tdNewTagRowFromSchema(STSchema *pSchema) { - //todo +void * tdNewTagRowFromSchema(STSchema *pSchema, int16_t numofTags) { + int32_t size = sizeof(STagRow) + numofTags * sizeof(STagCol); + + STagRow *row = malloc(size); + if (row == NULL) return NULL; + + int32_t datasize = pSchema->tlen - pSchema->flen; + row->pData = malloc(datasize); + if (NULL == row->pData) { + free(row); + return NULL; + } + + row->len = size; + row->dataLen = 0; + row->ncols = 0; + return row; +} +/** + * free tag row + */ + +void tdFreeTagRow(SDataRow row) { + if (row) { + free(((STagRow *)row)->pData); + free(row); + } +} + +SDataRow tdTagRowDup(SDataRow row) { + STagRow *trow = malloc(dataRowLen(row)); + if (trow == NULL) return NULL; + + dataRowCpy(trow, row); + trow->pData = malloc(trow->dataLen); + if (NULL == trow->pData) { + free(trow); + return NULL; + } + memcpy(trow->pData, ((STagRow *)row)->pData, trow->dataLen); + return trow; +} + +SDataRow tdTagRowDecode(SDataRow row) { + STagRow *trow = malloc(dataRowLen(row)); + if (trow == NULL) return NULL; + + dataRowCpy(trow, row); + trow->pData = malloc(trow->dataLen); + if (NULL == trow->pData) { + free(trow); + return NULL; + } + char * pData = (char *)row + dataRowLen(row) + sizeof(int32_t); + memcpy(trow->pData, pData, trow->dataLen); + return trow; } +int tdTagRowCpy(SDataRow dst, SDataRow src) { + if (src == NULL) return -1; + + dataRowCpy(dst, src); + void * pData = dst + dataRowLen(src); + memcpy(pData, ((STagRow *)src)->pData, ((STagRow *)src)->dataLen); + return 0; +} /** * Free the SDataRow object */ @@ -203,25 +315,6 @@ int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_ return 0; } -int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_t offset) { - ASSERT(value != NULL); - int32_t toffset = offset + TD_DATA_ROW_HEAD_SIZE; - char * ptr = POINTER_SHIFT(row, dataRowLen(row)); - - switch (type) { - case TSDB_DATA_TYPE_BINARY: - case TSDB_DATA_TYPE_NCHAR: - *(VarDataOffsetT *)POINTER_SHIFT(row, toffset) = dataRowLen(row); - memcpy(ptr, value, varDataTLen(value)); - dataRowLen(row) += varDataTLen(value); - break; - default: - memcpy(POINTER_SHIFT(row, toffset), value, TYPE_BYTES[type]); - break; - } - - return 0; -} SDataRow tdDataRowDup(SDataRow row) { SDataRow trow = malloc(dataRowLen(row)); diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 356e9c77f13..c16bb74df87 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -54,7 +54,7 @@ void *tsdbEncodeTable(STable *pTable, int *contLen) { ptr = tdEncodeSchema(ptr, pTable->schema); ptr = tdEncodeSchema(ptr, pTable->tagSchema); } else if (pTable->type == TSDB_CHILD_TABLE) { - dataRowCpy(ptr, pTable->tagVal); + tdTagRowCpy(ptr, pTable->tagVal); } else { ptr = tdEncodeSchema(ptr, pTable->schema); } @@ -96,7 +96,7 @@ STable *tsdbDecodeTable(void *cont, int contLen) { pTable->schema = tdDecodeSchema(&ptr); pTable->tagSchema = tdDecodeSchema(&ptr); } else if (pTable->type == TSDB_CHILD_TABLE) { - pTable->tagVal = tdDataRowDup(ptr); + pTable->tagVal = tdTagRowDecode(ptr); } else { pTable->schema = tdDecodeSchema(&ptr); } @@ -114,8 +114,10 @@ static char* getTagIndexKey(const void* pData) { SDataRow row = elem->pTable->tagVal; STSchema* pSchema = tsdbGetTableTagSchema(elem->pMeta, elem->pTable); STColumn* pCol = &pSchema->columns[DEFAULT_TAG_INDEX_COLUMN]; - - return tdGetRowDataOfCol(row, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset); + int16_t type = 0; + void * res = tdQueryTagByID(row, pCol->colId,&type); + ASSERT(type == pCol->type); + return res; } int tsdbRestoreTable(void *pHandle, void *cont, int contLen) { @@ -255,8 +257,9 @@ int32_t tsdbGetTableTagVal(TsdbRepoT* repo, STableId* id, int32_t colId, int16_t } SDataRow row = (SDataRow)pTable->tagVal; - char* d = tdGetRowDataOfCol(row, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset); - + int16_t tagtype = 0; + char* d = tdQueryTagByID(row, pCol->colId, &tagtype); + //ASSERT((int8_t)tagtype == pCol->type) *val = d; *type = pCol->type; *bytes = pCol->bytes; @@ -321,7 +324,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { if (super->pIndex == NULL) { tdFreeSchema(super->schema); tdFreeSchema(super->tagSchema); - tdFreeDataRow(super->tagVal); + tdFreeTagRow(super->tagVal); free(super); return -1; } @@ -346,7 +349,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { if (IS_CREATE_STABLE(pCfg)) { // TSDB_CHILD_TABLE table->type = TSDB_CHILD_TABLE; table->superUid = pCfg->superUid; - table->tagVal = tdDataRowDup(pCfg->tagValues); + table->tagVal = tdTagRowDup(pCfg->tagValues); } else { // TSDB_NORMAL_TABLE table->type = TSDB_NORMAL_TABLE; table->superUid = -1; @@ -433,7 +436,7 @@ static void tsdbFreeMemTable(SMemTable *pMemTable) { static int tsdbFreeTable(STable *pTable) { // TODO: finish this function if (pTable->type == TSDB_CHILD_TABLE) { - tdFreeDataRow(pTable->tagVal); + tdFreeTagRow(pTable->tagVal); } else { tdFreeSchema(pTable->schema); } @@ -571,7 +574,9 @@ static int tsdbRemoveTableFromIndex(STsdbMeta *pMeta, STable *pTable) { STSchema* pSchema = tsdbGetTableTagSchema(pMeta, pTable); STColumn* pCol = &pSchema->columns[DEFAULT_TAG_INDEX_COLUMN]; - char* key = tdGetRowDataOfCol(pTable->tagVal, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset); + int16_t tagtype = 0; + char* key = tdQueryTagByID(pTable->tagVal, pCol->colId, &tagtype); + ASSERT(pCol->type == tagtype); SArray* res = tSkipListGet(pSTable->pIndex, key); size_t size = taosArrayGetSize(res); @@ -602,7 +607,8 @@ static int tsdbEstimateTableEncodeSize(STable *pTable) { size += tdGetSchemaEncodeSize(pTable->schema); size += tdGetSchemaEncodeSize(pTable->tagSchema); } else if (pTable->type == TSDB_CHILD_TABLE) { - size += dataRowLen(pTable->tagVal); + STagRow *pTagRow = (STagRow *)(pTable->tagVal); + size += dataRowLen(pTable->tagVal) + pTagRow->dataLen; } else { size += tdGetSchemaEncodeSize(pTable->schema); } diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index ad3da226f6d..4912f6f2e80 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -1746,9 +1746,9 @@ int32_t tableGroupComparFn(const void *p1, const void *p2, const void *param) { STColumn* pCol = schemaColAt(pTableGroupSupp->pTagSchema, colIndex); bytes = pCol->bytes; type = pCol->type; - - f1 = tdGetRowDataOfCol(pTable1->tagVal, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset); - f2 = tdGetRowDataOfCol(pTable2->tagVal, pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset); + int16_t tgtype1, tgtype2 = 0; + f1 = tdQueryTagByID(pTable1->tagVal, pCol->colId, &tgtype1); + f2 = tdQueryTagByID(pTable2->tagVal, pCol->colId, &tgtype2); } int32_t ret = doCompare(f1, f2, type, bytes); @@ -1836,10 +1836,12 @@ bool indexedNodeFilterFp(const void* pNode, void* param) { val = (char*) elem->pTable->name; type = TSDB_DATA_TYPE_BINARY; } else { - STSchema* pTSchema = (STSchema*) pInfo->param; // todo table schema is identical to stable schema?? - - int32_t offset = pTSchema->columns[pInfo->colIndex].offset; - val = tdGetRowDataOfCol(elem->pTable->tagVal, pInfo->sch.type, TD_DATA_ROW_HEAD_SIZE + offset); +// STSchema* pTSchema = (STSchema*) pInfo->param; // todo table schema is identical to stable schema?? + int16_t type; + // int32_t offset = pTSchema->columns[pInfo->colIndex].offset; + // val = tdGetRowDataOfCol(elem->pTable->tagVal, pInfo->sch.type, TD_DATA_ROW_HEAD_SIZE + offset); + val = tdQueryTagByID(elem->pTable->tagVal, pInfo->colIndex, &type); + // ASSERT(pInfo->sch.type == type); } int32_t ret = 0; diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 9c415d6af75..96ca19e1294 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -139,11 +139,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe char *pTagData = pTable->data + totalCols * sizeof(SSchema); int accumBytes = 0; - dataRow = tdNewDataRowFromSchema(pDestTagSchema); + //dataRow = tdNewDataRowFromSchema(pDestTagSchema); + dataRow = tdNewTagRowFromSchema(pDestTagSchema, numOfTags); for (int i = 0; i < numOfTags; i++) { STColumn *pTCol = schemaColAt(pDestTagSchema, i); - tdAppendColVal(dataRow, pTagData + accumBytes, pTCol->type, pTCol->bytes, pTCol->offset); +// tdAppendColVal(dataRow, pTagData + accumBytes, pTCol->type, pTCol->bytes, pTCol->offset); + tdAppendTagColVal(dataRow, pTagData + accumBytes, pTCol->type, pTCol->bytes, pTCol->colId); accumBytes += htons(pSchema[i + numOfColumns].bytes); } tsdbTableSetTagValue(&tCfg, dataRow, false); From da266b1c1b9f79ba439a53924e8a962ef911f087 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 26 May 2020 19:32:16 +0800 Subject: [PATCH 13/85] fix tests/test/c/importPerTabe.c typo [TD-429] --- tests/test/c/CMakeLists.txt | 4 ++-- tests/test/c/{importPerTabe.c => importPerTable.c} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename tests/test/c/{importPerTabe.c => importPerTable.c} (100%) diff --git a/tests/test/c/CMakeLists.txt b/tests/test/c/CMakeLists.txt index 893abb8e821..d40db5ee40f 100644 --- a/tests/test/c/CMakeLists.txt +++ b/tests/test/c/CMakeLists.txt @@ -16,6 +16,6 @@ IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM)) add_executable(importOneRow importOneRow.c) target_link_libraries(importOneRow taos_static pthread) - add_executable(importPerTabe importPerTabe.c) - target_link_libraries(importPerTabe taos_static pthread) + add_executable(importPerTable importPerTable.c) + target_link_libraries(importPerTable taos_static pthread) ENDIF() diff --git a/tests/test/c/importPerTabe.c b/tests/test/c/importPerTable.c similarity index 100% rename from tests/test/c/importPerTabe.c rename to tests/test/c/importPerTable.c From 3b54b74554b278fa168a30543fc937f76c1007f5 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 26 May 2020 20:08:51 +0800 Subject: [PATCH 14/85] [TD-335] rename mgmt to mnode --- src/dnode/CMakeLists.txt | 2 +- src/dnode/inc/dnodeMRead.h | 31 +++ src/dnode/inc/dnodeMWrite.h | 31 +++ src/dnode/inc/dnodeMgmt.h | 2 + src/dnode/inc/dnodeMpeer.h | 31 +++ src/dnode/src/dnodeMRead.c | 160 ++++++++++++++++ src/dnode/src/dnodeMWrite.c | 155 +++++++++++++++ src/dnode/src/dnodeMain.c | 21 +- src/dnode/src/dnodeMgmt.c | 24 ++- src/dnode/src/dnodeMpeer.c | 155 +++++++++++++++ src/dnode/src/dnodePeer.c | 16 +- src/dnode/src/dnodeShell.c | 56 +++--- src/dnode/src/dnodeVRead.c | 2 +- src/dnode/src/dnodeVWrite.c | 2 +- src/inc/dnode.h | 2 +- src/inc/mnode.h | 23 ++- src/mnode/inc/{mgmtAcct.h => mnodeAcct.h} | 0 .../inc/{mgmtDClient.h => mnodeDClient.h} | 0 src/mnode/inc/{mgmtDb.h => mnodeDb.h} | 0 src/mnode/inc/{mgmtDef.h => mnodeDef.h} | 2 +- src/mnode/inc/{mgmtDnode.h => mnodeDnode.h} | 0 src/mnode/inc/{mgmtInt.h => mnodeInt.h} | 0 src/mnode/inc/{mgmtMnode.h => mnodeMnode.h} | 4 +- .../inc/{mgmtProfile.h => mnodeProfile.h} | 0 src/mnode/inc/{mgmtSdb.h => mnodeSdb.h} | 0 src/mnode/inc/{mgmtServer.h => mnodeServer.h} | 4 +- src/mnode/inc/{mgmtShell.h => mnodeShell.h} | 14 +- src/mnode/inc/{mgmtTable.h => mnodeTable.h} | 0 src/mnode/inc/{mgmtUser.h => mnodeUser.h} | 0 src/mnode/inc/{mgmtVgroup.h => mnodeVgroup.h} | 2 +- src/mnode/src/mgmtServer.c | 106 ---------- src/mnode/src/{mgmtAcct.c => mnodeAcct.c} | 0 .../src/{mgmtBalance.c => mnodeBalance.c} | 0 src/mnode/src/{mgmtDb.c => mnodeDb.c} | 22 +-- src/mnode/src/{mgmtDnode.c => mnodeDnode.c} | 28 +-- src/mnode/src/{mgmtGrant.c => mnodeGrant.c} | 0 src/mnode/src/{mgmtMain.c => mnodeMain.c} | 63 ++++-- src/mnode/src/mnodeMgmt.c | 71 +++++++ src/mnode/src/{mgmtMnode.c => mnodeMnode.c} | 4 +- .../src/{mgmtProfile.c => mnodeProfile.c} | 18 +- src/mnode/src/mnodeRead.c | 83 ++++++++ src/mnode/src/{mgmtSdb.c => mnodeSdb.c} | 0 src/mnode/src/{mgmtShell.c => mnodeShow.c} | 181 +++++------------- src/mnode/src/{mgmtTable.c => mnodeTable.c} | 72 +++---- src/mnode/src/{mgmtUser.c => mnodeUser.c} | 16 +- src/mnode/src/{mgmtVgroup.c => mnodeVgroup.c} | 14 +- src/mnode/src/mnodeWrite.c | 96 ++++++++++ 47 files changed, 1116 insertions(+), 397 deletions(-) create mode 100644 src/dnode/inc/dnodeMRead.h create mode 100644 src/dnode/inc/dnodeMWrite.h create mode 100644 src/dnode/inc/dnodeMpeer.h create mode 100644 src/dnode/src/dnodeMRead.c create mode 100644 src/dnode/src/dnodeMWrite.c create mode 100644 src/dnode/src/dnodeMpeer.c rename src/mnode/inc/{mgmtAcct.h => mnodeAcct.h} (100%) rename src/mnode/inc/{mgmtDClient.h => mnodeDClient.h} (100%) rename src/mnode/inc/{mgmtDb.h => mnodeDb.h} (100%) rename src/mnode/inc/{mgmtDef.h => mnodeDef.h} (99%) rename src/mnode/inc/{mgmtDnode.h => mnodeDnode.h} (100%) rename src/mnode/inc/{mgmtInt.h => mnodeInt.h} (100%) rename src/mnode/inc/{mgmtMnode.h => mnodeMnode.h} (93%) rename src/mnode/inc/{mgmtProfile.h => mnodeProfile.h} (100%) rename src/mnode/inc/{mgmtSdb.h => mnodeSdb.h} (100%) rename src/mnode/inc/{mgmtServer.h => mnodeServer.h} (93%) rename src/mnode/inc/{mgmtShell.h => mnodeShell.h} (75%) rename src/mnode/inc/{mgmtTable.h => mnodeTable.h} (100%) rename src/mnode/inc/{mgmtUser.h => mnodeUser.h} (100%) rename src/mnode/inc/{mgmtVgroup.h => mnodeVgroup.h} (97%) delete mode 100644 src/mnode/src/mgmtServer.c rename src/mnode/src/{mgmtAcct.c => mnodeAcct.c} (100%) rename src/mnode/src/{mgmtBalance.c => mnodeBalance.c} (100%) rename src/mnode/src/{mgmtDb.c => mnodeDb.c} (98%) rename src/mnode/src/{mgmtDnode.c => mnodeDnode.c} (96%) rename src/mnode/src/{mgmtGrant.c => mnodeGrant.c} (100%) rename src/mnode/src/{mgmtMain.c => mnodeMain.c} (80%) create mode 100644 src/mnode/src/mnodeMgmt.c rename src/mnode/src/{mgmtMnode.c => mnodeMnode.c} (98%) rename src/mnode/src/{mgmtProfile.c => mnodeProfile.c} (97%) create mode 100644 src/mnode/src/mnodeRead.c rename src/mnode/src/{mgmtSdb.c => mnodeSdb.c} (100%) rename src/mnode/src/{mgmtShell.c => mnodeShow.c} (72%) rename src/mnode/src/{mgmtTable.c => mnodeTable.c} (97%) rename src/mnode/src/{mgmtUser.c => mnodeUser.c} (96%) rename src/mnode/src/{mgmtVgroup.c => mnodeVgroup.c} (98%) create mode 100644 src/mnode/src/mnodeWrite.c diff --git a/src/dnode/CMakeLists.txt b/src/dnode/CMakeLists.txt index de6e15e6b9f..2faea588a9b 100644 --- a/src/dnode/CMakeLists.txt +++ b/src/dnode/CMakeLists.txt @@ -16,7 +16,7 @@ IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM)) AUX_SOURCE_DIRECTORY(src SRC) ADD_EXECUTABLE(taosd ${SRC}) - TARGET_LINK_LIBRARIES(taosd mnode taos_static monitor http mqtt tsdb twal vnode cJson lz4) + TARGET_LINK_LIBRARIES(taosd taos_static monitor http mqtt tsdb twal vnode cJson lz4) IF (TD_ACCOUNT) TARGET_LINK_LIBRARIES(taosd account) diff --git a/src/dnode/inc/dnodeMRead.h b/src/dnode/inc/dnodeMRead.h new file mode 100644 index 00000000000..0b340a865f1 --- /dev/null +++ b/src/dnode/inc/dnodeMRead.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TDENGINE_DNODE_MREAD_H +#define TDENGINE_DNODE_MREAD_H + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t dnodeInitMnodeRead(); +void dnodeCleanupMnodeRead(); +void dnodeDispatchToMnodeReadQueue(SRpcMsg *rpcMsg); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/dnode/inc/dnodeMWrite.h b/src/dnode/inc/dnodeMWrite.h new file mode 100644 index 00000000000..7a3ec93446d --- /dev/null +++ b/src/dnode/inc/dnodeMWrite.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TDENGINE_DNODE_MWRITE_H +#define TDENGINE_DNODE_MWRITE_H + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t dnodeInitMnodeWrite(); +void dnodeCleanupMnodeWrite(); +void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/dnode/inc/dnodeMgmt.h b/src/dnode/inc/dnodeMgmt.h index 6f2af423bc2..949a7c6eeec 100644 --- a/src/dnode/inc/dnodeMgmt.h +++ b/src/dnode/inc/dnodeMgmt.h @@ -32,6 +32,8 @@ void* dnodeGetVnodeWal(void *pVnode); void* dnodeGetVnodeTsdb(void *pVnode); void dnodeReleaseVnode(void *pVnode); +void dnodeSendRediretMsg(SRpcMsg *pMsg); + #ifdef __cplusplus } #endif diff --git a/src/dnode/inc/dnodeMpeer.h b/src/dnode/inc/dnodeMpeer.h new file mode 100644 index 00000000000..93b31c17492 --- /dev/null +++ b/src/dnode/inc/dnodeMpeer.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TDENGINE_DNODE_MMGMT_H +#define TDENGINE_DNODE_MMGMT_H + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t dnodeInitMnodeMgmt(); +void dnodeCleanupMnodeMgmt(); +void dnodeDispatchToMnodeMgmtQueue(SRpcMsg *pMsg); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c new file mode 100644 index 00000000000..cd785a804e8 --- /dev/null +++ b/src/dnode/src/dnodeMRead.c @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taoserror.h" +#include "taosmsg.h" +#include "tutil.h" +#include "tqueue.h" +#include "trpc.h" +#include "twal.h" +#include "tglobal.h" +#include "mnode.h" +#include "dnode.h" +#include "dnodeInt.h" +#include "dnodeVMgmt.h" +#include "dnodeMRead.h" + +typedef struct { + pthread_t thread; + int32_t workerId; +} SMReadWorker; + +typedef struct { + int32_t num; + SMReadWorker *readWorker; +} SMReadWorkerPool; + +static SMReadWorkerPool tsMReadPool; +static taos_qset tsMReadQset; +static taos_queue tsMReadQueue; + +static void *dnodeProcessMnodeReadQueue(void *param); + +int32_t dnodeInitMnodeRead() { + tsMReadQset = taosOpenQset(); + + tsMReadPool.num = tsNumOfCores * tsNumOfThreadsPerCore / 2; + tsMReadPool.num = MAX(2, tsMReadPool.num); + tsMReadPool.num = MIN(4, tsMReadPool.num); + tsMReadPool.readWorker = (SMReadWorker *)calloc(sizeof(SMReadWorker), tsMReadPool.num); + + if (tsMReadPool.readWorker == NULL) return -1; + for (int32_t i = 0; i < tsMReadPool.num; ++i) { + SMReadWorker *pWorker = tsMReadPool.readWorker + i; + pWorker->workerId = i; + } + + dPrint("dnode mread is opened"); + return 0; +} + +void dnodeCleanupMnodeRead() { + for (int32_t i = 0; i < tsMReadPool.num; ++i) { + SMReadWorker *pWorker = tsMReadPool.readWorker + i; + if (pWorker->thread) { + taosQsetThreadResume(tsMReadQset); + } + } + + for (int32_t i = 0; i < tsMReadPool.num; ++i) { + SMReadWorker *pWorker = tsMReadPool.readWorker + i; + if (pWorker->thread) { + pthread_join(pWorker->thread, NULL); + } + } + + taosCloseQset(tsMReadQset); + free(tsMReadPool.readWorker); + + dPrint("dnode mread is closed"); +} + +int32_t dnodeAllocateMnodeRqueue() { + tsMReadQueue = taosOpenQueue(); + if (tsMReadQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; + + taosAddIntoQset(tsMReadQset, tsMReadQueue, NULL); + + for (int32_t i = 0; i < tsMReadPool.num; ++i) { + SMReadWorker *pWorker = tsMReadPool.readWorker + i; + pWorker->workerId = i; + + pthread_attr_t thAttr; + pthread_attr_init(&thAttr); + pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); + + if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodeReadQueue, pWorker) != 0) { + dError("failed to create thread to process mread queue, reason:%s", strerror(errno)); + } + + pthread_attr_destroy(&thAttr); + dTrace("dnode mread worker:%d is launched, total:%d", pWorker->workerId, tsMReadPool.num); + } + + dTrace("dnode mread queue:%p is allocated", tsMReadQueue); + return TSDB_CODE_SUCCESS; +} + +void dnodeFreeMnodeRqueue() { + taosCloseQueue(tsMReadQueue); + tsMReadQueue = NULL; +} + +void dnodeDispatchToMnodeReadQueue(SRpcMsg *pMsg) { + if (!mnodeIsRunning() || tsMReadQueue == NULL) { + dnodeSendRediretMsg(pMsg); + return; + } + + SMnodeMsg *pRead = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); + pRead->rpcMsg = *pMsg; + taosWriteQitem(tsMReadQueue, TAOS_QTYPE_RPC, pRead); +} + +static void dnodeSendRpcMnodeReadRsp(SMnodeMsg *pRead, int32_t code) { + if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + + SRpcMsg rpcRsp = { + .handle = pRead->rpcMsg.handle, + .pCont = pRead->rspRet.rsp, + .contLen = pRead->rspRet.len, + .code = pRead->rspRet.code, + }; + + rpcSendResponse(&rpcRsp); + rpcFreeCont(pRead->rpcMsg.pCont); +} + +static void *dnodeProcessMnodeReadQueue(void *param) { + SMnodeMsg *pReadMsg; + int32_t type; + void * unUsed; + + while (1) { + if (taosReadQitemFromQset(tsMReadQset, &type, (void **)&pReadMsg, &unUsed) == 0) { + dTrace("dnodeProcessMnodeReadQueue: got no message from qset, exiting..."); + break; + } + + dTrace("%p, msg:%s will be processed", pReadMsg->rpcMsg.ahandle, taosMsg[pReadMsg->rpcMsg.msgType]); + int32_t code = mnodeProcessRead(pReadMsg); + dnodeSendRpcMnodeReadRsp(pReadMsg, code); + taosFreeQitem(pReadMsg); + } + + return NULL; +} diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c new file mode 100644 index 00000000000..b768b31b01c --- /dev/null +++ b/src/dnode/src/dnodeMWrite.c @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taoserror.h" +#include "taosmsg.h" +#include "tutil.h" +#include "tqueue.h" +#include "trpc.h" +#include "twal.h" +#include "tglobal.h" +#include "mnode.h" +#include "dnode.h" +#include "dnodeInt.h" +#include "dnodeVMgmt.h" +#include "dnodeMWrite.h" + +typedef struct { + pthread_t thread; + int32_t workerId; +} SMWriteWorker; + +typedef struct { + int32_t num; + SMWriteWorker *writeWorker; +} SMWriteWorkerPool; + +static SMWriteWorkerPool tsMWritePool; +static taos_qset tsMWriteQset; +static taos_queue tsMWriteQueue; + +static void *dnodeProcessMnodeWriteQueue(void *param); + +int32_t dnodeInitMnodeWrite() { + tsMWriteQset = taosOpenQset(); + + tsMWritePool.num = 1; + tsMWritePool.writeWorker = (SMWriteWorker *)calloc(sizeof(SMWriteWorker), tsMWritePool.num); + + if (tsMWritePool.writeWorker == NULL) return -1; + for (int32_t i = 0; i < tsMWritePool.num; ++i) { + SMWriteWorker *pWorker = tsMWritePool.writeWorker + i; + pWorker->workerId = i; + } + + dPrint("dnode mwrite is opened"); + return 0; +} + +void dnodeCleanupMnodeWrite() { + for (int32_t i = 0; i < tsMWritePool.num; ++i) { + SMWriteWorker *pWorker = tsMWritePool.writeWorker + i; + if (pWorker->thread) { + taosQsetThreadResume(tsMWriteQset); + } + } + + for (int32_t i = 0; i < tsMWritePool.num; ++i) { + SMWriteWorker *pWorker = tsMWritePool.writeWorker + i; + if (pWorker->thread) { + pthread_join(pWorker->thread, NULL); + } + } + + dPrint("dnode mwrite is closed"); +} + +int32_t dnodeAllocateMnodeRqueue() { + tsMWriteQueue = taosOpenQueue(); + if (tsMWriteQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; + + taosAddIntoQset(tsMWriteQset, tsMWriteQueue, NULL); + + for (int32_t i = 0; i < tsMWritePool.num; ++i) { + SMWriteWorker *pWorker = tsMWritePool.writeWorker + i; + pWorker->workerId = i; + + pthread_attr_t thAttr; + pthread_attr_init(&thAttr); + pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); + + if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodeWriteQueue, pWorker) != 0) { + dError("failed to create thread to process mwrite queue, reason:%s", strerror(errno)); + } + + pthread_attr_destroy(&thAttr); + dTrace("dnode mwrite worker:%d is launched, total:%d", pWorker->workerId, tsMWritePool.num); + } + + dTrace("dnode mwrite queue:%p is allocated", tsMWriteQueue); + return TSDB_CODE_SUCCESS; +} + +void dnodeFreeMnodeRqueue() { + taosCloseQueue(tsMWriteQueue); + tsMWriteQueue = NULL; +} + +void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg) { + if (!mnodeIsRunning() || tsMWriteQueue == NULL) { + dnodeSendRediretMsg(pMsg); + return; + } + + SMnodeMsg *pWrite = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); + pWrite->rpcMsg = *pMsg; + taosWriteQitem(tsMWriteQueue, TAOS_QTYPE_RPC, pWrite); +} + +static void dnodeSendRpcMnodeWriteRsp(SMnodeMsg *pWrite, int32_t code) { + if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + + SRpcMsg rpcRsp = { + .handle = pWrite->rpcMsg.handle, + .pCont = pWrite->rspRet.rsp, + .contLen = pWrite->rspRet.len, + .code = pWrite->rspRet.code, + }; + + rpcSendResponse(&rpcRsp); + rpcFreeCont(pWrite->rpcMsg.pCont); +} + +static void *dnodeProcessMnodeWriteQueue(void *param) { + SMnodeMsg *pWriteMsg; + int32_t type; + void * unUsed; + + while (1) { + if (taosReadQitemFromQset(tsMWriteQset, &type, (void **)&pWriteMsg, &unUsed) == 0) { + dTrace("dnodeProcessMnodeWriteQueue: got no message from qset, exiting..."); + break; + } + + dTrace("%p, msg:%s will be processed", pWriteMsg->rpcMsg.ahandle, taosMsg[pWriteMsg->rpcMsg.msgType]); + int32_t code = mnodeProcessWrite(pWriteMsg); + dnodeSendRpcMnodeWriteRsp(pWriteMsg, code); + taosFreeQitem(pWriteMsg); + } + + return NULL; +} diff --git a/src/dnode/src/dnodeMain.c b/src/dnode/src/dnodeMain.c index 68fe9869899..e9e9480aef1 100644 --- a/src/dnode/src/dnodeMain.c +++ b/src/dnode/src/dnodeMain.c @@ -21,12 +21,15 @@ #include "tglobal.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeMgmt.h" +#include "dnodeVMgmt.h" #include "dnodePeer.h" #include "dnodeModule.h" #include "dnodeVRead.h" -#include "dnodeShell.h" #include "dnodeVWrite.h" +#include "dnodeMRead.h" +#include "dnodeMWrite.h" +#include "dnodeMMgmt.h" +#include "dnodeShell.h" static int32_t dnodeInitStorage(); static void dnodeCleanupStorage(); @@ -65,8 +68,11 @@ int32_t dnodeInitSystem() { dPrint("start to initialize TDengine on %s", tsLocalEp); if (dnodeInitStorage() != 0) return -1; - if (dnodeInitRead() != 0) return -1; - if (dnodeInitWrite() != 0) return -1; + if (dnodeInitVnodeRead() != 0) return -1; + if (dnodeInitVnodeWrite() != 0) return -1; + if (dnodeInitMnodeRead() != 0) return -1; + if (dnodeInitMnodeWrite() != 0) return -1; + if (dnodeInitMnodeMgmt() != 0) return -1; if (dnodeInitClient() != 0) return -1; if (dnodeInitServer() != 0) return -1; if (dnodeInitMgmt() != 0) return -1; @@ -89,8 +95,11 @@ void dnodeCleanUpSystem() { dnodeCleanupMgmt(); dnodeCleanupServer(); dnodeCleanupClient(); - dnodeCleanupWrite(); - dnodeCleanupRead(); + dnodeCleanupMnodeMgmt(); + dnodeCleanupMnodeWrite(); + dnodeCleanupMnodeRead(); + dnodeCleanupVnodeWrite(); + dnodeCleanupVnodeRead(); dnodeCleanupStorage(); taos_cleanup(); taosCloseLog(); diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 4b28992aa49..442b5178468 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -32,7 +32,7 @@ #include "vnode.h" #include "mnode.h" #include "dnodeInt.h" -#include "dnodeMgmt.h" +#include "dnodeVMgmt.h" #include "dnodeVRead.h" #include "dnodeVWrite.h" #include "dnodeModule.h" @@ -274,13 +274,16 @@ void dnodeUpdateIpSet(SRpcIpSet *pIpSet) { tsMnodeIpSet = *pIpSet; } -void dnodeGetMnodeDnodeIpSet(void *ipSetRaw) { +void dnodeGetMnodeDnodeIpSet(void *ipSetRaw, bool encode) { SRpcIpSet *ipSet = ipSetRaw; ipSet->numOfIps = tsMnodeInfos.nodeNum; ipSet->inUse = tsMnodeInfos.inUse; for (int32_t i = 0; i < tsMnodeInfos.nodeNum; ++i) { taosGetFqdnPortFromEp(tsMnodeInfos.nodeInfos[i].nodeEp, ipSet->fqdn[i], &ipSet->port[i]); ipSet->port[i] += TSDB_PORT_DNODEDNODE; + if (encode) { + ipSet->port[i] = htons(ipSet->port[i]); + } } } @@ -590,3 +593,20 @@ int32_t dnodeGetDnodeId() { return tsDnodeCfg.dnodeId; } +void dnodeSendRediretMsg(SRpcMsg *rpcMsg) { + SRpcConnInfo connInfo; + rpcGetConnInfo(rpcMsg->handle, &connInfo); + + SRpcIpSet ipSet = {0}; + dnodeGetMnodeDnodeIpSet(&ipSet); + + dTrace("msg:%s will be redirected, dnodeIp:%s user:%s, numOfIps:%d inUse:%d", taosMsg[rpcMsg->msgType], + taosIpStr(connInfo.clientIp), connInfo.user, ipSet.numOfIps, ipSet.inUse); + + for (int i = 0; i < ipSet.numOfIps; ++i) { + dTrace("mnode index:%d %s:%d", i, ipSet.fqdn[i], ipSet.port[i]); + ipSet.port[i] = htons(ipSet.port[i]); + } + + rpcSendRedirectRsp(rpcMsg->handle, &ipSet); +} \ No newline at end of file diff --git a/src/dnode/src/dnodeMpeer.c b/src/dnode/src/dnodeMpeer.c new file mode 100644 index 00000000000..d1bfa3a0482 --- /dev/null +++ b/src/dnode/src/dnodeMpeer.c @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taoserror.h" +#include "taosmsg.h" +#include "tutil.h" +#include "tqueue.h" +#include "trpc.h" +#include "twal.h" +#include "tglobal.h" +#include "mnode.h" +#include "dnode.h" +#include "dnodeInt.h" +#include "dnodeVMgmt.h" +#include "dnodeMWrite.h" + +typedef struct { + pthread_t thread; + int32_t workerId; +} SMMgmtWorker; + +typedef struct { + int32_t num; + SMMgmtWorker *mgmtWorker; +} SMMgmtWorkerPool; + +static SMMgmtWorkerPool tsMMgmtPool; +static taos_qset tsMMgmtQset; +static taos_queue tsMMgmtQueue; + +static void *dnodeProcessMnodeMgmtQueue(void *param); + +int32_t dnodeInitMnodeMgmt() { + tsMMgmtQset = taosOpenQset(); + + tsMMgmtPool.num = 1; + tsMMgmtPool.mgmtWorker = (SMMgmtWorker *)calloc(sizeof(SMMgmtWorker), tsMMgmtPool.num); + + if (tsMMgmtPool.mgmtWorker == NULL) return -1; + for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { + SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; + pWorker->workerId = i; + } + + dPrint("dnode mmgmt is opened"); + return 0; +} + +void dnodeCleanupMnodeMgmt() { + for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { + SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; + if (pWorker->thread) { + taosQsetThreadResume(tsMMgmtQset); + } + } + + for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { + SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; + if (pWorker->thread) { + pthread_join(pWorker->thread, NULL); + } + } + + dPrint("dnode mmgmt is closed"); +} + +int32_t dnodeAllocateMnodeMqueue() { + tsMMgmtQueue = taosOpenQueue(); + if (tsMMgmtQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; + + taosAddIntoQset(tsMMgmtQset, tsMMgmtQueue, NULL); + + for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { + SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; + pWorker->workerId = i; + + pthread_attr_t thAttr; + pthread_attr_init(&thAttr); + pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); + + if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodeMgmtQueue, pWorker) != 0) { + dError("failed to create thread to process mmgmt queue, reason:%s", strerror(errno)); + } + + pthread_attr_destroy(&thAttr); + dTrace("dnode mmgmt worker:%d is launched, total:%d", pWorker->workerId, tsMMgmtPool.num); + } + + dTrace("dnode mmgmt queue:%p is allocated", tsMMgmtQueue); + return TSDB_CODE_SUCCESS; +} + +void dnodeFreeMnodeRqueue() { + taosCloseQueue(tsMMgmtQueue); + tsMMgmtQueue = NULL; +} + +void dnodeDispatchToMnodeMgmtQueue(SRpcMsg *pMsg) { + if (!mnodeIsRunning() || tsMMgmtQueue == NULL) { + dnodeSendRediretMsg(pMsg); + return; + } + + SMnodeMsg *pMgmt = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); + pMgmt->rpcMsg = *pMsg; + taosWriteQitem(tsMMgmtQueue, TAOS_QTYPE_RPC, pMgmt); +} + +static void dnodeSendRpcMnodeMgmtRsp(SMnodeMsg *pMgmt, int32_t code) { + if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + + SRpcMsg rpcRsp = { + .handle = pMgmt->rpcMsg.handle, + .pCont = pMgmt->rspRet.rsp, + .contLen = pMgmt->rspRet.len, + .code = pMgmt->rspRet.code, + }; + + rpcSendResponse(&rpcRsp); + rpcFreeCont(pMgmt->rpcMsg.pCont); +} + +static void *dnodeProcessMnodeMgmtQueue(void *param) { + SMnodeMsg *pMgmtMsg; + int32_t type; + void * unUsed; + + while (1) { + if (taosReadQitemFromQset(tsMMgmtQset, &type, (void **)&pMgmtMsg, &unUsed) == 0) { + dTrace("dnodeProcessMnodeMgmtQueue: got no message from qset, exiting..."); + break; + } + + dTrace("%p, msg:%s will be processed", pMgmtMsg->rpcMsg.ahandle, taosMsg[pMgmtMsg->rpcMsg.msgType]); + int32_t code = mnodeProcessMgmt(pMgmtMsg); + dnodeSendRpcMnodeMgmtRsp(pMgmtMsg, code); + taosFreeQitem(pMgmtMsg); + } + + return NULL; +} diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c index c91da4953d2..9695de12099 100644 --- a/src/dnode/src/dnodePeer.c +++ b/src/dnode/src/dnodePeer.c @@ -25,8 +25,10 @@ #include "trpc.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeMgmt.h" +#include "dnodeVMgmt.h" #include "dnodeVWrite.h" +#include "dnodeMRead.h" +#include "dnodeMWrite.h" #include "mnode.h" extern void dnodeUpdateIpSet(SRpcIpSet *pIpSet); @@ -48,11 +50,11 @@ int32_t dnodeInitServer() { dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_ALTER_STREAM] = dnodeDispatchToDnodeMgmt; dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CONFIG_DNODE] = dnodeDispatchToDnodeMgmt; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_TABLE] = mgmtProcessReqMsgFromDnode; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = mgmtProcessReqMsgFromDnode; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = mgmtProcessReqMsgFromDnode; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = mgmtProcessReqMsgFromDnode; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_AUTH] = mgmtProcessReqMsgFromDnode; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_TABLE] = dnodeDispatchToMnodeReadQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = dnodeDispatchToMnodeReadQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_AUTH] = dnodeDispatchToMnodeReadQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = dnodeDispatchToMnodeWriteQueue; SRpcInit rpcInit; memset(&rpcInit, 0, sizeof(rpcInit)); @@ -167,6 +169,6 @@ void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg) { void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp) { SRpcIpSet ipSet = {0}; - dnodeGetMnodeDnodeIpSet(&ipSet); + dnodeGetMnodeDnodeIpSet(&ipSet, false); rpcSendRecv(tsDnodeClientRpc, &ipSet, rpcMsg, rpcRsp); } diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index fbed1648399..031d860b1ec 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -26,6 +26,8 @@ #include "dnodeInt.h" #include "dnodeVRead.h" #include "dnodeVWrite.h" +#include "dnodeMRead.h" +#include "dnodeMWrite.h" #include "dnodeShell.h" static void (*dnodeProcessShellMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *); @@ -43,35 +45,35 @@ int32_t dnodeInitShell() { dnodeProcessShellMsgFp[TSDB_MSG_TYPE_FETCH] = dnodeDispatchToVnodeReadQueue; // the following message shall be treated as mnode write - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONNECT] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_ACCT] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_ACCT] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_ACCT] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_USER] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_USER] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_USER] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_DNODE]= mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_DNODE] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_DB] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_DB] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_DB] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_TABLE]= mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_TABLE] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_TABLE] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_STREAM]= mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_QUERY] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_STREAM] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_CONN] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = mgmtProcessMsgFromShell; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_ACCT] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_ACCT] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_ACCT] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_USER] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_USER] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_USER] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_DNODE]= dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_DNODE] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_DB] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_DB] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_DB] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CREATE_TABLE]= dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_DROP_TABLE] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_TABLE] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_ALTER_STREAM]= dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_QUERY] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_STREAM] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_CONN] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = dnodeDispatchToMnodeWriteQueue; // the following message shall be treated as mnode query - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_USE_DB] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLE_META] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_STABLE_VGROUP]= mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLES_META] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_SHOW] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_RETRIEVE] = mgmtProcessMsgFromShell; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= mgmtProcessMsgFromShell; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONNECT] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_USE_DB] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLE_META] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_STABLE_VGROUP]= dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLES_META] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_SHOW] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_RETRIEVE] = dnodeDispatchToMnodeReadQueue; + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= dnodeDispatchToMnodeReadQueue; int32_t numOfThreads = tsNumOfCores * tsNumOfThreadsPerCore; numOfThreads = (int32_t) ((1.0 - tsRatioOfQueryThreads) * numOfThreads / 2.0); diff --git a/src/dnode/src/dnodeVRead.c b/src/dnode/src/dnodeVRead.c index 81d14702b19..34bbdb57885 100644 --- a/src/dnode/src/dnodeVRead.c +++ b/src/dnode/src/dnodeVRead.c @@ -23,7 +23,7 @@ #include "twal.h" #include "tglobal.h" #include "dnodeInt.h" -#include "dnodeMgmt.h" +#include "dnodeVMgmt.h" #include "dnodeVRead.h" #include "vnode.h" diff --git a/src/dnode/src/dnodeVWrite.c b/src/dnode/src/dnodeVWrite.c index bf4e49e84d9..3783b857d15 100644 --- a/src/dnode/src/dnodeVWrite.c +++ b/src/dnode/src/dnodeVWrite.c @@ -27,7 +27,7 @@ #include "tdataformat.h" #include "dnodeInt.h" #include "dnodeVWrite.h" -#include "dnodeMgmt.h" +#include "dnodeVMgmt.h" typedef struct { taos_qall qall; diff --git a/src/inc/dnode.h b/src/inc/dnode.h index 9884cf28707..bcab82cc5d7 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -45,7 +45,7 @@ void dnodeSendRpcWriteRsp(void *pVnode, void *param, int32_t code); bool dnodeIsFirstDeploy(); char *dnodeGetMnodeMasterEp(); -void dnodeGetMnodeDnodeIpSet(void *ipSet); +void dnodeGetMnodeDnodeIpSet(void *ipSet, bool encode); void * dnodeGetMnodeInfos(); int32_t dnodeGetDnodeId(); diff --git a/src/inc/mnode.h b/src/inc/mnode.h index 48b1ac97bdb..f025cb5e8a1 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -20,17 +20,38 @@ extern "C" { #endif +typedef struct { + int len; + int code; + void *rsp; +} SMnodeRsp; + +typedef struct { + SRpcMsg rpcMsg; + SMnodeRsp rpcRsp; +} SMnodeMsg; + +SMnodeMsg *mnodeCreateMsg(SRpcMsg *rpcMsg); +bool mnodeInitMsg(SMnodeMsg *pMsg); +void mnodeRleaseMsg(SMnodeMsg *pMsg); + int32_t mgmtInitSystem(); int32_t mgmtStartSystem(); void mgmtCleanUpSystem(); void mgmtStopSystem(); void sdbUpdateSync(); +void* mnodeGetRqueue(void *); +void* mnodeGetWqueue(int32_t vgId); +bool mnodeIsRunning(); +int32_t mnodeProcessRead(SMnodeMsg *pMsg); +int32_t mnodeProcessWrite(SMnodeMsg *pMsg); +int32_t mnodeProcessMgmt(SMnodeMsg *pMsg); + int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey); void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg); void mgmtProcessReqMsgFromDnode(SRpcMsg *rpcMsg); - #ifdef __cplusplus } #endif diff --git a/src/mnode/inc/mgmtAcct.h b/src/mnode/inc/mnodeAcct.h similarity index 100% rename from src/mnode/inc/mgmtAcct.h rename to src/mnode/inc/mnodeAcct.h diff --git a/src/mnode/inc/mgmtDClient.h b/src/mnode/inc/mnodeDClient.h similarity index 100% rename from src/mnode/inc/mgmtDClient.h rename to src/mnode/inc/mnodeDClient.h diff --git a/src/mnode/inc/mgmtDb.h b/src/mnode/inc/mnodeDb.h similarity index 100% rename from src/mnode/inc/mgmtDb.h rename to src/mnode/inc/mnodeDb.h diff --git a/src/mnode/inc/mgmtDef.h b/src/mnode/inc/mnodeDef.h similarity index 99% rename from src/mnode/inc/mgmtDef.h rename to src/mnode/inc/mnodeDef.h index 9d3e46205d1..07920403b18 100644 --- a/src/mnode/inc/mgmtDef.h +++ b/src/mnode/inc/mnodeDef.h @@ -251,7 +251,7 @@ typedef struct { SDbObj *pDb; SVgObj *pVgroup; STableObj *pTable; -} SQueuedMsg; +} SMnodeMsg; #ifdef __cplusplus } diff --git a/src/mnode/inc/mgmtDnode.h b/src/mnode/inc/mnodeDnode.h similarity index 100% rename from src/mnode/inc/mgmtDnode.h rename to src/mnode/inc/mnodeDnode.h diff --git a/src/mnode/inc/mgmtInt.h b/src/mnode/inc/mnodeInt.h similarity index 100% rename from src/mnode/inc/mgmtInt.h rename to src/mnode/inc/mnodeInt.h diff --git a/src/mnode/inc/mgmtMnode.h b/src/mnode/inc/mnodeMnode.h similarity index 93% rename from src/mnode/inc/mgmtMnode.h rename to src/mnode/inc/mnodeMnode.h index 0973aa6ea67..123df73fb22 100644 --- a/src/mnode/inc/mgmtMnode.h +++ b/src/mnode/inc/mnodeMnode.h @@ -42,7 +42,9 @@ void mgmtIncMnodeRef(struct SMnodeObj *pMnode); void mgmtDecMnodeRef(struct SMnodeObj *pMnode); char * mgmtGetMnodeRoleStr(); -void mgmtGetMnodeIpSet(SRpcIpSet *ipSet); +void mgmtGetMnodeIpSetForPeer(SRpcIpSet *ipSet); +void mgmtGetMnodeIpSetForShell(SRpcIpSet *ipSet); + void mgmtGetMnodeInfos(void *mnodes); void mgmtUpdateMnodeIpSet(); diff --git a/src/mnode/inc/mgmtProfile.h b/src/mnode/inc/mnodeProfile.h similarity index 100% rename from src/mnode/inc/mgmtProfile.h rename to src/mnode/inc/mnodeProfile.h diff --git a/src/mnode/inc/mgmtSdb.h b/src/mnode/inc/mnodeSdb.h similarity index 100% rename from src/mnode/inc/mgmtSdb.h rename to src/mnode/inc/mnodeSdb.h diff --git a/src/mnode/inc/mgmtServer.h b/src/mnode/inc/mnodeServer.h similarity index 93% rename from src/mnode/inc/mgmtServer.h rename to src/mnode/inc/mnodeServer.h index 08e4463ad83..69df500bbc5 100644 --- a/src/mnode/inc/mgmtServer.h +++ b/src/mnode/inc/mnodeServer.h @@ -20,8 +20,8 @@ extern "C" { #endif -int32_t mgmtInitServer(); -void mgmtCleanupServer(); +int32_t mnodeInitMgmt(); +void mgmtCleanupMgmt(); #ifdef __cplusplus } diff --git a/src/mnode/inc/mgmtShell.h b/src/mnode/inc/mnodeShell.h similarity index 75% rename from src/mnode/inc/mgmtShell.h rename to src/mnode/inc/mnodeShell.h index c3ae3e96e88..976dc360f37 100644 --- a/src/mnode/inc/mgmtShell.h +++ b/src/mnode/inc/mnodeShell.h @@ -23,15 +23,15 @@ extern "C" { int32_t mgmtInitShell(); void mgmtCleanUpShell(); -void mgmtAddShellMsgHandle(uint8_t msgType, void (*fp)(SQueuedMsg *queuedMsg)); +void mgmtAddShellMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *queuedMsg)); typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn); -void mgmtAddShellShowMetaHandle(uint8_t showType, SShowMetaFp fp); -void mgmtAddShellShowRetrieveHandle(uint8_t showType, SShowRetrieveFp fp); +void mnodeAddShowMetaHandle(uint8_t showType, SShowMetaFp fp); +void mnodeAddShowRetrieveHandle(uint8_t showType, SShowRetrieveFp fp); -void mgmtAddToShellQueue(SQueuedMsg *queuedMsg); -void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg); +void mgmtAddToShellQueue(SMnodeMsg *queuedMsg); +void mgmtDealyedAddToShellQueue(SMnodeMsg *queuedMsg); void mgmtSendSimpleResp(void *thandle, int32_t code); bool mgmtCheckQhandle(uint64_t qhandle); @@ -39,8 +39,8 @@ void *mgmtSaveQhandle(void *qhandle, int32_t size); void mgmtFreeQhandle(void *qhandle, bool forceRemove); void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg); -void *mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg); -void mgmtFreeQueuedMsg(SQueuedMsg *pMsg); +void *mgmtCloneQueuedMsg(SMnodeMsg *pSrcMsg); +void mgmtFreeQueuedMsg(SMnodeMsg *pMsg); #ifdef __cplusplus } diff --git a/src/mnode/inc/mgmtTable.h b/src/mnode/inc/mnodeTable.h similarity index 100% rename from src/mnode/inc/mgmtTable.h rename to src/mnode/inc/mnodeTable.h diff --git a/src/mnode/inc/mgmtUser.h b/src/mnode/inc/mnodeUser.h similarity index 100% rename from src/mnode/inc/mgmtUser.h rename to src/mnode/inc/mnodeUser.h diff --git a/src/mnode/inc/mgmtVgroup.h b/src/mnode/inc/mnodeVgroup.h similarity index 97% rename from src/mnode/inc/mgmtVgroup.h rename to src/mnode/inc/mnodeVgroup.h index ab0345cd203..948aec06e59 100644 --- a/src/mnode/inc/mgmtVgroup.h +++ b/src/mnode/inc/mnodeVgroup.h @@ -35,7 +35,7 @@ void * mgmtGetNextVgroup(void *pIter, SVgObj **pVgroup); void mgmtUpdateVgroup(SVgObj *pVgroup); void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *dnodeId, SVnodeLoad *pVload); -void mgmtCreateVgroup(SQueuedMsg *pMsg, SDbObj *pDb); +void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb); void mgmtDropVgroup(SVgObj *pVgroup, void *ahandle); void mgmtAlterVgroup(SVgObj *pVgroup, void *ahandle); SVgObj *mgmtGetAvailableVgroup(SDbObj *pDb); diff --git a/src/mnode/src/mgmtServer.c b/src/mnode/src/mgmtServer.c deleted file mode 100644 index 7810189e342..00000000000 --- a/src/mnode/src/mgmtServer.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "os.h" -#include "taoserror.h" -#include "trpc.h" -#include "tsched.h" -#include "tsystem.h" -#include "tutil.h" -#include "tgrant.h" -#include "tbalance.h" -#include "tglobal.h" -#include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtDb.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtShell.h" -#include "mgmtSdb.h" -#include "mgmtTable.h" -#include "mgmtVgroup.h" - -static void (*mgmtProcessDnodeMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *rpcMsg); -static void *tsMgmtServerQhandle = NULL; - -int32_t mgmtInitServer() { - - tsMgmtServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS"); - - mPrint("server connection to dnode is opened"); - return 0; -} - -void mgmtCleanupServer() { - if (tsMgmtServerQhandle) { - taosCleanUpScheduler(tsMgmtServerQhandle); - tsMgmtServerQhandle = NULL; - } -} - -void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) { - mgmtProcessDnodeMsgFp[msgType] = fp; -} - -static void mgmtProcessRequestFromDnode(SSchedMsg *sched) { - SRpcMsg *pMsg = sched->msg; - (*mgmtProcessDnodeMsgFp[pMsg->msgType])(pMsg); - rpcFreeCont(pMsg->pCont); - free(pMsg); -} - -static void mgmtAddToServerQueue(SRpcMsg *pMsg) { - SSchedMsg schedMsg; - schedMsg.msg = pMsg; - schedMsg.fp = mgmtProcessRequestFromDnode; - taosScheduleTask(tsMgmtServerQhandle, &schedMsg); -} - -void mgmtProcessReqMsgFromDnode(SRpcMsg *rpcMsg) { - if (mgmtProcessDnodeMsgFp[rpcMsg->msgType] == NULL) { - mError("%s is not processed in mnode", taosMsg[rpcMsg->msgType]); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_MSG_NOT_PROCESSED); - rpcFreeCont(rpcMsg->pCont); - } - - if (rpcMsg->pCont == NULL) { - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN); - return; - } - - if (!sdbIsMaster()) { - SRpcConnInfo connInfo; - rpcGetConnInfo(rpcMsg->handle, &connInfo); - - SRpcIpSet ipSet = {0}; - dnodeGetMnodeDnodeIpSet(&ipSet); - for (int i = 0; i < ipSet.numOfIps; ++i) - ipSet.port[i] = htons(ipSet.port[i]); - - mTrace("conn from dnode ip:%s user:%s redirect msg, inUse:%d", taosIpStr(connInfo.clientIp), connInfo.user, ipSet.inUse); - for (int32_t i = 0; i < ipSet.numOfIps; ++i) { - mTrace("mnode index:%d %s:%d", i, ipSet.fqdn[i], htons(ipSet.port[i])); - } - rpcSendRedirectRsp(rpcMsg->handle, &ipSet); - return; - } - - SRpcMsg *pMsg = malloc(sizeof(SRpcMsg)); - memcpy(pMsg, rpcMsg, sizeof(SRpcMsg)); - mgmtAddToServerQueue(pMsg); -} - diff --git a/src/mnode/src/mgmtAcct.c b/src/mnode/src/mnodeAcct.c similarity index 100% rename from src/mnode/src/mgmtAcct.c rename to src/mnode/src/mnodeAcct.c diff --git a/src/mnode/src/mgmtBalance.c b/src/mnode/src/mnodeBalance.c similarity index 100% rename from src/mnode/src/mgmtBalance.c rename to src/mnode/src/mnodeBalance.c diff --git a/src/mnode/src/mgmtDb.c b/src/mnode/src/mnodeDb.c similarity index 98% rename from src/mnode/src/mgmtDb.c rename to src/mnode/src/mnodeDb.c index df18fe8786f..09e53d13c9d 100644 --- a/src/mnode/src/mgmtDb.c +++ b/src/mnode/src/mnodeDb.c @@ -41,13 +41,13 @@ static void * tsDbSdb = NULL; static int32_t tsDbUpdateSize; static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate); -static void mgmtDropDb(SQueuedMsg *newMsg); +static void mgmtDropDb(SMnodeMsg *newMsg); static int32_t mgmtSetDbDropping(SDbObj *pDb); static int32_t mgmtGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mgmtRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessCreateDbMsg(SQueuedMsg *pMsg); -static void mgmtProcessAlterDbMsg(SQueuedMsg *pMsg); -static void mgmtProcessDropDbMsg(SQueuedMsg *pMsg); +static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg); +static void mgmtProcessAlterDbMsg(SMnodeMsg *pMsg); +static void mgmtProcessDropDbMsg(SMnodeMsg *pMsg); static int32_t mgmtDbActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); @@ -150,8 +150,8 @@ int32_t mgmtInitDbs() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DB, mgmtProcessCreateDbMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_DB, mgmtProcessAlterDbMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_DB, mgmtProcessDropDbMsg); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_DB, mgmtGetDbMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_DB, mgmtRetrieveDbs); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DB, mgmtGetDbMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DB, mgmtRetrieveDbs); mTrace("table:dbs table is created"); return 0; @@ -748,7 +748,7 @@ static int32_t mgmtSetDbDropping(SDbObj *pDb) { return code; } -static void mgmtProcessCreateDbMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg) { SCMCreateDbMsg *pCreate = pMsg->pCont; pCreate->maxTables = htonl(pCreate->maxTables); @@ -935,7 +935,7 @@ static int32_t mgmtAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { return TSDB_CODE_SUCCESS; } -static void mgmtProcessAlterDbMsg(SQueuedMsg *pMsg) { +static void mgmtProcessAlterDbMsg(SMnodeMsg *pMsg) { SCMAlterDbMsg *pAlter = pMsg->pCont; mTrace("db:%s, alter db msg is received from thandle:%p", pAlter->db, pMsg->thandle); @@ -963,7 +963,7 @@ static void mgmtProcessAlterDbMsg(SQueuedMsg *pMsg) { mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); } -static void mgmtDropDb(SQueuedMsg *pMsg) { +static void mgmtDropDb(SMnodeMsg *pMsg) { SDbObj *pDb = pMsg->pDb; mPrint("db:%s, drop db from sdb", pDb->name); @@ -980,7 +980,7 @@ static void mgmtDropDb(SQueuedMsg *pMsg) { mgmtSendSimpleResp(pMsg->thandle, code); } -static void mgmtProcessDropDbMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropDbMsg(SMnodeMsg *pMsg) { SCMDropDbMsg *pDrop = pMsg->pCont; mTrace("db:%s, drop db msg is received from thandle:%p", pDrop->db, pMsg->thandle); @@ -1022,7 +1022,7 @@ static void mgmtProcessDropDbMsg(SQueuedMsg *pMsg) { SVgObj *pVgroup = pMsg->pDb->pHead; if (pVgroup != NULL) { mPrint("vgId:%d, will be dropped", pVgroup->vgId); - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(pMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); newMsg->ahandle = pVgroup; newMsg->expected = pVgroup->numOfVnodes; mgmtDropVgroup(pVgroup, newMsg); diff --git a/src/mnode/src/mgmtDnode.c b/src/mnode/src/mnodeDnode.c similarity index 96% rename from src/mnode/src/mgmtDnode.c rename to src/mnode/src/mnodeDnode.c index 93c8276b14f..ce0b1d07e9d 100644 --- a/src/mnode/src/mgmtDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -42,9 +42,9 @@ extern void * tsMnodeSdb; extern void * tsVgroupSdb; static int32_t mgmtCreateDnode(char *ep); -static void mgmtProcessCreateDnodeMsg(SQueuedMsg *pMsg); -static void mgmtProcessDropDnodeMsg(SQueuedMsg *pMsg); -static void mgmtProcessCfgDnodeMsg(SQueuedMsg *pMsg); +static void mgmtProcessCreateDnodeMsg(SMnodeMsg *pMsg); +static void mgmtProcessDropDnodeMsg(SMnodeMsg *pMsg); +static void mgmtProcessCfgDnodeMsg(SMnodeMsg *pMsg); static void mgmtProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) ; static void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg); static int32_t mgmtGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); @@ -153,14 +153,14 @@ int32_t mgmtInitDnodes() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CONFIG_DNODE, mgmtProcessCfgDnodeMsg); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP, mgmtProcessCfgDnodeMsgRsp); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_STATUS, mgmtProcessDnodeStatusMsg); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_MODULE, mgmtGetModuleMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_MODULE, mgmtRetrieveModules); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtGetConfigMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtRetrieveConfigs); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_VNODES, mgmtGetVnodeMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_VNODES, mgmtRetrieveVnodes); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_DNODE, mgmtGetDnodeMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_DNODE, mgmtRetrieveDnodes); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MODULE, mgmtGetModuleMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MODULE, mgmtRetrieveModules); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtGetConfigMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtRetrieveConfigs); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VNODES, mgmtGetVnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VNODES, mgmtRetrieveVnodes); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DNODE, mgmtGetDnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DNODE, mgmtRetrieveDnodes); mTrace("table:dnodes table is created"); return 0; @@ -236,7 +236,7 @@ void mgmtUpdateDnode(SDnodeObj *pDnode) { sdbUpdateRow(&oper); } -void mgmtProcessCfgDnodeMsg(SQueuedMsg *pMsg) { +void mgmtProcessCfgDnodeMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMCfgDnodeMsg *pCmCfgDnode = pMsg->pCont; @@ -451,7 +451,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) { #endif } -static void mgmtProcessCreateDnodeMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateDnodeMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMCreateDnodeMsg *pCreate = pMsg->pCont; @@ -472,7 +472,7 @@ static void mgmtProcessCreateDnodeMsg(SQueuedMsg *pMsg) { } -static void mgmtProcessDropDnodeMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropDnodeMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMDropDnodeMsg *pDrop = pMsg->pCont; diff --git a/src/mnode/src/mgmtGrant.c b/src/mnode/src/mnodeGrant.c similarity index 100% rename from src/mnode/src/mgmtGrant.c rename to src/mnode/src/mnodeGrant.c diff --git a/src/mnode/src/mgmtMain.c b/src/mnode/src/mnodeMain.c similarity index 80% rename from src/mnode/src/mgmtMain.c rename to src/mnode/src/mnodeMain.c index 2a8e139eecc..204a8a638ea 100644 --- a/src/mnode/src/mgmtMain.c +++ b/src/mnode/src/mnodeMain.c @@ -35,9 +35,13 @@ #include "mgmtTable.h" #include "mgmtShell.h" -extern void *tsMgmtTmr; +static void *tsMgmtTmr; static bool tsMgmtIsRunning = false; +static void mnodeInitTimer(); +static void mnodeCleanupTimer(); +static bool mnodeNeedStart() ; + int32_t mgmtStartSystem() { if (tsMgmtIsRunning) { mPrint("TDengine mgmt module already started..."); @@ -99,7 +103,7 @@ int32_t mgmtStartSystem() { return -1; } - if (mgmtInitServer() < 0) { + if (mnodeInitMgmt() < 0) { return -1; } @@ -112,16 +116,11 @@ int32_t mgmtStartSystem() { } int32_t mgmtInitSystem() { - if (mgmtInitShell() != 0) { - mError("failed to init shell"); - return -1; - } - - struct stat dirstat; - bool fileExist = (stat(tsMnodeDir, &dirstat) == 0); - bool asMaster = (strcmp(tsFirst, tsLocalEp) == 0); + mnodeInitTimer(); + mnodeInitRead(); + mnodeInitWrite(); - if (asMaster || fileExist) { + if (mnodeNeedStart()) { if (mgmtStartSystem() != 0) { return -1; } @@ -133,8 +132,12 @@ int32_t mgmtInitSystem() { void mgmtCleanUpSystem() { mPrint("starting to clean up mgmt"); tsMgmtIsRunning = false; - mgmtCleanUpShell(); - mgmtCleanupServer(); + + mnodeCleanupTimer(); + mnodeCleanupRead(); + mnodeCleanupWrite(); + + mgmtCleanupMgmt(); grantCleanUp(); balanceCleanUp(); sdbCleanUp(); @@ -153,9 +156,43 @@ void mgmtStopSystem() { mTrace("it is a master mgmt node, it could not be stopped"); return; } + mgmtCleanUpSystem(); mPrint("mgmt file is removed"); remove(tsMnodeDir); } + + + +void* mnodeGetWqueue(int32_t vgId) { + +} + + + +static void mnodeInitTimer() { + if (tsMgmtTmr != NULL) { + tsMgmtTmr = taosTmrInit((tsMaxShellConns)*3, 200, 3600000, "MND"); + } +} + +static void mnodeCleanupTimer() { + if (tsMgmtTmr != NULL) { + taosTmrCleanUp(tsMgmtTmr); + tsMgmtTmr = NULL; + } +} + +static bool mnodeNeedStart() { + struct stat dirstat; + bool fileExist = (stat(tsMnodeDir, &dirstat) == 0); + bool asMaster = (strcmp(tsFirst, tsLocalEp) == 0); + + if (asMaster || fileExist) { + return true; + } + + return false; +} diff --git a/src/mnode/src/mnodeMgmt.c b/src/mnode/src/mnodeMgmt.c new file mode 100644 index 00000000000..88334624065 --- /dev/null +++ b/src/mnode/src/mnodeMgmt.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taoserror.h" +#include "trpc.h" +#include "tsched.h" +#include "tsystem.h" +#include "tutil.h" +#include "tgrant.h" +#include "tbalance.h" +#include "tglobal.h" +#include "dnode.h" +#include "mgmtDef.h" +#include "mgmtInt.h" +#include "mgmtDb.h" +#include "mgmtMnode.h" +#include "mgmtProfile.h" +#include "mgmtShell.h" +#include "mgmtSdb.h" +#include "mgmtTable.h" +#include "mgmtVgroup.h" + +static void (*tsMnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); + +void mnodeAddMgmtMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { + tsMnodeProcessMgmtMsgFp[msgType] = fp; +} + +int32_t mnodeProcessMgmt(SMnodeMsg *pMsg) { + SRpcMsg *rpcMsg = &pMsg->rpcMsg; + if (rpcMsg->pCont == NULL) { + mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_INVALID_MSG_LEN; + } + + if (!sdbIsMaster()) { + SMnodeRsp *rpcRsp = &pMsg->rpcRsp; + SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); + mgmtGetMnodeIpSetForPeer(ipSet); + rpcRsp->rsp = ipSet; + rpcRsp->len = sizeof(SRpcIpSet); + + mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + for (int32_t i = 0; i < ipSet->numOfIps; ++i) { + mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); + } + + return TSDB_CODE_REDIRECT; + } + + if (tsMnodeProcessMgmtMsgFp[rpcMsg->msgType] == NULL) { + mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_MSG_NOT_PROCESSED; + } + + return (*tsMnodeProcessMgmtMsgFp[rpcMsg->msgType])(rpcMsg, ); +} diff --git a/src/mnode/src/mgmtMnode.c b/src/mnode/src/mnodeMnode.c similarity index 98% rename from src/mnode/src/mgmtMnode.c rename to src/mnode/src/mnodeMnode.c index 6471b7f182b..aa028f594bf 100644 --- a/src/mnode/src/mgmtMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -154,8 +154,8 @@ int32_t mgmtInitMnodes() { return -1; } - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_MNODE, mgmtGetMnodeMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_MNODE, mgmtRetrieveMnodes); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MNODE, mgmtGetMnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MNODE, mgmtRetrieveMnodes); mTrace("table:mnodes table is created"); return TSDB_CODE_SUCCESS; diff --git a/src/mnode/src/mgmtProfile.c b/src/mnode/src/mnodeProfile.c similarity index 97% rename from src/mnode/src/mgmtProfile.c rename to src/mnode/src/mnodeProfile.c index 6667bff0524..3cf340db4a1 100644 --- a/src/mnode/src/mgmtProfile.c +++ b/src/mnode/src/mnodeProfile.c @@ -672,7 +672,7 @@ int32_t mgmtRetrieveConns(SShowObj *pShow, char *data, int32_t rows, void *pConn return numOfRows; } -void mgmtProcessKillQueryMsg(SQueuedMsg *pMsg) { +void mgmtProcessKillQueryMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); @@ -696,7 +696,7 @@ void mgmtProcessKillQueryMsg(SQueuedMsg *pMsg) { mgmtDecUserRef(pUser); } -void mgmtProcessKillStreamMsg(SQueuedMsg *pMsg) { +void mgmtProcessKillStreamMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); @@ -720,7 +720,7 @@ void mgmtProcessKillStreamMsg(SQueuedMsg *pMsg) { mgmtDecUserRef(pUser); } -void mgmtProcessKillConnectionMsg(SQueuedMsg *pMsg) { +void mgmtProcessKillConnectionMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); @@ -745,12 +745,12 @@ void mgmtProcessKillConnectionMsg(SQueuedMsg *pMsg) { } int32_t mgmtInitProfile() { - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mgmtGetQueryMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mgmtRetrieveQueries); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mgmtGetConnsMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mgmtRetrieveConns); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mgmtGetStreamMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mgmtRetrieveStreams); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mgmtGetQueryMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mgmtRetrieveQueries); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mgmtGetConnsMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mgmtRetrieveConns); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mgmtGetStreamMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mgmtRetrieveStreams); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mgmtProcessKillQueryMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mgmtProcessKillStreamMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mgmtProcessKillConnectionMsg); diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c new file mode 100644 index 00000000000..8d06113f8a8 --- /dev/null +++ b/src/mnode/src/mnodeRead.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taosdef.h" +#include "tsched.h" +#include "tbalance.h" +#include "tgrant.h" +#include "ttimer.h" +#include "tglobal.h" +#include "mnode.h" +#include "dnode.h" +#include "mgmtDef.h" +#include "mgmtInt.h" +#include "mgmtServer.h" +#include "mgmtAcct.h" +#include "mgmtDnode.h" +#include "mgmtMnode.h" +#include "mgmtDb.h" +#include "mgmtSdb.h" +#include "mgmtVgroup.h" +#include "mgmtUser.h" +#include "mgmtTable.h" +#include "mgmtShell.h" + +static void (*tsMnodeProcessReadMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); + +void mnodeAddReadMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { + tsMnodeProcessReadMsgFp[msgType] = fp; +} + +int32_t mnodeProcessRead(SMnodeMsg *pMsg) { + SRpcMsg *rpcMsg = &pMsg->rpcMsg; + if (rpcMsg->pCont == NULL) { + mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_INVALID_MSG_LEN; + } + + if (!sdbIsMaster()) { + SMnodeRsp *rpcRsp = &pMsg->rpcRsp; + SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); + mgmtGetMnodeIpSetForShell(ipSet); + rpcRsp->rsp = ipSet; + rpcRsp->len = sizeof(SRpcIpSet); + + mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + for (int32_t i = 0; i < ipSet->numOfIps; ++i) { + mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); + } + + return TSDB_CODE_REDIRECT; + } + + if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { + mError("%p, msg:%s not processed, grant time expired", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_GRANT_EXPIRED; + } + + if (tsMnodeProcessReadMsgFp[rpcMsg->msgType] == NULL) { + mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_MSG_NOT_PROCESSED; + } + + if (!mnodeInitMsg(pMsg)) { + mError("%p, msg:%s not processed, reason:%s", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], tstrerror(terrno)); + return terrno; + } + + return (*tsMgmtProcessShellMsgFp[rpcMsg->msgType])(pMsg); +} diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mnodeSdb.c similarity index 100% rename from src/mnode/src/mgmtSdb.c rename to src/mnode/src/mnodeSdb.c diff --git a/src/mnode/src/mgmtShell.c b/src/mnode/src/mnodeShow.c similarity index 72% rename from src/mnode/src/mgmtShell.c rename to src/mnode/src/mnodeShow.c index ccbed350dc3..8138fafc06e 100644 --- a/src/mnode/src/mgmtShell.c +++ b/src/mnode/src/mnodeShow.c @@ -41,142 +41,52 @@ typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static bool mgmtCheckMsgReadOnly(SQueuedMsg *pMsg); -static void mgmtProcessUnSupportMsg(SRpcMsg *rpcMsg); -static void mgmtProcessShowMsg(SQueuedMsg *queuedMsg); -static void mgmtProcessRetrieveMsg(SQueuedMsg *queuedMsg); -static void mgmtProcessHeartBeatMsg(SQueuedMsg *queuedMsg); -static void mgmtProcessConnectMsg(SQueuedMsg *queuedMsg); -static void mgmtProcessUseMsg(SQueuedMsg *queuedMsg); +static void mgmtProcessShowMsg(SMnodeMsg *queuedMsg); +static void mgmtProcessRetrieveMsg(SMnodeMsg *queuedMsg); +static void mgmtProcessHeartBeatMsg(SMnodeMsg *queuedMsg); +static void mgmtProcessConnectMsg(SMnodeMsg *queuedMsg); +static void mgmtProcessUseMsg(SMnodeMsg *queuedMsg); static void mgmtFreeShowObj(void *data); -void *tsMgmtTmr; -static void *tsMgmtTranQhandle = NULL; -static void (*tsMgmtProcessShellMsgFp[TSDB_MSG_TYPE_MAX])(SQueuedMsg *) = {0}; static void *tsQhandleCache = NULL; -static SShowMetaFp tsMgmtShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; -static SShowRetrieveFp tsMgmtShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; - -int32_t mgmtInitShell() { - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_SHOW, mgmtProcessShowMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_RETRIEVE, mgmtProcessRetrieveMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_HEARTBEAT, mgmtProcessHeartBeatMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mgmtProcessConnectMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mgmtProcessUseMsg); +static SShowMetaFp tsMnodeShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; +static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; + +void mnodeInitShow() { + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_SHOW, mgmtProcessShowMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_RETRIEVE, mgmtProcessRetrieveMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_HEARTBEAT, mgmtProcessHeartBeatMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mgmtProcessConnectMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mgmtProcessUseMsg); - tsMgmtTmr = taosTmrInit((tsMaxShellConns) * 3, 200, 3600000, "MND"); - tsMgmtTranQhandle = taosInitScheduler(tsMaxShellConns, 1, "mnodeT"); tsQhandleCache = taosCacheInitWithCb(tsMgmtTmr, 10, mgmtFreeShowObj); - - return 0; } -void mgmtCleanUpShell() { - if (tsMgmtTmr != NULL){ - taosTmrCleanUp(tsMgmtTmr); - tsMgmtTmr = NULL; - } - +void mnodeCleanUpShow() { if (tsQhandleCache != NULL) { taosCacheCleanup(tsQhandleCache); tsQhandleCache = NULL; } - - if (tsMgmtTranQhandle != NULL) { - taosCleanUpScheduler(tsMgmtTranQhandle); - tsMgmtTranQhandle = NULL; - } } -void mgmtAddShellMsgHandle(uint8_t showType, void (*fp)(SQueuedMsg *queuedMsg)) { - tsMgmtProcessShellMsgFp[showType] = fp; +void mnodeAddShowMetaHandle(uint8_t showType, SShowMetaFp fp) { + tsMnodeShowMetaFp[showType] = fp; } -void mgmtAddShellShowMetaHandle(uint8_t showType, SShowMetaFp fp) { - tsMgmtShowMetaFp[showType] = fp; +void mnodeAddShowRetrieveHandle(uint8_t msgType, SShowRetrieveFp fp) { + tsMnodeShowRetrieveFp[msgType] = fp; } -void mgmtAddShellShowRetrieveHandle(uint8_t msgType, SShowRetrieveFp fp) { - tsMgmtShowRetrieveFp[msgType] = fp; -} +int32_t mnodeProcessRead(int msgType, void *pCont, int32_t contLen, SRspRet *ret) { + if (vnodeProcessReadMsgFp[msgType] == NULL) + return TSDB_CODE_MSG_NOT_PROCESSED; -void mgmtProcessTranRequest(SSchedMsg *sched) { - SQueuedMsg *queuedMsg = sched->msg; - (*tsMgmtProcessShellMsgFp[queuedMsg->msgType])(queuedMsg); - mgmtFreeQueuedMsg(queuedMsg); -} - -void mgmtAddToShellQueue(SQueuedMsg *queuedMsg) { - SSchedMsg schedMsg; - schedMsg.msg = queuedMsg; - schedMsg.fp = mgmtProcessTranRequest; - taosScheduleTask(tsMgmtTranQhandle, &schedMsg); -} - -static void mgmtDoDealyedAddToShellQueue(void *param, void *tmrId) { - mgmtAddToShellQueue(param); -} + if (pVnode->status == TAOS_VN_STATUS_DELETING || pVnode->status == TAOS_VN_STATUS_CLOSING) + return TSDB_CODE_NOT_ACTIVE_VNODE; -void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg) { - void *unUsed = NULL; - taosTmrReset(mgmtDoDealyedAddToShellQueue, 300, queuedMsg, tsMgmtTmr, &unUsed); + return (*vnodeProcessReadMsgFp[msgType])(pVnode, pCont, contLen, ret); } -void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) { - - mTrace("%p, msg:%s will be processed", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); - - if (rpcMsg->pCont == NULL) { - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN); - return; - } - - if (!sdbIsMaster()) { - SRpcConnInfo connInfo; - rpcGetConnInfo(rpcMsg->handle, &connInfo); - - SRpcIpSet ipSet = {0}; - mgmtGetMnodeIpSet(&ipSet); - mTrace("conn from shell ip:%s user:%s redirect msg, inUse:%d", taosIpStr(connInfo.clientIp), connInfo.user, ipSet.inUse); - for (int32_t i = 0; i < ipSet.numOfIps; ++i) { - mTrace("mnode index:%d ip:%s:%d", i, ipSet.fqdn[i], htons(ipSet.port[i])); - } - - rpcSendRedirectRsp(rpcMsg->handle, &ipSet); - return; - } - - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_GRANT_EXPIRED); - rpcFreeCont(rpcMsg->pCont); - return; - } - - if (tsMgmtProcessShellMsgFp[rpcMsg->msgType] == NULL) { - mgmtProcessUnSupportMsg(rpcMsg); - rpcFreeCont(rpcMsg->pCont); - return; - } - - SQueuedMsg *pMsg = mgmtMallocQueuedMsg(rpcMsg); - if (pMsg == NULL) { - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_USER); - rpcFreeCont(rpcMsg->pCont); - return; - } - - if (mgmtCheckMsgReadOnly(pMsg)) { - (*tsMgmtProcessShellMsgFp[rpcMsg->msgType])(pMsg); - mgmtFreeQueuedMsg(pMsg); - } else { - if (!pMsg->pUser->writeAuth) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); - mgmtFreeQueuedMsg(pMsg); - } else { - mgmtAddToShellQueue(pMsg); - } - } -} char *mgmtGetShowTypeStr(int32_t showType) { switch (showType) { @@ -200,14 +110,14 @@ char *mgmtGetShowTypeStr(int32_t showType) { } } -static void mgmtProcessShowMsg(SQueuedMsg *pMsg) { +static void mgmtProcessShowMsg(SMnodeMsg *pMsg) { SCMShowMsg *pShowMsg = pMsg->pCont; if (pShowMsg->type >= TSDB_MGMT_TABLE_MAX) { mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_MSG_TYPE); return; } - if (!tsMgmtShowMetaFp[pShowMsg->type] || !tsMgmtShowRetrieveFp[pShowMsg->type]) { + if (!tsMnodeShowMetaFp[pShowMsg->type] || !tsMnodeShowRetrieveFp[pShowMsg->type]) { mError("show type:%s is not support", mgmtGetShowTypeStr(pShowMsg->type)); mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_OPS_NOT_SUPPORT); return; @@ -232,7 +142,7 @@ static void mgmtProcessShowMsg(SQueuedMsg *pMsg) { pShowRsp->qhandle = htobe64((uint64_t) pShow); mTrace("show:%p, type:%s, start to get meta", pShow, mgmtGetShowTypeStr(pShowMsg->type)); - int32_t code = (*tsMgmtShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->thandle); + int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->thandle); if (code == 0) { SRpcMsg rpcRsp = { .handle = pMsg->thandle, @@ -252,7 +162,7 @@ static void mgmtProcessShowMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { +static void mgmtProcessRetrieveMsg(SMnodeMsg *pMsg) { int32_t rowsToRead = 0; int32_t size = 0; int32_t rowsRead = 0; @@ -291,7 +201,7 @@ static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { // if free flag is set, client wants to clean the resources if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) - rowsRead = (*tsMgmtShowRetrieveFp[pShow->type])(pShow, pRsp->data, rowsToRead, pMsg->thandle); + rowsRead = (*tsMnodeShowRetrieveFp[pShow->type])(pShow, pRsp->data, rowsToRead, pMsg->thandle); if (rowsRead < 0) { // TSDB_CODE_ACTION_IN_PROGRESS; rpcFreeCont(pRsp); @@ -318,7 +228,7 @@ static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessHeartBeatMsg(SQueuedMsg *pMsg) { +static void mgmtProcessHeartBeatMsg(SMnodeMsg *pMsg) { SCMHeartBeatRsp *pHBRsp = (SCMHeartBeatRsp *) rpcMallocCont(sizeof(SCMHeartBeatRsp)); if (pHBRsp == NULL) { mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); @@ -347,7 +257,7 @@ static void mgmtProcessHeartBeatMsg(SQueuedMsg *pMsg) { rpcSendResponse(&rpcRsp); } -static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) { +static void mgmtProcessConnectMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMConnectMsg *pConnectMsg = pMsg->pCont; @@ -407,7 +317,7 @@ static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) { rpcSendResponse(&rpcRsp); } -static void mgmtProcessUseMsg(SQueuedMsg *pMsg) { +static void mgmtProcessUseMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMUseDbMsg *pUseDbMsg = pMsg->pCont; @@ -426,7 +336,7 @@ static void mgmtProcessUseMsg(SQueuedMsg *pMsg) { /** * check if we need to add mgmtProcessTableMetaMsg into tranQueue, which will be executed one-by-one. */ -static bool mgmtCheckTableMetaMsgReadOnly(SQueuedMsg *pMsg) { +static bool mgmtCheckTableMetaMsgReadOnly(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->pCont; if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pInfo->tableId); if (pMsg->pTable != NULL) return true; @@ -441,7 +351,7 @@ static bool mgmtCheckTableMetaMsgReadOnly(SQueuedMsg *pMsg) { return true; } -static bool mgmtCheckMsgReadOnly(SQueuedMsg *pMsg) { +static bool mgmtCheckMsgReadOnly(SMnodeMsg *pMsg) { if (pMsg->msgType == TSDB_MSG_TYPE_CM_TABLE_META) { return mgmtCheckTableMetaMsgReadOnly(pMsg); } @@ -514,23 +424,30 @@ void mgmtFreeQhandle(void *qhandle, bool forceRemove) { taosCacheRelease(tsQhandleCache, &qhandle, forceRemove); } -void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg) { +void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg, SRspRet *pRet) { SUserObj *pUser = mgmtGetUserFromConn(rpcMsg->handle); if (pUser == NULL) { + terrno = TSDB_CODE_INVALID_USER; + return NULL; + } + + SMnodeMsg *pMsg = calloc(1, sizeof(SMnodeMsg)); + if (pMsg == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; return NULL; } - SQueuedMsg *pMsg = calloc(1, sizeof(SQueuedMsg)); pMsg->thandle = rpcMsg->handle; pMsg->msgType = rpcMsg->msgType; pMsg->contLen = rpcMsg->contLen; - pMsg->pCont = rpcMsg->pCont; - pMsg->pUser = pUser; + pMsg->pCont = rpcMsg->pCont; + pMsg->pUser = pUser; + pMsg->pRet = pRet; return pMsg; } -void mgmtFreeQueuedMsg(SQueuedMsg *pMsg) { +void mgmtFreeQueuedMsg(SMnodeMsg *pMsg) { if (pMsg != NULL) { rpcFreeCont(pMsg->pCont); if (pMsg->pUser) mgmtDecUserRef(pMsg->pUser); @@ -543,8 +460,8 @@ void mgmtFreeQueuedMsg(SQueuedMsg *pMsg) { } } -void* mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg) { - SQueuedMsg *pDestMsg = calloc(1, sizeof(SQueuedMsg)); +void* mgmtCloneQueuedMsg(SMnodeMsg *pSrcMsg) { + SMnodeMsg *pDestMsg = calloc(1, sizeof(SMnodeMsg)); pDestMsg->thandle = pSrcMsg->thandle; pDestMsg->msgType = pSrcMsg->msgType; diff --git a/src/mnode/src/mgmtTable.c b/src/mnode/src/mnodeTable.c similarity index 97% rename from src/mnode/src/mgmtTable.c rename to src/mnode/src/mnodeTable.c index 53fbd64f87e..609be0f5420 100644 --- a/src/mnode/src/mgmtTable.c +++ b/src/mnode/src/mnodeTable.c @@ -58,27 +58,27 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, static int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); static int32_t mgmtGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static void mgmtProcessCreateTableMsg(SQueuedMsg *queueMsg); -static void mgmtProcessCreateSuperTableMsg(SQueuedMsg *pMsg); -static void mgmtProcessCreateChildTableMsg(SQueuedMsg *pMsg); +static void mgmtProcessCreateTableMsg(SMnodeMsg *queueMsg); +static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg); +static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg); static void mgmtProcessCreateChildTableRsp(SRpcMsg *rpcMsg); -static void mgmtProcessDropTableMsg(SQueuedMsg *queueMsg); -static void mgmtProcessDropSuperTableMsg(SQueuedMsg *pMsg); +static void mgmtProcessDropTableMsg(SMnodeMsg *queueMsg); +static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg); static void mgmtProcessDropSuperTableRsp(SRpcMsg *rpcMsg); -static void mgmtProcessDropChildTableMsg(SQueuedMsg *pMsg); +static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg); static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg); -static void mgmtProcessSuperTableVgroupMsg(SQueuedMsg *queueMsg); -static void mgmtProcessMultiTableMetaMsg(SQueuedMsg *queueMsg); +static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *queueMsg); +static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *queueMsg); static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg); -static void mgmtProcessTableMetaMsg(SQueuedMsg *queueMsg); -static void mgmtGetSuperTableMeta(SQueuedMsg *pMsg); -static void mgmtGetChildTableMeta(SQueuedMsg *pMsg); -static void mgmtAutoCreateChildTable(SQueuedMsg *pMsg); +static void mgmtProcessTableMetaMsg(SMnodeMsg *queueMsg); +static void mgmtGetSuperTableMeta(SMnodeMsg *pMsg); +static void mgmtGetChildTableMeta(SMnodeMsg *pMsg); +static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg); -static void mgmtProcessAlterTableMsg(SQueuedMsg *queueMsg); +static void mgmtProcessAlterTableMsg(SMnodeMsg *queueMsg); static void mgmtProcessAlterTableRsp(SRpcMsg *rpcMsg); static int32_t mgmtFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName); @@ -559,10 +559,10 @@ int32_t mgmtInitTables() { dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_TABLE, mgmtProcessTableCfgMsg); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_TABLE, mgmtGetShowTableMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_TABLE, mgmtRetrieveShowTables); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_METRIC, mgmtGetShowSuperTableMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_METRIC, mgmtRetrieveShowSuperTables); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_TABLE, mgmtGetShowTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_TABLE, mgmtRetrieveShowTables); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_METRIC, mgmtGetShowSuperTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_METRIC, mgmtRetrieveShowSuperTables); return TSDB_CODE_SUCCESS; } @@ -655,7 +655,7 @@ static void mgmtExtractTableName(char* tableId, char* name) { } } -static void mgmtProcessCreateTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDb(pCreate->db); @@ -689,7 +689,7 @@ static void mgmtProcessCreateTableMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessDropTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropTableMsg(SMnodeMsg *pMsg) { SCMDropTableMsg *pDrop = pMsg->pCont; if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDbByTableId(pDrop->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { @@ -726,7 +726,7 @@ static void mgmtProcessDropTableMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessTableMetaMsg(SQueuedMsg *pMsg) { +static void mgmtProcessTableMetaMsg(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->pCont; pInfo->createFlag = htons(pInfo->createFlag); mTrace("table:%s, table meta msg is received from thandle:%p, createFlag:%d", pInfo->tableId, pMsg->thandle, pInfo->createFlag); @@ -755,7 +755,7 @@ static void mgmtProcessTableMetaMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessCreateSuperTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; SSuperTableObj *pStable = calloc(1, sizeof(SSuperTableObj)); if (pStable == NULL) { @@ -812,7 +812,7 @@ static void mgmtProcessCreateSuperTableMsg(SQueuedMsg *pMsg) { } } -static void mgmtProcessDropSuperTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg) { SSuperTableObj *pStable = (SSuperTableObj *)pMsg->pTable; if (pStable->numOfTables != 0) { SHashMutableIterator *pIter = taosHashCreateIter(pStable->vgHash); @@ -1239,7 +1239,7 @@ static int32_t mgmtSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTa return (pTable->numOfColumns + pTable->numOfTags) * sizeof(SSchema); } -static void mgmtGetSuperTableMeta(SQueuedMsg *pMsg) { +static void mgmtGetSuperTableMeta(SMnodeMsg *pMsg) { SSuperTableObj *pTable = (SSuperTableObj *)pMsg->pTable; STableMetaMsg *pMeta = rpcMallocCont(sizeof(STableMetaMsg) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16)); pMeta->uid = htobe64(pTable->uid); @@ -1263,7 +1263,7 @@ static void mgmtGetSuperTableMeta(SQueuedMsg *pMsg) { mTrace("stable:%s, uid:%" PRIu64 " table meta is retrieved", pTable->info.tableId, pTable->uid); } -static void mgmtProcessSuperTableVgroupMsg(SQueuedMsg *pMsg) { +static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { SCMSTableVgroupMsg *pInfo = pMsg->pCont; int32_t numOfTable = htonl(pInfo->numOfTables); @@ -1487,7 +1487,7 @@ static SChildTableObj* mgmtDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgObj return pTable; } -static void mgmtProcessCreateChildTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; int32_t code = grantCheck(TSDB_GRANT_TIMESERIES); if (code != TSDB_CODE_SUCCESS) { @@ -1536,7 +1536,7 @@ static void mgmtProcessCreateChildTableMsg(SQueuedMsg *pMsg) { } SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pVgroup); - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(pMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); newMsg->ahandle = pMsg->pTable; newMsg->maxRetry = 10; SRpcMsg rpcMsg = { @@ -1550,7 +1550,7 @@ static void mgmtProcessCreateChildTableMsg(SQueuedMsg *pMsg) { dnodeSendMsgToDnode(&ipSet, &rpcMsg); } -static void mgmtProcessDropChildTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg) { SChildTableObj *pTable = (SChildTableObj *)pMsg->pTable; if (pMsg->pVgroup == NULL) pMsg->pVgroup = mgmtGetVgroup(pTable->vgId); if (pMsg->pVgroup == NULL) { @@ -1575,7 +1575,7 @@ static void mgmtProcessDropChildTableMsg(SQueuedMsg *pMsg) { SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pMsg->pVgroup); mPrint("table:%s, send drop ctable msg", pDrop->tableId); - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(pMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); newMsg->ahandle = pMsg->pTable; SRpcMsg rpcMsg = { .handle = newMsg, @@ -1695,7 +1695,7 @@ static int32_t mgmtSetSchemaFromNormalTable(SSchema *pSchema, SChildTableObj *pT return numOfCols * sizeof(SSchema); } -static int32_t mgmtDoGetChildTableMeta(SQueuedMsg *pMsg, STableMetaMsg *pMeta) { +static int32_t mgmtDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { SDbObj *pDb = pMsg->pDb; SChildTableObj *pTable = (SChildTableObj *)pMsg->pTable; @@ -1740,7 +1740,7 @@ static int32_t mgmtDoGetChildTableMeta(SQueuedMsg *pMsg, STableMetaMsg *pMeta) { return TSDB_CODE_SUCCESS; } -static void mgmtAutoCreateChildTable(SQueuedMsg *pMsg) { +static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->pCont; STagData* pTag = (STagData*)pInfo->tags; @@ -1760,7 +1760,7 @@ static void mgmtAutoCreateChildTable(SQueuedMsg *pMsg) { memcpy(pCreateMsg->schema, pInfo->tags, contLen - sizeof(SCMCreateTableMsg)); - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(pMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); newMsg->msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; newMsg->pCont = pCreateMsg; @@ -1768,7 +1768,7 @@ static void mgmtAutoCreateChildTable(SQueuedMsg *pMsg) { mgmtAddToShellQueue(newMsg); } -static void mgmtGetChildTableMeta(SQueuedMsg *pMsg) { +static void mgmtGetChildTableMeta(SMnodeMsg *pMsg) { STableMetaMsg *pMeta = rpcMallocCont(sizeof(STableMetaMsg) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16)); if (pMeta == NULL) { mError("table:%s, failed to get table meta, no enough memory", pMsg->pTable->tableId); @@ -1926,7 +1926,7 @@ static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg) { static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SQueuedMsg *queueMsg = rpcMsg->handle; + SMnodeMsg *queueMsg = rpcMsg->handle; queueMsg->received++; SChildTableObj *pTable = queueMsg->ahandle; @@ -1974,7 +1974,7 @@ static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg) { static void mgmtProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SQueuedMsg *queueMsg = rpcMsg->handle; + SMnodeMsg *queueMsg = rpcMsg->handle; queueMsg->received++; SChildTableObj *pTable = queueMsg->ahandle; @@ -2020,7 +2020,7 @@ static void mgmtProcessAlterTableRsp(SRpcMsg *rpcMsg) { mTrace("alter table rsp received, handle:%p code:%s", rpcMsg->handle, tstrerror(rpcMsg->code)); } -static void mgmtProcessMultiTableMetaMsg(SQueuedMsg *pMsg) { +static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { SCMMultiTableInfoMsg *pInfo = pMsg->pCont; pInfo->numOfTables = htonl(pInfo->numOfTables); @@ -2207,7 +2207,7 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, return numOfRows; } -static void mgmtProcessAlterTableMsg(SQueuedMsg *pMsg) { +static void mgmtProcessAlterTableMsg(SMnodeMsg *pMsg) { SCMAlterTableMsg *pAlter = pMsg->pCont; mTrace("table:%s, alter table msg is received from thandle:%p", pAlter->tableId, pMsg->thandle); diff --git a/src/mnode/src/mgmtUser.c b/src/mnode/src/mnodeUser.c similarity index 96% rename from src/mnode/src/mgmtUser.c rename to src/mnode/src/mnodeUser.c index 62a98c41707..e346d804c28 100644 --- a/src/mnode/src/mgmtUser.c +++ b/src/mnode/src/mnodeUser.c @@ -34,9 +34,9 @@ static void * tsUserSdb = NULL; static int32_t tsUserUpdateSize = 0; static int32_t mgmtGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mgmtRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg); -static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg); -static void mgmtProcessDropUserMsg(SQueuedMsg *pMsg); +static void mgmtProcessCreateUserMsg(SMnodeMsg *pMsg); +static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg); +static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg); static void mgmtProcessAuthMsg(SRpcMsg *rpcMsg); static int32_t mgmtUserActionDestroy(SSdbOper *pOper) { @@ -139,8 +139,8 @@ int32_t mgmtInitUsers() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_USER, mgmtProcessCreateUserMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_USER, mgmtProcessAlterUserMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mgmtProcessDropUserMsg); - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_USER, mgmtGetUserMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mgmtRetrieveUsers); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_USER, mgmtGetUserMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mgmtRetrieveUsers); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_AUTH, mgmtProcessAuthMsg); mTrace("table:%s, hash is created", tableDesc.tableName); @@ -344,7 +344,7 @@ SUserObj *mgmtGetUserFromConn(void *pConn) { } } -static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg) { +static void mgmtProcessCreateUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; @@ -362,7 +362,7 @@ static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg) { mgmtSendSimpleResp(pMsg->thandle, code); } -static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { +static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; @@ -457,7 +457,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { mgmtDecUserRef(pUser); } -static void mgmtProcessDropUserMsg(SQueuedMsg *pMsg) { +static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; diff --git a/src/mnode/src/mgmtVgroup.c b/src/mnode/src/mnodeVgroup.c similarity index 98% rename from src/mnode/src/mgmtVgroup.c rename to src/mnode/src/mnodeVgroup.c index 960863d6655..ffc5487a424 100644 --- a/src/mnode/src/mgmtVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -220,8 +220,8 @@ int32_t mgmtInitVgroups() { return -1; } - mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_VGROUP, mgmtGetVgroupMeta); - mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_VGROUP, mgmtRetrieveVgroups); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VGROUP, mgmtGetVgroupMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VGROUP, mgmtRetrieveVgroups); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP, mgmtProcessCreateVnodeRsp); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_DROP_VNODE_RSP, mgmtProcessDropVnodeRsp); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_VNODE, mgmtProcessVnodeCfgMsg); @@ -297,7 +297,7 @@ void *mgmtGetNextVgroup(void *pIter, SVgObj **pVgroup) { return sdbFetchRow(tsVgroupSdb, pIter, (void **)pVgroup); } -void mgmtCreateVgroup(SQueuedMsg *pMsg, SDbObj *pDb) { +void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { SVgObj *pVgroup = (SVgObj *)calloc(1, sizeof(SVgObj)); strcpy(pVgroup->dbName, pDb->name); pVgroup->numOfVnodes = pDb->cfg.replications; @@ -617,7 +617,7 @@ void mgmtSendCreateVgroupMsg(SVgObj *pVgroup, void *ahandle) { static void mgmtProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SQueuedMsg *queueMsg = rpcMsg->handle; + SMnodeMsg *queueMsg = rpcMsg->handle; queueMsg->received++; if (rpcMsg->code == TSDB_CODE_SUCCESS) { queueMsg->code = rpcMsg->code; @@ -632,7 +632,7 @@ static void mgmtProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { if (queueMsg->received != queueMsg->expected) return; if (queueMsg->received == queueMsg->successed) { - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); mgmtAddToShellQueue(newMsg); } else { SSdbOper oper = { @@ -684,7 +684,7 @@ static void mgmtProcessDropVnodeRsp(SRpcMsg *rpcMsg) { mTrace("drop vnode rsp is received, handle:%p", rpcMsg->handle); if (rpcMsg->handle == NULL) return; - SQueuedMsg *queueMsg = rpcMsg->handle; + SMnodeMsg *queueMsg = rpcMsg->handle; queueMsg->received++; if (rpcMsg->code == TSDB_CODE_SUCCESS) { queueMsg->code = rpcMsg->code; @@ -708,7 +708,7 @@ static void mgmtProcessDropVnodeRsp(SRpcMsg *rpcMsg) { code = TSDB_CODE_SDB_ERROR; } - SQueuedMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); + SMnodeMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); mgmtAddToShellQueue(newMsg); queueMsg->pCont = NULL; diff --git a/src/mnode/src/mnodeWrite.c b/src/mnode/src/mnodeWrite.c new file mode 100644 index 00000000000..0fb4cf3d49e --- /dev/null +++ b/src/mnode/src/mnodeWrite.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taosdef.h" +#include "tsched.h" +#include "tbalance.h" +#include "tgrant.h" +#include "ttimer.h" +#include "tglobal.h" +#include "dnode.h" +#include "mgmtDef.h" +#include "mgmtInt.h" +#include "mgmtServer.h" +#include "mgmtAcct.h" +#include "mgmtDnode.h" +#include "mgmtMnode.h" +#include "mgmtDb.h" +#include "mgmtSdb.h" +#include "mgmtVgroup.h" +#include "mgmtUser.h" +#include "mgmtTable.h" +#include "mgmtShell.h" + +static void (*tsMnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); + +void mnodeAddWriteMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { + tsMnodeProcessWriteMsgFp[msgType] = fp; +} + +int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { + SRpcMsg *rpcMsg = &pMsg->rpcMsg; + if (rpcMsg->pCont == NULL) { + mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_INVALID_MSG_LEN; + } + + if (!sdbIsMaster()) { + SMnodeRsp *rpcRsp = &pMsg->rpcRsp; + SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); + mgmtGetMnodeIpSetForShell(ipSet); + rpcRsp->rsp = ipSet; + rpcRsp->len = sizeof(SRpcIpSet); + + mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + for (int32_t i = 0; i < ipSet->numOfIps; ++i) { + mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); + } + + return TSDB_CODE_REDIRECT; + } + + if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { + mError("%p, msg:%s not processed, grant time expired", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_GRANT_EXPIRED; + } + + if (tsMnodeProcessReadMsgFp[rpcMsg->msgType] == NULL) { + mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_MSG_NOT_PROCESSED; + } + + if (!mnodeInitMsg(pMsg)) { + mError("%p, msg:%s not processed, reason:%s", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], tstrerror(terrno)); + return terrno; + } + + if (!pMsg->pUser->writeAuth) { + mError("%p, msg:%s not processed, no rights", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + return TSDB_CODE_NO_RIGHTS; + } + + return (*tsMnodeProcessWriteMsgFp[rpcMsg->msgType])(pMsg); +} + +static void mgmtDoDealyedAddToShellQueue(void *param, void *tmrId) { + mgmtAddToShellQueue(param); +} + +void mgmtDealyedAddToShellQueue(SMnodeMsg *queuedMsg) { + void *unUsed = NULL; + taosTmrReset(mgmtDoDealyedAddToShellQueue, 300, queuedMsg, tsMgmtTmr, &unUsed); +} \ No newline at end of file From 7ac821f218a56a4cd61df9d1c924d1674aa1a43e Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 26 May 2020 12:20:58 +0000 Subject: [PATCH 15/85] [TD-335] rename some defs --- src/client/src/tscSQLParser.c | 4 +- src/client/src/tscServer.c | 2 +- src/inc/taosmsg.h | 34 +++++----- src/mnode/inc/mnodeDb.h | 2 +- src/mnode/inc/mnodeProfile.h | 2 +- src/mnode/inc/mnodeShell.h | 2 +- src/mnode/inc/mnodeTable.h | 2 +- src/mnode/inc/mnodeUser.h | 2 +- src/mnode/inc/mnodeVgroup.h | 2 +- src/mnode/src/mnodeAcct.c | 12 ++-- src/mnode/src/mnodeBalance.c | 12 ++-- src/mnode/src/mnodeDb.c | 28 ++++---- src/mnode/src/mnodeDnode.c | 32 ++++----- src/mnode/src/mnodeGrant.c | 2 +- src/mnode/src/mnodeMain.c | 24 +++---- src/mnode/src/mnodeMgmt.c | 18 ++--- src/mnode/src/mnodeMnode.c | 18 ++--- src/mnode/src/mnodeProfile.c | 34 +++++----- src/mnode/src/mnodeRead.c | 6 +- src/mnode/src/mnodeSdb.c | 10 +-- src/mnode/src/mnodeShow.c | 119 +++++++++++++++------------------- src/mnode/src/mnodeTable.c | 32 ++++----- src/mnode/src/mnodeUser.c | 18 ++--- src/mnode/src/mnodeVgroup.c | 24 +++---- src/mnode/src/mnodeWrite.c | 24 +++---- 25 files changed, 227 insertions(+), 238 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index d23d0e18605..087f546eaa0 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -2175,7 +2175,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { */ SShowInfo* pShowInfo = &pInfo->pDCLInfo->showOpt; int16_t showType = pShowInfo->showType; - if (showType == TSDB_MGMT_TABLE_TABLE || showType == TSDB_MGMT_TABLE_METRIC || showType == TSDB_MGMT_TABLE_VGROUP) { + if (showType == TSDB_MNODE_TABLE_TABLE || showType == TSDB_MNODE_TABLE_METRIC || showType == TSDB_MNODE_TABLE_VGROUP) { // db prefix in tagCond, show table conds in payload SSQLToken* pDbPrefixToken = &pShowInfo->prefix; if (pDbPrefixToken->type != 0) { @@ -2212,7 +2212,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg2); } } - } else if (showType == TSDB_MGMT_TABLE_VNODES) { + } else if (showType == TSDB_MNODE_TABLE_VNODES) { if (pShowInfo->prefix.type == 0) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), "No specified ip of dnode"); } diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 0aac5daa2eb..669f777d81b 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -1116,7 +1116,7 @@ int32_t tscBuildShowMsg(SSqlObj *pSql, SSqlInfo *pInfo) { SShowInfo *pShowInfo = &pInfo->pDCLInfo->showOpt; pShowMsg->type = pShowInfo->showType; - if (pShowInfo->showType != TSDB_MGMT_TABLE_VNODES) { + if (pShowInfo->showType != TSDB_MNODE_TABLE_VNODES) { SSQLToken *pPattern = &pShowInfo->pattern; if (pPattern->type > 0) { // only show tables support wildcard query strncpy(pShowMsg->payload, pPattern->z, pPattern->n); diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index f550b1660fb..f493a2b5421 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -121,23 +121,23 @@ TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY14, "dummy14" ) #define TSDB_IE_TYPE_DNODE_STATE 7 enum _mgmt_table { - TSDB_MGMT_TABLE_ACCT, - TSDB_MGMT_TABLE_USER, - TSDB_MGMT_TABLE_DB, - TSDB_MGMT_TABLE_TABLE, - TSDB_MGMT_TABLE_DNODE, - TSDB_MGMT_TABLE_MNODE, - TSDB_MGMT_TABLE_VGROUP, - TSDB_MGMT_TABLE_METRIC, - TSDB_MGMT_TABLE_MODULE, - TSDB_MGMT_TABLE_QUERIES, - TSDB_MGMT_TABLE_STREAMS, - TSDB_MGMT_TABLE_CONFIGS, - TSDB_MGMT_TABLE_CONNS, - TSDB_MGMT_TABLE_SCORES, - TSDB_MGMT_TABLE_GRANTS, - TSDB_MGMT_TABLE_VNODES, - TSDB_MGMT_TABLE_MAX, + TSDB_MNODE_TABLE_ACCT, + TSDB_MNODE_TABLE_USER, + TSDB_MNODE_TABLE_DB, + TSDB_MNODE_TABLE_TABLE, + TSDB_MNODE_TABLE_DNODE, + TSDB_MNODE_TABLE_MNODE, + TSDB_MNODE_TABLE_VGROUP, + TSDB_MNODE_TABLE_METRIC, + TSDB_MNODE_TABLE_MODULE, + TSDB_MNODE_TABLE_QUERIES, + TSDB_MNODE_TABLE_STREAMS, + TSDB_MNODE_TABLE_CONFIGS, + TSDB_MNODE_TABLE_CONNS, + TSDB_MNODE_TABLE_SCORES, + TSDB_MNODE_TABLE_GRANTS, + TSDB_MNODE_TABLE_VNODES, + TSDB_MNODE_TABLE_MAX, }; #define TSDB_ALTER_TABLE_ADD_TAG_COLUMN 1 diff --git a/src/mnode/inc/mnodeDb.h b/src/mnode/inc/mnodeDb.h index 4ad46eee7ba..5339a878f13 100644 --- a/src/mnode/inc/mnodeDb.h +++ b/src/mnode/inc/mnodeDb.h @@ -20,7 +20,7 @@ extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" enum _TSDB_DB_STATUS { TSDB_DB_STATUS_READY, diff --git a/src/mnode/inc/mnodeProfile.h b/src/mnode/inc/mnodeProfile.h index f33ff9c3fac..cb5234c7e63 100644 --- a/src/mnode/inc/mnodeProfile.h +++ b/src/mnode/inc/mnodeProfile.h @@ -19,7 +19,7 @@ #ifdef __cplusplus extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" int32_t mgmtInitProfile(); void mgmtCleanUpProfile(); diff --git a/src/mnode/inc/mnodeShell.h b/src/mnode/inc/mnodeShell.h index 976dc360f37..53fb5827c13 100644 --- a/src/mnode/inc/mnodeShell.h +++ b/src/mnode/inc/mnodeShell.h @@ -19,7 +19,7 @@ #ifdef __cplusplus extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" int32_t mgmtInitShell(); void mgmtCleanUpShell(); diff --git a/src/mnode/inc/mnodeTable.h b/src/mnode/inc/mnodeTable.h index 3ef4c6d4530..cee2a88ee42 100644 --- a/src/mnode/inc/mnodeTable.h +++ b/src/mnode/inc/mnodeTable.h @@ -20,7 +20,7 @@ extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" int32_t mgmtInitTables(); void mgmtCleanUpTables(); diff --git a/src/mnode/inc/mnodeUser.h b/src/mnode/inc/mnodeUser.h index 2edd71f3e72..fc5ad13b8a9 100644 --- a/src/mnode/inc/mnodeUser.h +++ b/src/mnode/inc/mnodeUser.h @@ -19,7 +19,7 @@ #ifdef __cplusplus extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" int32_t mgmtInitUsers(); void mgmtCleanUpUsers(); diff --git a/src/mnode/inc/mnodeVgroup.h b/src/mnode/inc/mnodeVgroup.h index 948aec06e59..b1359e07347 100644 --- a/src/mnode/inc/mnodeVgroup.h +++ b/src/mnode/inc/mnodeVgroup.h @@ -20,7 +20,7 @@ extern "C" { #endif -#include "mgmtDef.h" +#include "mnodeDef.h" int32_t mgmtInitVgroups(); void mgmtCleanUpVgroups(); diff --git a/src/mnode/src/mnodeAcct.c b/src/mnode/src/mnodeAcct.c index a35591382c9..dce771fefd0 100644 --- a/src/mnode/src/mnodeAcct.c +++ b/src/mnode/src/mnodeAcct.c @@ -19,12 +19,12 @@ #include "ttime.h" #include "tutil.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtDb.h" -#include "mgmtSdb.h" -#include "mgmtUser.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDb.h" +#include "mnodeSdb.h" +#include "mnodeUser.h" void * tsAcctSdb = NULL; static int32_t tsAcctUpdateSize; diff --git a/src/mnode/src/mnodeBalance.c b/src/mnode/src/mnodeBalance.c index f8410a207ef..e70458a3faa 100644 --- a/src/mnode/src/mnodeBalance.c +++ b/src/mnode/src/mnodeBalance.c @@ -18,12 +18,12 @@ #include "trpc.h" #include "tbalance.h" #include "tglobal.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtMnode.h" -#include "mgmtDnode.h" -#include "mgmtSdb.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeMnode.h" +#include "mnodeDnode.h" +#include "mnodeSdb.h" +#include "mnodeVgroup.h" #ifndef _SYNC diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index 09e53d13c9d..871ce32c6fa 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -24,18 +24,18 @@ #include "tname.h" #include "tbalance.h" #include "tdataformat.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtDb.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtShell.h" -#include "mgmtProfile.h" -#include "mgmtSdb.h" -#include "mgmtTable.h" -#include "mgmtUser.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDb.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeShell.h" +#include "mnodeProfile.h" +#include "mnodeSdb.h" +#include "mnodeTable.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" static void * tsDbSdb = NULL; static int32_t tsDbUpdateSize; @@ -150,8 +150,8 @@ int32_t mgmtInitDbs() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DB, mgmtProcessCreateDbMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_DB, mgmtProcessAlterDbMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_DB, mgmtProcessDropDbMsg); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DB, mgmtGetDbMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DB, mgmtRetrieveDbs); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_DB, mgmtGetDbMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_DB, mgmtRetrieveDbs); mTrace("table:dbs table is created"); return 0; diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index ce0b1d07e9d..57155549351 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -26,14 +26,14 @@ #include "tsync.h" #include "tdataformat.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtUser.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" int32_t tsAccessSquence = 0; static void *tsDnodeSdb = NULL; @@ -153,14 +153,14 @@ int32_t mgmtInitDnodes() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CONFIG_DNODE, mgmtProcessCfgDnodeMsg); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP, mgmtProcessCfgDnodeMsgRsp); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_STATUS, mgmtProcessDnodeStatusMsg); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MODULE, mgmtGetModuleMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MODULE, mgmtRetrieveModules); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtGetConfigMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONFIGS, mgmtRetrieveConfigs); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VNODES, mgmtGetVnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VNODES, mgmtRetrieveVnodes); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DNODE, mgmtGetDnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DNODE, mgmtRetrieveDnodes); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_MODULE, mgmtGetModuleMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_MODULE, mgmtRetrieveModules); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_CONFIGS, mgmtGetConfigMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_CONFIGS, mgmtRetrieveConfigs); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_VNODES, mgmtGetVnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_VNODES, mgmtRetrieveVnodes); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_DNODE, mgmtGetDnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_DNODE, mgmtRetrieveDnodes); mTrace("table:dnodes table is created"); return 0; diff --git a/src/mnode/src/mnodeGrant.c b/src/mnode/src/mnodeGrant.c index f44b47e20c9..7329629ef92 100644 --- a/src/mnode/src/mnodeGrant.c +++ b/src/mnode/src/mnodeGrant.c @@ -18,7 +18,7 @@ #include "os.h" #include "taoserror.h" #include "tgrant.h" -#include "mgmtInt.h" +#include "mnodeInt.h" int32_t grantInit() { return TSDB_CODE_SUCCESS; } void grantCleanUp() {} diff --git a/src/mnode/src/mnodeMain.c b/src/mnode/src/mnodeMain.c index 204a8a638ea..563e679b34b 100644 --- a/src/mnode/src/mnodeMain.c +++ b/src/mnode/src/mnodeMain.c @@ -22,18 +22,18 @@ #include "ttimer.h" #include "tglobal.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtServer.h" -#include "mgmtAcct.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtDb.h" -#include "mgmtSdb.h" -#include "mgmtVgroup.h" -#include "mgmtUser.h" -#include "mgmtTable.h" -#include "mgmtShell.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeServer.h" +#include "mnodeAcct.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeDb.h" +#include "mnodeSdb.h" +#include "mnodeVgroup.h" +#include "mnodeUser.h" +#include "mnodeTable.h" +#include "mnodeShell.h" static void *tsMgmtTmr; static bool tsMgmtIsRunning = false; diff --git a/src/mnode/src/mnodeMgmt.c b/src/mnode/src/mnodeMgmt.c index 88334624065..49f4c90fa50 100644 --- a/src/mnode/src/mnodeMgmt.c +++ b/src/mnode/src/mnodeMgmt.c @@ -24,15 +24,15 @@ #include "tbalance.h" #include "tglobal.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtDb.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtShell.h" -#include "mgmtSdb.h" -#include "mgmtTable.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeDb.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeShell.h" +#include "mnodeSdb.h" +#include "mnodeTable.h" +#include "mnodeVgroup.h" static void (*tsMnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c index aa028f594bf..f939dfb4264 100644 --- a/src/mnode/src/mnodeMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -23,13 +23,13 @@ #include "ttime.h" #include "tsocket.h" #include "tdataformat.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtMnode.h" -#include "mgmtDnode.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtUser.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeMnode.h" +#include "mnodeDnode.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeUser.h" static void * tsMnodeSdb = NULL; static int32_t tsMnodeUpdateSize = 0; @@ -154,8 +154,8 @@ int32_t mgmtInitMnodes() { return -1; } - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MNODE, mgmtGetMnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MNODE, mgmtRetrieveMnodes); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_MNODE, mgmtGetMnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_MNODE, mgmtRetrieveMnodes); mTrace("table:mnodes table is created"); return TSDB_CODE_SUCCESS; diff --git a/src/mnode/src/mnodeProfile.c b/src/mnode/src/mnodeProfile.c index 3cf340db4a1..3236197c83d 100644 --- a/src/mnode/src/mnodeProfile.c +++ b/src/mnode/src/mnodeProfile.c @@ -18,17 +18,17 @@ #include "taosmsg.h" #include "taoserror.h" #include "tutil.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtDnode.h" -#include "mgmtDb.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtShell.h" -#include "mgmtTable.h" -#include "mgmtUser.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDnode.h" +#include "mnodeDb.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeShell.h" +#include "mnodeTable.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" int32_t mgmtSaveQueryStreamList(SCMHeartBeatMsg *pHBMsg); @@ -745,12 +745,12 @@ void mgmtProcessKillConnectionMsg(SMnodeMsg *pMsg) { } int32_t mgmtInitProfile() { - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mgmtGetQueryMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mgmtRetrieveQueries); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mgmtGetConnsMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mgmtRetrieveConns); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mgmtGetStreamMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mgmtRetrieveStreams); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_QUERIES, mgmtGetQueryMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_QUERIES, mgmtRetrieveQueries); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_CONNS, mgmtGetConnsMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_CONNS, mgmtRetrieveConns); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_STREAMS, mgmtGetStreamMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_STREAMS, mgmtRetrieveStreams); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mgmtProcessKillQueryMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mgmtProcessKillStreamMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mgmtProcessKillConnectionMsg); diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c index 8d06113f8a8..c8983bf1e75 100644 --- a/src/mnode/src/mnodeRead.c +++ b/src/mnode/src/mnodeRead.c @@ -23,13 +23,13 @@ #include "tglobal.h" #include "mnode.h" #include "dnode.h" -#include "mgmtDef.h" +#include "mnodeDef.h" #include "mgmtInt.h" #include "mgmtServer.h" -#include "mgmtAcct.h" +#include "mnodeAcct.h" #include "mgmtDnode.h" #include "mgmtMnode.h" -#include "mgmtDb.h" +#include "mnodeDb.h" #include "mgmtSdb.h" #include "mgmtVgroup.h" #include "mgmtUser.h" diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c index 237d2ca4992..e873c0b5733 100644 --- a/src/mnode/src/mnodeSdb.c +++ b/src/mnode/src/mnodeSdb.c @@ -25,11 +25,11 @@ #include "tsync.h" #include "tglobal.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtMnode.h" -#include "mgmtDnode.h" -#include "mgmtSdb.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeMnode.h" +#include "mnodeDnode.h" +#include "mnodeSdb.h" typedef enum { SDB_ACTION_INSERT, diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 8138fafc06e..a629d02fdd3 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -25,41 +25,41 @@ #include "tglobal.h" #include "tcache.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtDb.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtTable.h" -#include "mgmtUser.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDb.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeTable.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessShowMsg(SMnodeMsg *queuedMsg); -static void mgmtProcessRetrieveMsg(SMnodeMsg *queuedMsg); -static void mgmtProcessHeartBeatMsg(SMnodeMsg *queuedMsg); -static void mgmtProcessConnectMsg(SMnodeMsg *queuedMsg); -static void mgmtProcessUseMsg(SMnodeMsg *queuedMsg); -static void mgmtFreeShowObj(void *data); +static void mnodeProcessShowMsg(SMnodeMsg *queuedMsg); +static void mnodeProcessRetrieveMsg(SMnodeMsg *queuedMsg); +static void mnodeProcessHeartBeatMsg(SMnodeMsg *queuedMsg); +static void mnodeProcessConnectMsg(SMnodeMsg *queuedMsg); +static void mnodeProcessUseMsg(SMnodeMsg *queuedMsg); +static void mnodeFreeShowObj(void *data); static void *tsQhandleCache = NULL; -static SShowMetaFp tsMnodeShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; -static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; +static SShowMetaFp tsMnodeShowMetaFp[TSDB_MNODE_TABLE_MAX] = {0}; +static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MNODE_TABLE_MAX] = {0}; void mnodeInitShow() { - mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_SHOW, mgmtProcessShowMsg); - mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_RETRIEVE, mgmtProcessRetrieveMsg); - mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_HEARTBEAT, mgmtProcessHeartBeatMsg); - mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mgmtProcessConnectMsg); - mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mgmtProcessUseMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_SHOW, mnodeProcessShowMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_RETRIEVE, mnodeProcessRetrieveMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_HEARTBEAT, mnodeProcessHeartBeatMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mnodeProcessConnectMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mnodeProcessUseMsg); - tsQhandleCache = taosCacheInitWithCb(tsMgmtTmr, 10, mgmtFreeShowObj); + tsQhandleCache = taosCacheInitWithCb(tsMgmtTmr, 10, mnodeFreeShowObj); } void mnodeCleanUpShow() { @@ -77,48 +77,37 @@ void mnodeAddShowRetrieveHandle(uint8_t msgType, SShowRetrieveFp fp) { tsMnodeShowRetrieveFp[msgType] = fp; } -int32_t mnodeProcessRead(int msgType, void *pCont, int32_t contLen, SRspRet *ret) { - if (vnodeProcessReadMsgFp[msgType] == NULL) - return TSDB_CODE_MSG_NOT_PROCESSED; - - if (pVnode->status == TAOS_VN_STATUS_DELETING || pVnode->status == TAOS_VN_STATUS_CLOSING) - return TSDB_CODE_NOT_ACTIVE_VNODE; - - return (*vnodeProcessReadMsgFp[msgType])(pVnode, pCont, contLen, ret); -} - - -char *mgmtGetShowTypeStr(int32_t showType) { +char *mnodeGetShowType(int32_t showType) { switch (showType) { - case TSDB_MGMT_TABLE_ACCT: return "show accounts"; - case TSDB_MGMT_TABLE_USER: return "show users"; - case TSDB_MGMT_TABLE_DB: return "show databases"; - case TSDB_MGMT_TABLE_TABLE: return "show tables"; - case TSDB_MGMT_TABLE_DNODE: return "show dnodes"; - case TSDB_MGMT_TABLE_MNODE: return "show mnodes"; - case TSDB_MGMT_TABLE_VGROUP: return "show vgroups"; - case TSDB_MGMT_TABLE_METRIC: return "show stables"; - case TSDB_MGMT_TABLE_MODULE: return "show modules"; - case TSDB_MGMT_TABLE_QUERIES: return "show queries"; - case TSDB_MGMT_TABLE_STREAMS: return "show streams"; - case TSDB_MGMT_TABLE_CONFIGS: return "show configs"; - case TSDB_MGMT_TABLE_CONNS: return "show connections"; - case TSDB_MGMT_TABLE_SCORES: return "show scores"; - case TSDB_MGMT_TABLE_GRANTS: return "show grants"; - case TSDB_MGMT_TABLE_VNODES: return "show vnodes"; + case TSDB_MNODE_TABLE_ACCT: return "show accounts"; + case TSDB_MNODE_TABLE_USER: return "show users"; + case TSDB_MNODE_TABLE_DB: return "show databases"; + case TSDB_MNODE_TABLE_TABLE: return "show tables"; + case TSDB_MNODE_TABLE_DNODE: return "show dnodes"; + case TSDB_MNODE_TABLE_MNODE: return "show mnodes"; + case TSDB_MNODE_TABLE_VGROUP: return "show vgroups"; + case TSDB_MNODE_TABLE_METRIC: return "show stables"; + case TSDB_MNODE_TABLE_MODULE: return "show modules"; + case TSDB_MNODE_TABLE_QUERIES: return "show queries"; + case TSDB_MNODE_TABLE_STREAMS: return "show streams"; + case TSDB_MNODE_TABLE_CONFIGS: return "show configs"; + case TSDB_MNODE_TABLE_CONNS: return "show connections"; + case TSDB_MNODE_TABLE_SCORES: return "show scores"; + case TSDB_MNODE_TABLE_GRANTS: return "show grants"; + case TSDB_MNODE_TABLE_VNODES: return "show vnodes"; default: return "undefined"; } } -static void mgmtProcessShowMsg(SMnodeMsg *pMsg) { +static void mnodeProcessShowMsg(SMnodeMsg *pMsg) { SCMShowMsg *pShowMsg = pMsg->pCont; - if (pShowMsg->type >= TSDB_MGMT_TABLE_MAX) { + if (pShowMsg->type >= TSDB_MNODE_TABLE_MAX) { mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_MSG_TYPE); return; } if (!tsMnodeShowMetaFp[pShowMsg->type] || !tsMnodeShowRetrieveFp[pShowMsg->type]) { - mError("show type:%s is not support", mgmtGetShowTypeStr(pShowMsg->type)); + mError("show type:%s is not support", mnodeGetShowType(pShowMsg->type)); mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_OPS_NOT_SUPPORT); return; } @@ -141,7 +130,7 @@ static void mgmtProcessShowMsg(SMnodeMsg *pMsg) { pShow = mgmtSaveQhandle(pShow, showObjSize); pShowRsp->qhandle = htobe64((uint64_t) pShow); - mTrace("show:%p, type:%s, start to get meta", pShow, mgmtGetShowTypeStr(pShowMsg->type)); + mTrace("show:%p, type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->thandle); if (code == 0) { SRpcMsg rpcRsp = { @@ -152,7 +141,7 @@ static void mgmtProcessShowMsg(SMnodeMsg *pMsg) { }; rpcSendResponse(&rpcRsp); } else { - mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mgmtGetShowTypeStr(pShowMsg->type), tstrerror(code)); + mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); mgmtFreeQhandle(pShow, false); SRpcMsg rpcRsp = { .handle = pMsg->thandle, @@ -162,7 +151,7 @@ static void mgmtProcessShowMsg(SMnodeMsg *pMsg) { } } -static void mgmtProcessRetrieveMsg(SMnodeMsg *pMsg) { +static void mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { int32_t rowsToRead = 0; int32_t size = 0; int32_t rowsRead = 0; @@ -180,7 +169,7 @@ static void mgmtProcessRetrieveMsg(SMnodeMsg *pMsg) { } SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; - mTrace("show:%p, type:%s, retrieve data", pShow, mgmtGetShowTypeStr(pShow->type)); + mTrace("show:%p, type:%s, retrieve data", pShow, mnodeGetShowType(pShow->type)); if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) { rowsToRead = pShow->numOfRows - pShow->numOfReads; @@ -228,7 +217,7 @@ static void mgmtProcessRetrieveMsg(SMnodeMsg *pMsg) { } } -static void mgmtProcessHeartBeatMsg(SMnodeMsg *pMsg) { +static void mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) { SCMHeartBeatRsp *pHBRsp = (SCMHeartBeatRsp *) rpcMallocCont(sizeof(SCMHeartBeatRsp)); if (pHBRsp == NULL) { mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); @@ -257,7 +246,7 @@ static void mgmtProcessHeartBeatMsg(SMnodeMsg *pMsg) { rpcSendResponse(&rpcRsp); } -static void mgmtProcessConnectMsg(SMnodeMsg *pMsg) { +static void mnodeProcessConnectMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMConnectMsg *pConnectMsg = pMsg->pCont; @@ -317,7 +306,7 @@ static void mgmtProcessConnectMsg(SMnodeMsg *pMsg) { rpcSendResponse(&rpcRsp); } -static void mgmtProcessUseMsg(SMnodeMsg *pMsg) { +static void mnodeProcessUseMsg(SMnodeMsg *pMsg) { SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; SCMUseDbMsg *pUseDbMsg = pMsg->pCont; @@ -413,7 +402,7 @@ void* mgmtSaveQhandle(void *qhandle, int32_t size) { return NULL; } -static void mgmtFreeShowObj(void *data) { +static void mnodeFreeShowObj(void *data) { SShowObj *pShow = data; sdbFreeIter(pShow->pIter); mTrace("show:%p, is destroyed", pShow); diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 609be0f5420..51161372fb7 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -26,19 +26,19 @@ #include "tglobal.h" #include "hash.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtDb.h" -#include "mgmtDnode.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDb.h" +#include "mnodeDnode.h" #include "tgrant.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtTable.h" -#include "mgmtUser.h" -#include "mgmtVgroup.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeTable.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" #include "tcompare.h" #include "tdataformat.h" @@ -559,10 +559,10 @@ int32_t mgmtInitTables() { dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_TABLE, mgmtProcessTableCfgMsg); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_TABLE, mgmtGetShowTableMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_TABLE, mgmtRetrieveShowTables); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_METRIC, mgmtGetShowSuperTableMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_METRIC, mgmtRetrieveShowSuperTables); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_TABLE, mgmtGetShowTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_TABLE, mgmtRetrieveShowTables); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_METRIC, mgmtGetShowSuperTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_METRIC, mgmtRetrieveShowSuperTables); return TSDB_CODE_SUCCESS; } diff --git a/src/mnode/src/mnodeUser.c b/src/mnode/src/mnodeUser.c index e346d804c28..2a686d05ee1 100644 --- a/src/mnode/src/mnodeUser.c +++ b/src/mnode/src/mnodeUser.c @@ -22,13 +22,13 @@ #include "tgrant.h" #include "tdataformat.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtAcct.h" -#include "mgmtMnode.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtUser.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeMnode.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeUser.h" static void * tsUserSdb = NULL; static int32_t tsUserUpdateSize = 0; @@ -139,8 +139,8 @@ int32_t mgmtInitUsers() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_USER, mgmtProcessCreateUserMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_USER, mgmtProcessAlterUserMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mgmtProcessDropUserMsg); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_USER, mgmtGetUserMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mgmtRetrieveUsers); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_USER, mgmtGetUserMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_USER, mgmtRetrieveUsers); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_AUTH, mgmtProcessAuthMsg); mTrace("table:%s, hash is created", tableDesc.tableName); diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index ffc5487a424..74753142aab 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -25,16 +25,16 @@ #include "tglobal.h" #include "dnode.h" #include "tdataformat.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtDb.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtProfile.h" -#include "mgmtSdb.h" -#include "mgmtShell.h" -#include "mgmtTable.h" -#include "mgmtVgroup.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeDb.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeSdb.h" +#include "mnodeShell.h" +#include "mnodeTable.h" +#include "mnodeVgroup.h" static void *tsVgroupSdb = NULL; static int32_t tsVgUpdateSize = 0; @@ -220,8 +220,8 @@ int32_t mgmtInitVgroups() { return -1; } - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VGROUP, mgmtGetVgroupMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VGROUP, mgmtRetrieveVgroups); + mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_VGROUP, mgmtGetVgroupMeta); + mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_VGROUP, mgmtRetrieveVgroups); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP, mgmtProcessCreateVnodeRsp); dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_DROP_VNODE_RSP, mgmtProcessDropVnodeRsp); dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_VNODE, mgmtProcessVnodeCfgMsg); diff --git a/src/mnode/src/mnodeWrite.c b/src/mnode/src/mnodeWrite.c index 0fb4cf3d49e..69a4a530773 100644 --- a/src/mnode/src/mnodeWrite.c +++ b/src/mnode/src/mnodeWrite.c @@ -22,18 +22,18 @@ #include "ttimer.h" #include "tglobal.h" #include "dnode.h" -#include "mgmtDef.h" -#include "mgmtInt.h" -#include "mgmtServer.h" -#include "mgmtAcct.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" -#include "mgmtDb.h" -#include "mgmtSdb.h" -#include "mgmtVgroup.h" -#include "mgmtUser.h" -#include "mgmtTable.h" -#include "mgmtShell.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeServer.h" +#include "mnodeAcct.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeDb.h" +#include "mnodeSdb.h" +#include "mnodeVgroup.h" +#include "mnodeUser.h" +#include "mnodeTable.h" +#include "mnodeShell.h" static void (*tsMnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); From 3882d0fa2d4f455f08e9a2a37518234096ecb778 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Tue, 26 May 2020 13:46:50 +0000 Subject: [PATCH 16/85] [TD-90]tagschema develop --- src/common/src/tdataformat.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 38d82f628b9..5359d985357 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -162,10 +162,10 @@ int tdDeleteTagCol(SDataRow row, int16_t colId){ // delete tag value and updat return 0; }; -static int compTagVal(const void *key1, const void *key2) { - if (*(int16_t *)key1 > *(int16_t *)key2) { +static int compTagId(const void *key1, const void *key2) { + if (((STagCol *)key1)->colId > ((STagCol *)key2)->colId) { return 1; - } else if (*(int16_t *)key1 == *(int16_t *)key2) { + } else if (((STagCol *)key1)->colId == ((STagCol *)key2)->colId) { return 0; } else { return -1; @@ -178,8 +178,9 @@ void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type) { //if find t STagCol *pBase = ((STagRow *)row)->tagCols; int16_t nCols = ((STagRow *)row)->ncols; + STagCol key = {colId,0,0}; - STagCol * stCol = taosbsearch(&colId, pBase, nCols, sizeof(STagCol), compTagVal, TD_EQ); + STagCol * stCol = taosbsearch(&key, pBase, nCols, sizeof(STagCol), compTagId, TD_EQ); if (NULL == stCol) { return NULL; } @@ -270,7 +271,7 @@ SDataRow tdTagRowDecode(SDataRow row) { free(trow); return NULL; } - char * pData = (char *)row + dataRowLen(row) + sizeof(int32_t); + char * pData = (char *)row + dataRowLen(row); memcpy(trow->pData, pData, trow->dataLen); return trow; } From 1dc32106052ca9228895de39db9c1965accc7103 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 26 May 2020 15:14:50 +0000 Subject: [PATCH 17/85] TD-423 --- src/tsdb/src/tsdbMain.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 55342ffd38a..27473e805c1 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -936,7 +936,7 @@ static SSkipListIterator **tsdbCreateTableIters(STsdbMeta *pMeta, int maxTables) for (int tid = 1; tid < maxTables; tid++) { STable *pTable = pMeta->tables[tid]; - if (pTable == NULL || pTable->imem == NULL) continue; + if (pTable == NULL || pTable->imem == NULL || pTable->imem->numOfRows == 0) continue; iters[tid] = tSkipListCreateIter(pTable->imem->pData); if (iters[tid] == NULL) goto _err; @@ -968,12 +968,12 @@ static void *tsdbCommitData(void *arg) { SRWHelper whelper = {{0}}; if (pCache->imem == NULL) return NULL; - tsdbPrint("vgId: %d, starting to commit....", pRepo->config.tsdbId); + tsdbPrint("vgId:%d, starting to commit....", pRepo->config.tsdbId); // Create the iterator to read from cache SSkipListIterator **iters = tsdbCreateTableIters(pMeta, pCfg->maxTables); if (iters == NULL) { - // TODO: deal with the error + ASSERT(0); return NULL; } @@ -1015,6 +1015,7 @@ static void *tsdbCommitData(void *arg) { } } tsdbUnLockRepo(arg); + tsdbPrint("vgId:%d, commit over....", pRepo->config.tsdbId); return NULL; } From 806a9ae55ceb112d40c8dabeb7824031fd6201c8 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Tue, 26 May 2020 19:39:41 -0700 Subject: [PATCH 18/85] Commit to replicate TD-430 --- tests/pytest/crash_gen.py | 104 +++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 34 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 49c3c15a42a..8a0a043fb02 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -74,10 +74,10 @@ def __init__(self, pool: ThreadPool, tid, self._dbConn = DbConn() def logDebug(self, msg): - logger.info(" t[{}] {}".format(self._tid, msg)) + logger.info(" TRD[{}] {}".format(self._tid, msg)) def logInfo(self, msg): - logger.info(" t[{}] {}".format(self._tid, msg)) + logger.info(" TRD[{}] {}".format(self._tid, msg)) def getTaskExecutor(self): @@ -106,16 +106,19 @@ def _doTaskLoop(self) : while True: tc = self._tc # Thread Coordinator, the overall master tc.crossStepBarrier() # shared barrier first, INCLUDING the last one - # logger.debug("Thread task loop exited barrier...") + logger.debug("[TRD] Worker thread [{}] exited barrier...".format(self._tid)) self.crossStepGate() # then per-thread gate, after being tapped - # logger.debug("Thread task loop exited step gate...") + logger.debug("[TRD] Worker thread [{}] exited step gate...".format(self._tid)) if not self._tc.isRunning(): - logger.debug("Thread Coordinator not running any more, worker thread now stopping...") + logger.debug("[TRD] Thread Coordinator not running any more, worker thread now stopping...") break + logger.debug("[TRD] Worker thread [{}] about to fetch task".format(self._tid)) task = tc.fetchTask() + logger.debug("[TRD] Worker thread [{}] about to execute task".format(self._tid)) task.execute(self) tc.saveExecutedTask(task) + logger.debug("[TRD] Worker thread [{}] finished executing task".format(self._tid)) def verifyThreadSelf(self): # ensure we are called by this own thread if ( threading.get_ident() != self._thread.ident ): @@ -135,7 +138,7 @@ def crossStepGate(self): self.verifyThreadSelf() # only allowed by ourselves # Wait again at the "gate", waiting to be "tapped" - # logger.debug("Worker thread {} about to cross the step gate".format(self._tid)) + logger.debug("[TRD] Worker thread {} about to cross the step gate".format(self._tid)) self._stepGate.wait() self._stepGate.clear() @@ -145,7 +148,7 @@ def tapStepGate(self): # give it a tap, release the thread waiting there self.verifyThreadAlive() self.verifyThreadMain() # only allowed for main thread - # logger.debug("Tapping worker thread {}".format(self._tid)) + logger.debug("[TRD] Tapping worker thread {}".format(self._tid)) self._stepGate.set() # wake up! time.sleep(0) # let the released thread run a bit @@ -192,8 +195,9 @@ def run(self): self._execStats.startExec() # start the stop watch failed = False while(self._curStep < maxSteps-1 and not failed): # maxStep==10, last curStep should be 9 - print(".", end="", flush=True) - logger.debug("Main thread going to sleep") + if not gConfig.debug: + print(".", end="", flush=True) # print this only if we are not in debug mode + logger.debug("[TRD] Main thread going to sleep") # Now ready to enter a step self.crossStepBarrier() # let other threads go past the pool barrier, but wait at the thread gate @@ -226,7 +230,7 @@ def run(self): if not failed: # only if not failed self._te = TaskExecutor(self._curStep) - logger.debug("Main thread waking up at step {}, tapping worker threads".format(self._curStep)) # Now not all threads had time to go to sleep + logger.debug("[TRD] Main thread waking up at step {}, tapping worker threads".format(self._curStep)) # Now not all threads had time to go to sleep self.tapAllThreads() logger.debug("Main thread ready to finish up...") @@ -253,7 +257,7 @@ def tapAllThreads(self): # in a deterministic manner wakeSeq.append(i) else: wakeSeq.insert(0, i) - logger.info("Waking up threads: {}".format(str(wakeSeq))) + logger.info("[TRD] Main thread waking up worker thread: {}".format(str(wakeSeq))) # TODO: set dice seed to a deterministic value for i in wakeSeq: self._pool.threadList[i].tapStepGate() # TODO: maybe a bit too deep?! @@ -473,7 +477,7 @@ def __init__(self): self._info = self.getInfo() def __str__(self): - return self._stateNames[self._info[self.STATE_VAL_IDX] - 1] # -1 hack to accomodate the STATE_INVALID case + return self._stateNames[self._info[self.STATE_VAL_IDX] + 1] # -1 hack to accomodate the STATE_INVALID case def getInfo(self): raise RuntimeError("Must be overriden by child classes") @@ -481,6 +485,9 @@ def getInfo(self): def verifyTasksToState(self, tasks, newState): raise RuntimeError("Must be overriden by child classes") + def getValIndex(self): + return self._info[self.STATE_VAL_IDX] + def getValue(self): return self._info[self.STATE_VAL_IDX] def canCreateDb(self): @@ -502,7 +509,7 @@ def assertAtMostOneSuccess(self, tasks, cls): if not isinstance(task, cls): continue if task.isSuccess(): - task.logDebug("Task success found") + # task.logDebug("Task success found") sCnt += 1 if ( sCnt >= 2 ): raise RuntimeError("Unexpected more than 1 success with task: {}".format(cls)) @@ -669,7 +676,7 @@ def __init__(self): else: raise except: - print("[=]Unexpected exception") + print("[=] Unexpected exception") raise self._dbConn.resetDb() # drop and recreate DB self._state = StateEmpty() # initial state, the result of above @@ -711,15 +718,26 @@ def getTableNameToDelete(self): def cleanUp(self): self._dbConn.close() - def getTaskTypesAtState(self): + # May be slow, use cautionsly... + def getTaskTypesAtState(self): allTaskClasses = StateTransitionTask.__subclasses__() # all state transition tasks - taskTypes = [] + firstTaskTypes = [] for tc in allTaskClasses: - # t = tc(self) # create task object + # t = tc(self) # create task object if tc.canBeginFrom(self._state): - taskTypes.append(tc) + firstTaskTypes.append(tc) + # now we have all the tasks that can begin directly from the current state, let's figure out the INDIRECT ones + taskTypes = firstTaskTypes.copy() # have to have these + for task1 in firstTaskTypes: # each task type gathered so far + endState = task1.getEndState() # figure the end state + if endState == None: + continue + for tc in allTaskClasses: # what task can further begin from there? + if tc.canBeginFrom(endState) and (endState not in firstTaskTypes): + taskTypes.append(tc) # gather it + if len(taskTypes) <= 0: - raise RuntimeError("No suitable task types found for state: {}".format(self._state)) + raise RuntimeError("No suitable task types found for state: {}".format(self._state)) return taskTypes # tasks.append(ReadFixedDataTask(self)) # always for everybody @@ -746,7 +764,7 @@ def pickTaskType(self): for tt in taskTypes: endState = tt.getEndState() if endState != None : - weights.append(self._stateWeights[endState]) # TODO: change to a method + weights.append(self._stateWeights[endState.getValIndex()]) # TODO: change to a method else: weights.append(10) # read data task, default to 10: TODO: change to a constant i = self._weighted_choice_sub(weights) @@ -763,13 +781,17 @@ def _weighted_choice_sub(self, weights): # ref: https://eli.thegreenplace.net/20 def _findCurrentState(self): dbc = self._dbConn if dbc.query("show databases") == 0 : # no database?! + # logger.debug("Found EMPTY state") return StateEmpty() dbc.execute("use db") # did not do this when openning connection if dbc.query("show tables") == 0 : # no tables + # logger.debug("Found DB ONLY state") return StateDbOnly() - if dbc.query("SELECT * FROM {}".format(self.getFixedTableName()) ) == 0 : # no data + if dbc.query("SELECT * FROM db.{}".format(self.getFixedTableName()) ) == 0 : # no data + # logger.debug("Found TABLE_ONLY state") return StateTableOnly() else: + # logger.debug("Found HAS_DATA state") return StateHasData() def transition(self, tasks): @@ -828,10 +850,11 @@ class Task(): @classmethod def allocTaskNum(cls): - cls.taskSn += 1 - return cls.taskSn + Task.taskSn += 1 # IMPORTANT: cannot use cls.taskSn, since each sub class will have a copy + # logger.debug("Allocating taskSN: {}".format(Task.taskSn)) + return Task.taskSn - def __init__(self, dbState: DbState, execStats: ExecutionStats): + def __init__(self, dbState: DbState, execStats: ExecutionStats): self._dbState = dbState self._workerThread = None self._err = None @@ -840,6 +863,7 @@ def __init__(self, dbState: DbState, execStats: ExecutionStats): # Assign an incremental task serial number self._taskNum = self.allocTaskNum() + # logger.debug("Creating new task {}...".format(self._taskNum)) self._execStats = execStats @@ -851,10 +875,10 @@ def clone(self): # TODO: why do we need this again? return newTask def logDebug(self, msg): - self._workerThread.logDebug("s[{}.{}] {}".format(self._curStep, self._taskNum, msg)) + self._workerThread.logDebug("Step[{}.{}] {}".format(self._curStep, self._taskNum, msg)) def logInfo(self, msg): - self._workerThread.logInfo("s[{}.{}] {}".format(self._curStep, self._taskNum, msg)) + self._workerThread.logInfo("Step[{}.{}] {}".format(self._curStep, self._taskNum, msg)) def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): raise RuntimeError("To be implemeted by child classes, class name: {}".format(self.__class__.__name__)) @@ -872,10 +896,10 @@ def execute(self, wt: WorkerThread): try: self._executeInternal(te, wt) # TODO: no return value? except taos.error.ProgrammingError as err: - self.logDebug("[=]Taos Execution exception: {0}".format(err)) + self.logDebug("[=] Taos library exception: errno={}, msg: {}".format(err.errno, err)) self._err = err except: - self.logDebug("[=]Unexpected exception") + self.logDebug("[=] Unexpected exception") raise self._execStats.endTaskType(self.__class__.__name__, self.isSuccess()) @@ -962,7 +986,7 @@ def getInfo(cls): # each sub class should supply their own information # return cls.getInfo()[0] @classmethod - def getEndState(cls): + def getEndState(cls): # returning the class name return cls.getInfo()[0] @classmethod @@ -980,7 +1004,7 @@ class CreateDbTask(StateTransitionTask): def getInfo(cls): return [ # [AnyState.STATE_EMPTY], # can begin from - AnyState.STATE_DB_ONLY # end state + StateDbOnly() # end state ] @classmethod @@ -995,7 +1019,7 @@ class DropDbTask(StateTransitionTask): def getInfo(cls): return [ # [AnyState.STATE_DB_ONLY, AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], - AnyState.STATE_EMPTY + StateEmpty() ] @classmethod @@ -1010,7 +1034,7 @@ class CreateFixedTableTask(StateTransitionTask): def getInfo(cls): return [ # [AnyState.STATE_DB_ONLY], - AnyState.STATE_TABLE_ONLY + StateTableOnly() ] @classmethod @@ -1043,7 +1067,7 @@ class DropFixedTableTask(StateTransitionTask): def getInfo(cls): return [ # [AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], - AnyState.STATE_DB_ONLY # meaning doesn't affect state + StateDbOnly() # meaning doesn't affect state ] @classmethod @@ -1059,7 +1083,7 @@ class AddFixedDataTask(StateTransitionTask): def getInfo(cls): return [ # [AnyState.STATE_TABLE_ONLY, AnyState.STATE_HAS_DATA], - AnyState.STATE_HAS_DATA + StateHasData() ] @classmethod @@ -1164,6 +1188,17 @@ def throwRange(cls, start, stop): # up to stop-1 # task = self.pickTask() # task.execute(workerThread) +class LoggingFilter(logging.Filter): + def filter(self, record: logging.LogRecord): + msg = record.msg + # print("type = {}, value={}".format(type(msg), msg)) + # sys.exit() + if msg.startswith("[TRD]"): + return False + return True + + + def main(): # Super cool Python argument library: https://docs.python.org/3/library/argparse.html parser = argparse.ArgumentParser( @@ -1192,6 +1227,7 @@ def main(): global logger logger = logging.getLogger('CrashGen') + logger.addFilter(LoggingFilter()) if ( gConfig.debug ): logger.setLevel(logging.DEBUG) # default seems to be INFO ch = logging.StreamHandler() From 36daff8edca00c168c7867d67dc271ee77fc05f2 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Wed, 27 May 2020 02:47:00 +0000 Subject: [PATCH 19/85] [TD-90] tagschema develop --- src/common/src/tdataformat.c | 4 ---- src/tsdb/src/tsdbRead.c | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 5359d985357..6a567c6e6c7 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -173,13 +173,10 @@ static int compTagId(const void *key1, const void *key2) { } void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type) { //if find tag, 0, else return -1; - //todo ASSERT(((STagRow *)row)->pData != NULL); - STagCol *pBase = ((STagRow *)row)->tagCols; int16_t nCols = ((STagRow *)row)->ncols; STagCol key = {colId,0,0}; - STagCol * stCol = taosbsearch(&key, pBase, nCols, sizeof(STagCol), compTagId, TD_EQ); if (NULL == stCol) { return NULL; @@ -196,7 +193,6 @@ int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int //ASSERT(bytes-2 == varDataTLen(value)); ASSERT(row != NULL); STagRow *pTagrow = row; - pTagrow->tagCols[pTagrow->ncols].colId = colId; pTagrow->tagCols[pTagrow->ncols].colType = type; pTagrow->tagCols[pTagrow->ncols].offset = pTagrow->dataLen; diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index 720479130be..2220ebfd88a 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -1847,10 +1847,10 @@ bool indexedNodeFilterFp(const void* pNode, void* param) { int16_t type; // int32_t offset = pTSchema->columns[pInfo->colIndex].offset; // val = tdGetRowDataOfCol(elem->pTable->tagVal, pInfo->sch.type, TD_DATA_ROW_HEAD_SIZE + offset); - val = tdQueryTagByID(elem->pTable->tagVal, pInfo->colIndex, &type); + val = tdQueryTagByID(elem->pTable->tagVal, pInfo->sch.colId, &type); // ASSERT(pInfo->sch.type == type); } - + //todo :the val is possible to be null, so check it out carefully int32_t ret = 0; if (type == TSDB_DATA_TYPE_BINARY || type == TSDB_DATA_TYPE_NCHAR) { if (pInfo->optr == TSDB_RELATION_IN) { From a46e41f0e51568931d42ab22d5e14caee2e56845 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Wed, 27 May 2020 02:48:00 +0000 Subject: [PATCH 20/85] security flag shall be reset if a newlink from client --- src/rpc/src/rpcMain.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index a8bb2fd65b2..297ff31ed98 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -594,7 +594,10 @@ static SRpcConn *rpcAllocateServerConn(SRpcInfo *pRpc, SRecvInfo *pRecv) { // check if it is already allocated SRpcConn **ppConn = (SRpcConn **)(taosHashGet(pRpc->hash, hashstr, size)); if (ppConn) pConn = *ppConn; - if (pConn) return pConn; + if (pConn) { + pConn->secured = 0; + return pConn; + } int sid = taosAllocateId(pRpc->idPool); if (sid <= 0) { From 5270b1e331ec924c9fa5548a898c8a85dae4a6d3 Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Wed, 27 May 2020 10:51:46 +0800 Subject: [PATCH 21/85] define error in hex --- src/inc/taoserror.h | 223 ++++++++++++++++++++++---------------------- 1 file changed, 111 insertions(+), 112 deletions(-) diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index ae30efd93eb..ca520ff803e 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -46,145 +46,144 @@ static STaosError errors[] = { #endif // rpc -TAOS_DEFINE_ERROR(TSDB_CODE_ACTION_IN_PROGRESS, 0, 1, "action in progress") -TAOS_DEFINE_ERROR(TSDB_CODE_ACTION_NEED_REPROCESSED, 0, 3, "action need to be reprocessed") -TAOS_DEFINE_ERROR(TSDB_CODE_MSG_NOT_PROCESSED, 0, 4, "message not processed") -TAOS_DEFINE_ERROR(TSDB_CODE_ALREADY_PROCESSED, 0, 5, "message already processed") -TAOS_DEFINE_ERROR(TSDB_CODE_REDIRECT, 0, 6, "redirect") -TAOS_DEFINE_ERROR(TSDB_CODE_LAST_SESSION_NOT_FINISHED, 0, 7, "last session not finished") -TAOS_DEFINE_ERROR(TSDB_CODE_MAX_SESSIONS, 0, 8, "max sessions") // too many sessions -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_SESSION_ID, 0, 9, "invalid session id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TRAN_ID, 0, 10, "invalid transaction id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_TYPE, 0, 11, "invalid message type") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_LEN, 0, 12, "invalid message length") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_CONTENT, 0, 13, "invalid message content") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_VERSION, 0, 14, "invalid message version") -TAOS_DEFINE_ERROR(TSDB_CODE_UNEXPECTED_RESPONSE, 0, 15, "unexpected response") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_RESPONSE_TYPE, 0, 16, "invalid response type") -TAOS_DEFINE_ERROR(TSDB_CODE_MISMATCHED_METER_ID, 0, 17, "mismatched meter id") -TAOS_DEFINE_ERROR(TSDB_CODE_DISCONNECTED, 0, 18, "disconnected") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_READY, 0, 19, "not ready") // peer is not ready to process data -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_SLOW, 0, 20, "too slow") -TAOS_DEFINE_ERROR(TSDB_CODE_OTHERS, 0, 21, "others") -TAOS_DEFINE_ERROR(TSDB_CODE_APP_ERROR, 0, 22, "app error") -TAOS_DEFINE_ERROR(TSDB_CODE_ALREADY_THERE, 0, 23, "already there") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_RESOURCE, 0, 14, "no resource") -TAOS_DEFINE_ERROR(TSDB_CODE_OPS_NOT_SUPPORT, 0, 25, "operations not support") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_OPTION, 0, 26, "invalid option") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_CONFIGURED, 0, 27, "not configured") -TAOS_DEFINE_ERROR(TSDB_CODE_NODE_OFFLINE, 0, 28, "node offline") -TAOS_DEFINE_ERROR(TSDB_CODE_NETWORK_UNAVAIL, 0, 29, "network unavailable") -TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_REQUIRED, 0, 30, "auth required") +TAOS_DEFINE_ERROR(TSDB_CODE_ACTION_IN_PROGRESS, 0, 0x0001, "action in progress") +TAOS_DEFINE_ERROR(TSDB_CODE_ACTION_NEED_REPROCESSED, 0, 0x0003, "action need to be reprocessed") +TAOS_DEFINE_ERROR(TSDB_CODE_MSG_NOT_PROCESSED, 0, 0x0004, "message not processed") +TAOS_DEFINE_ERROR(TSDB_CODE_ALREADY_PROCESSED, 0, 0x0005, "message already processed") +TAOS_DEFINE_ERROR(TSDB_CODE_REDIRECT, 0, 0x0006, "redirect") +TAOS_DEFINE_ERROR(TSDB_CODE_LAST_SESSION_NOT_FINISHED, 0, 0x0007, "last session not finished") +TAOS_DEFINE_ERROR(TSDB_CODE_MAX_SESSIONS, 0, 0x0008, "max sessions") // too many sessions +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_SESSION_ID, 0, 0x0009, "invalid session id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TRAN_ID, 0, 0x000A, "invalid transaction id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_TYPE, 0, 0x000B, "invalid message type") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_LEN, 0, 0x000C, "invalid message length") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_CONTENT, 0, 0x000D, "invalid message content") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_MSG_VERSION, 0, 0x000E, "invalid message version") +TAOS_DEFINE_ERROR(TSDB_CODE_UNEXPECTED_RESPONSE, 0, 0x000F, "unexpected response") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_RESPONSE_TYPE, 0, 0x0010, "invalid response type") +TAOS_DEFINE_ERROR(TSDB_CODE_MISMATCHED_METER_ID, 0, 0x0011, "mismatched meter id") +TAOS_DEFINE_ERROR(TSDB_CODE_DISCONNECTED, 0, 0x0012, "disconnected") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_READY, 0, 0x0013, "not ready") // peer is not ready to process data +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_SLOW, 0, 0x0014, "too slow") +TAOS_DEFINE_ERROR(TSDB_CODE_OTHERS, 0, 0x0015, "others") +TAOS_DEFINE_ERROR(TSDB_CODE_APP_ERROR, 0, 0x0016, "app error") +TAOS_DEFINE_ERROR(TSDB_CODE_ALREADY_THERE, 0, 0x0017, "already there") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_RESOURCE, 0, 0x0018, "no resource") +TAOS_DEFINE_ERROR(TSDB_CODE_OPS_NOT_SUPPORT, 0, 0x0019, "operations not support") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_OPTION, 0, 0x001A, "invalid option") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_CONFIGURED, 0, 0x001B, "not configured") +TAOS_DEFINE_ERROR(TSDB_CODE_NODE_OFFLINE, 0, 0x001C, "node offline") +TAOS_DEFINE_ERROR(TSDB_CODE_NETWORK_UNAVAIL, 0, 0x001D, "network unavailable") +TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_REQUIRED, 0, 0x001E, "auth required") // db -TAOS_DEFINE_ERROR(TSDB_CODE_DB_NOT_SELECTED, 0, 100, "db not selected") -TAOS_DEFINE_ERROR(TSDB_CODE_DB_ALREADY_EXIST, 0, 101, "database aleady exist") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_DB, 0, 102, "invalid database") -TAOS_DEFINE_ERROR(TSDB_CODE_MONITOR_DB_FORBIDDEN, 0, 103, "monitor db forbidden") +TAOS_DEFINE_ERROR(TSDB_CODE_DB_NOT_SELECTED, 0, 0x0100, "db not selected") +TAOS_DEFINE_ERROR(TSDB_CODE_DB_ALREADY_EXIST, 0, 0x0101, "database aleady exist") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_DB, 0, 0x0102, "invalid database") +TAOS_DEFINE_ERROR(TSDB_CODE_MONITOR_DB_FORBIDDEN, 0, 0x0103, "monitor db forbidden") // user -TAOS_DEFINE_ERROR(TSDB_CODE_USER_ALREADY_EXIST, 0, 150, "user already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_USER, 0, 151, "invalid user") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_PASS, 0, 152, "invalid password") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_USER_FORMAT, 0, 153, "invalid user format") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_PASS_FORMAT, 0, 154, "invalid password format") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_USER_FROM_CONN, 0, 155, "can not get user from conn") +TAOS_DEFINE_ERROR(TSDB_CODE_USER_ALREADY_EXIST, 0, 0x0180, "user already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_USER, 0, 0x0181, "invalid user") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_PASS, 0, 0x0182, "invalid password") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_USER_FORMAT, 0, 0x0183, "invalid user format") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_PASS_FORMAT, 0, 0x0184, "invalid password format") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_USER_FROM_CONN, 0, 0x0185, "can not get user from conn") // table -TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ALREADY_EXIST, 0, 200, "table already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_ID, 0, 201, "invalid table id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_TYPE, 0, 202, "invalid table typee") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE, 0, 203, "invalid table name") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUPER_TABLE, 0, 204, "no super table") // operation only available for super table -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_TABLE, 0, 205, "not active table") -TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ID_MISMATCH, 0, 206, "table id mismatch") -TAOS_DEFINE_ERROR(TSDB_CODE_TAG_ALREAY_EXIST, 0, 207, "tag already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_TAG_NOT_EXIST, 0, 208, "tag not exist") -TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_ALREAY_EXIST, 0, 209, "field already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_NOT_EXIST, 0, 210, "field not exist") -TAOS_DEFINE_ERROR(TSDB_CODE_COL_NAME_TOO_LONG, 0, 211, "column name too long") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TAGS, 0, 211, "too many tags") +TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ALREADY_EXIST, 0, 0x0200, "table already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_ID, 0, 0x0201, "invalid table id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_TYPE, 0, 0x0202, "invalid table typee") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE, 0, 0x0203, "invalid table name") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUPER_TABLE, 0, 0x0204, "no super table") // operation only available for super table +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_TABLE, 0, 0x0205, "not active table") +TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ID_MISMATCH, 0, 0x0206, "table id mismatch") +TAOS_DEFINE_ERROR(TSDB_CODE_TAG_ALREAY_EXIST, 0, 0x0207, "tag already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_TAG_NOT_EXIST, 0, 0x0208, "tag not exist") +TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_ALREAY_EXIST, 0, 0x0209, "field already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_NOT_EXIST, 0, 0x020A, "field not exist") +TAOS_DEFINE_ERROR(TSDB_CODE_COL_NAME_TOO_LONG, 0, 0x020B, "column name too long") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TAGS, 0, 0x020C, "too many tags") // dnode & mnode -TAOS_DEFINE_ERROR(TSDB_CODE_NO_ENOUGH_DNODES, 0, 250, "no enough dnodes") -TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_ALREADY_EXIST, 0, 251, "dnode already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_NOT_EXIST, 0, 252, "dnode not exist") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_MASTER, 0, 253, "no master") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_REMOVE_MASTER, 0, 254, "no remove master") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 255, "invalid query id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_STREAM_ID, 0, 256, "invalid stream id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 257, "invalid connection") -TAOS_DEFINE_ERROR(TSDB_CODE_SDB_ERROR, 0, 258, "sdb error") -TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 259, "timestamp is out of range") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_ENOUGH_DNODES, 0, 0x0280, "no enough dnodes") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_ALREADY_EXIST, 0, 0x0281, "dnode already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_NOT_EXIST, 0, 0x0282, "dnode not exist") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_MASTER, 0, 0x0283, "no master") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_REMOVE_MASTER, 0, 0x0284, "no remove master") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 0x0285, "invalid query id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_STREAM_ID, 0, 0x0286, "invalid stream id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 0x0287, "invalid connection") +TAOS_DEFINE_ERROR(TSDB_CODE_SDB_ERROR, 0, 0x0288, "sdb error") +TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 0x0289, "timestamp is out of range") // acct -TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 300, "accounts already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_ACCT, 0, 301, "invalid account") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_ACCT_PARAMETER, 0, 302, "invalid account parameter") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_ACCTS, 0, 303, "too many accounts") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_USERS, 0, 304, "too many users") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TABLES, 0, 305, "too many tables") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_DATABASES, 0, 306, "too many databases") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TIME_SERIES, 0, 307, "not enough time series") +TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 0x0300, "accounts already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_ACCT, 0, 0x0301, "invalid account") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_ACCT_PARAMETER, 0, 0x0302, "invalid account parameter") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_ACCTS, 0, 0x0303, "too many accounts") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_USERS, 0, 0x0304, "too many users") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TABLES, 0, 0x0305, "too many tables") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_DATABASES, 0, 0x0306, "too many databases") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TIME_SERIES, 0, 0x0307, "not enough time series") // grant -TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_FAILURE, 0, 350, "auth failure") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_RIGHTS, 0, 351, "no rights") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_WRITE_ACCESS, 0, 352, "no write access") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_READ_ACCESS, 0, 353, "no read access") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_EXPIRED, 0, 354, "grant expired") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DNODE_LIMITED, 0, 355, "grant dnode limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_ACCT_LIMITED, 0, 356, "grant account limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_TIMESERIES_LIMITED, 0, 357, "grant timeseries limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DB_LIMITED, 0, 358, "grant db limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_USER_LIMITED, 0, 359, "grant user limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CONN_LIMITED, 0, 360, "grant conn limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_STREAM_LIMITED, 0, 361, "grant stream limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_SPEED_LIMITED, 0, 362, "grant speed limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_STORAGE_LIMITED, 0, 363, "grant storage limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_QUERYTIME_LIMITED, 0, 364, "grant query time limited") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CPU_LIMITED, 0, 365, "grant cpu limited") +TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_FAILURE, 0, 0x0380, "auth failure") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_RIGHTS, 0, 0x0381, "no rights") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_WRITE_ACCESS, 0, 0x0382, "no write access") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_READ_ACCESS, 0, 0x0383, "no read access") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_EXPIRED, 0, 0x0384, "grant expired") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DNODE_LIMITED, 0, 0x0385, "grant dnode limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_ACCT_LIMITED, 0, 0x0386, "grant account limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_TIMESERIES_LIMITED, 0, 0x0387, "grant timeseries limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DB_LIMITED, 0, 0x0388, "grant db limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_USER_LIMITED, 0, 0x0389, "grant user limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CONN_LIMITED, 0, 0x038A, "grant conn limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_STREAM_LIMITED, 0, 0x038B, "grant stream limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_SPEED_LIMITED, 0, 0x038C, "grant speed limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_STORAGE_LIMITED, 0, 0x038D, "grant storage limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_QUERYTIME_LIMITED, 0, 0x038E, "grant query time limited") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CPU_LIMITED, 0, 0x038F, "grant cpu limited") // server -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VGROUP_ID, 0, 400, "invalid vgroup id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VNODE_ID, 0, 401, "invalid vnode id") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_VNODE, 0, 402, "not active vnode") -TAOS_DEFINE_ERROR(TSDB_CODE_VG_INIT_FAILED, 0, 403, "vg init failed") -TAOS_DEFINE_ERROR(TSDB_CODE_SERV_NO_DISKSPACE, 0, 404, "server no diskspace") -TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 405, "server out of memory") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_DISK_PERMISSIONS, 0, 406, "no disk permissions") -TAOS_DEFINE_ERROR(TSDB_CODE_FILE_CORRUPTED, 0, 407, "file corrupted") -TAOS_DEFINE_ERROR(TSDB_CODE_MEMORY_CORRUPTED, 0, 408, "memory corrupted") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUCH_FILE_OR_DIR, 0, 409, "no such file or directory") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VGROUP_ID, 0, 0x0400, "invalid vgroup id") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VNODE_ID, 0, 0x0401, "invalid vnode id") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_VNODE, 0, 0x0402, "not active vnode") +TAOS_DEFINE_ERROR(TSDB_CODE_VG_INIT_FAILED, 0, 0x0403, "vg init failed") +TAOS_DEFINE_ERROR(TSDB_CODE_SERV_NO_DISKSPACE, 0, 0x0404, "server no diskspace") +TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 0x0405, "server out of memory") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_DISK_PERMISSIONS, 0, 0x0406, "no disk permissions") +TAOS_DEFINE_ERROR(TSDB_CODE_FILE_CORRUPTED, 0, 0x0407, "file corrupted") +TAOS_DEFINE_ERROR(TSDB_CODE_MEMORY_CORRUPTED, 0, 0x0408, "memory corrupted") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUCH_FILE_OR_DIR, 0, 0x0409, "no such file or directory") // client -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CLIENT_VERSION, 0, 451, "invalid client version") -TAOS_DEFINE_ERROR(TSDB_CODE_CLI_OUT_OF_MEMORY, 0, 452, "client out of memory") -TAOS_DEFINE_ERROR(TSDB_CODE_CLI_NO_DISKSPACE, 0, 453, "client no disk space") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TIME_STAMP, 0, 454, "invalid timestamp") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_SQL, 0, 455, "invalid sql") -TAOS_DEFINE_ERROR(TSDB_CODE_QUERY_CACHE_ERASED, 0, 456, "query cache erased") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_MSG, 0, 457, "invalid query message") // failed to validate the sql expression msg by vnode -TAOS_DEFINE_ERROR(TSDB_CODE_SORTED_RES_TOO_MANY, 0, 458, "sorted res too many") // too many result for ordered super table projection query -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QHANDLE, 0, 459, "invalid handle") -TAOS_DEFINE_ERROR(TSDB_CODE_QUERY_CANCELLED, 0, 460, "query cancelled") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_IE, 0, 461, "invalid ie") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 462, "invalid value") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FQDN, 0, 463, "invalid FQDN") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CLIENT_VERSION, 0, 0x0481, "invalid client version") +TAOS_DEFINE_ERROR(TSDB_CODE_CLI_OUT_OF_MEMORY, 0, 0x0482, "client out of memory") +TAOS_DEFINE_ERROR(TSDB_CODE_CLI_NO_DISKSPACE, 0, 0x0483, "client no disk space") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TIME_STAMP, 0, 0x0484, "invalid timestamp") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_SQL, 0, 0x0485, "invalid sql") +TAOS_DEFINE_ERROR(TSDB_CODE_QUERY_CACHE_ERASED, 0, 0x0486, "query cache erased") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_MSG, 0, 0x0487, "invalid query message") // failed to validate the sql expression msg by vnode +TAOS_DEFINE_ERROR(TSDB_CODE_SORTED_RES_TOO_MANY, 0, 0x0488, "sorted res too many") // too many result for ordered super table projection query +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QHANDLE, 0, 0x0489, "invalid handle") +TAOS_DEFINE_ERROR(TSDB_CODE_QUERY_CANCELLED, 0, 0x048A, "query cancelled") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_IE, 0, 0x048B, "invalid ie") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 0x048C, "invalid value") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FQDN, 0, 0x048D, "invalid FQDN") // others -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 500, "invalid file format") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 0x0500, "invalid file format") // TSDB -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONFIG, 0, 550, "invalid TSDB configuration") +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONFIG, 0, 0x0580, "invalid TSDB configuration") #ifdef TAOS_ERROR_C }; #endif -#define TSDB_CODE_MAX_ERROR_CODE 120 #ifdef __cplusplus } From 9c11c959d519b3471e568bbfd2d15dd3ef282aea Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 27 May 2020 03:28:12 +0000 Subject: [PATCH 22/85] fix option uint print --- src/common/src/tglobal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index 763b3f5c22f..b5252502a32 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -607,7 +607,7 @@ static void doInitGlobalConfig() { cfg.minValue = TSDB_MIN_CACHE_BLOCK_SIZE; cfg.maxValue = TSDB_MAX_CACHE_BLOCK_SIZE; cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_BYTE; + cfg.unitType = TAOS_CFG_UTYPE_Mb; taosInitConfigOption(cfg); cfg.option = "blocks"; @@ -617,7 +617,7 @@ static void doInitGlobalConfig() { cfg.minValue = TSDB_MIN_TOTAL_BLOCKS; cfg.maxValue = TSDB_MAX_TOTAL_BLOCKS; cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_BYTE; + cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); cfg.option = "days"; From c27edd47b7f9aad15c4224d40c1005b8779b583e Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Wed, 27 May 2020 10:22:32 +0800 Subject: [PATCH 23/85] update connector document --- documentation/webdocs/markdowndocs/Connector.md | 2 ++ documentation/webdocs/markdowndocs/connector-ch.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/documentation/webdocs/markdowndocs/Connector.md b/documentation/webdocs/markdowndocs/Connector.md index a0433d1f09d..563d306128d 100644 --- a/documentation/webdocs/markdowndocs/Connector.md +++ b/documentation/webdocs/markdowndocs/Connector.md @@ -2,6 +2,8 @@ TDengine provides many connectors for development, including C/C++, JAVA, Python, RESTful, Go, Node.JS, etc. +NOTE: All APIs which require a SQL string as parameter, including but not limit to `taos_query`, `taos_query_a`, `taos_subscribe` in the C/C++ Connector and their counterparts in other connectors, can ONLY process one SQL statement at a time. If more than one SQL statements are provided, their behaviors are undefined. + ## C/C++ API C/C++ APIs are similar to the MySQL APIs. Applications should include TDengine head file _taos.h_ to use C/C++ APIs by adding the following line in code: diff --git a/documentation/webdocs/markdowndocs/connector-ch.md b/documentation/webdocs/markdowndocs/connector-ch.md index b5d8fb5afb1..47c8381f69c 100644 --- a/documentation/webdocs/markdowndocs/connector-ch.md +++ b/documentation/webdocs/markdowndocs/connector-ch.md @@ -2,6 +2,8 @@ TDengine提供了丰富的应用程序开发接口,其中包括C/C++、JAVA、Python、RESTful、Go等,便于用户快速开发应用。 +注意:所以执行 SQL 语句的 API,例如 C/C++ Connector 中的 `tao_query`、`taos_query_a`、`taos_subscribe` 等,以及其它语言中与它们对应的API,每次都只能执行一条 SQL 语句,如果实际参数中包含了多条语句,它们的行为是未定义的。 + ## C/C++ Connector C/C++的API类似于MySQL的C API。应用程序使用时,需要包含TDengine头文件 _taos.h_(安装后,位于 _/usr/local/taos/include_): From 89da3e1479974f3fc72f0d586c2e8db2adf26e49 Mon Sep 17 00:00:00 2001 From: freemine Date: Wed, 27 May 2020 11:53:57 +0800 Subject: [PATCH 24/85] bugfix: alloc space for holding null-terminator --- src/query/src/qExecutor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 47ad633e34b..72d018d3158 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -5298,7 +5298,7 @@ static int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SArray **pTableIdList, if (pColFilter->filterstr) { pColFilter->len = htobe64(pFilterMsg->len); - pColFilter->pz = (int64_t) calloc(1, pColFilter->len); + pColFilter->pz = (int64_t) calloc(1, pColFilter->len + 1 * TSDB_NCHAR_SIZE); // note: null-terminator memcpy((void *)pColFilter->pz, pMsg, pColFilter->len); pMsg += (pColFilter->len + 1); } else { From 6390536449ff7d3a42ae5e48a98150a5c19c0693 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Wed, 27 May 2020 04:01:34 +0000 Subject: [PATCH 25/85] [TD-90] add insert and modify tag schema --- src/common/inc/tdataformat.h | 2 +- src/common/src/tdataformat.c | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 497279fb27b..528e9b2825b 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -259,7 +259,7 @@ typedef struct { #define tagColSize(r) (sizeof(STagCol) + r.colLen) -int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information +int tdSetTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information int tdDeleteTagCol(SDataRow row, int16_t colId); // delete tag value and update all the information void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type); //if find tag, 0, else return -1; int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int16_t colId); diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 6a567c6e6c7..8c6e26d5e10 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -152,8 +152,10 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) { return row; } -int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId){ //insert tag value and update all the information - //todo +int tdSetTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId){ //insert/update tag value and update all the information + ASSERT(((STagRow *)row)->pData != NULL); + //STagCol * stCol = tdQueryTagColByID() + return 0; }; @@ -172,7 +174,22 @@ static int compTagId(const void *key1, const void *key2) { } } -void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type) { //if find tag, 0, else return -1; +/** + * Find tag structure by colId, if find, return tag structure, else return NULL; + */ +STagCol * tdQueryTagColByID(SDataRow row, int16_t colId, int flags) { //if find tag, 0, else return -1; + ASSERT(((STagRow *)row)->pData != NULL); + STagCol *pBase = ((STagRow *)row)->tagCols; + int16_t nCols = ((STagRow *)row)->ncols; + STagCol key = {colId,0,0}; + STagCol * stCol = taosbsearch(&key, pBase, nCols, sizeof(STagCol), compTagId, flags); + return stCol; +}; + +/** +* Find tag value by colId, if find, return tag value, else return NULL; +*/ +void * tdQueryTagByID(SDataRow row, int16_t colId, int16_t *type) { ASSERT(((STagRow *)row)->pData != NULL); STagCol *pBase = ((STagRow *)row)->tagCols; int16_t nCols = ((STagRow *)row)->ncols; From 056b24c724690bd4b1a50bf8aaf83aa108f98d65 Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Wed, 27 May 2020 09:06:13 +0000 Subject: [PATCH 26/85] [TD-90] fix invalid read --- src/common/src/tdataformat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 8c6e26d5e10..922c8bdea0a 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -237,7 +237,7 @@ void * tdNewTagRowFromSchema(STSchema *pSchema, int16_t numofTags) { STagRow *row = malloc(size); if (row == NULL) return NULL; - int32_t datasize = pSchema->tlen - pSchema->flen; + int32_t datasize = pSchema->tlen; row->pData = malloc(datasize); if (NULL == row->pData) { free(row); From 83c75d875ef9b198f8ed62c3b1afe58da3744241 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 27 May 2020 09:11:28 +0000 Subject: [PATCH 27/85] TD-354 --- src/inc/tsdb.h | 2 + src/tsdb/inc/tsdbMain.h | 5 +- src/tsdb/src/tsdbMain.c | 17 +++- src/tsdb/src/tsdbMeta.c | 183 ++++++++++++++++++++----------------- src/util/inc/tcoding.h | 22 +++++ src/vnode/src/vnodeWrite.c | 6 ++ 6 files changed, 146 insertions(+), 89 deletions(-) diff --git a/src/inc/tsdb.h b/src/inc/tsdb.h index bee68b81f56..341dee14769 100644 --- a/src/inc/tsdb.h +++ b/src/inc/tsdb.h @@ -92,6 +92,7 @@ typedef struct { STSchema * schema; STSchema * tagSchema; SDataRow tagValues; + char * sql; } STableCfg; int tsdbInitTableCfg(STableCfg *config, ETableType type, uint64_t uid, int32_t tid); @@ -101,6 +102,7 @@ int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool dup); int tsdbTableSetTagValue(STableCfg *config, SDataRow row, bool dup); int tsdbTableSetName(STableCfg *config, char *name, bool dup); int tsdbTableSetSName(STableCfg *config, char *sname, bool dup); +int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool dup); void tsdbClearTableCfg(STableCfg *config); int32_t tsdbGetTableTagVal(TsdbRepoT *repo, STableId* id, int32_t colId, int16_t *type, int16_t *bytes, char **val); diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 63d3eb349b7..0839e0f8ff7 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -85,12 +85,13 @@ typedef struct STable { TSKEY lastKey; // lastkey inserted in this table, initialized as 0, TODO: make a structure struct STable *next; // TODO: remove the next struct STable *prev; - tstr * name; // NOTE: there a flexible string here + tstr * name; // NOTE: there a flexible string here + char * sql; } STable; #define TSDB_GET_TABLE_LAST_KEY(tb) ((tb)->lastKey) -void * tsdbEncodeTable(STable *pTable, int *contLen); +void tsdbEncodeTable(STable *pTable, char *buf, int *contLen); STable *tsdbDecodeTable(void *cont, int contLen); void tsdbFreeEncode(void *cont); diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 27473e805c1..bddb3fcaff9 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -446,7 +446,7 @@ int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg * p */ int tsdbInitTableCfg(STableCfg *config, ETableType type, uint64_t uid, int32_t tid) { if (config == NULL) return -1; - if (type != TSDB_NORMAL_TABLE && type != TSDB_CHILD_TABLE) return -1; + if (type != TSDB_CHILD_TABLE && type != TSDB_NORMAL_TABLE && type != TSDB_STREAM_TABLE) return -1; memset((void *)config, 0, sizeof(STableCfg)); @@ -455,6 +455,7 @@ int tsdbInitTableCfg(STableCfg *config, ETableType type, uint64_t uid, int32_t t config->tableId.uid = uid; config->tableId.tid = tid; config->name = NULL; + config->sql = NULL; return 0; } @@ -540,12 +541,26 @@ int tsdbTableSetSName(STableCfg *config, char *sname, bool dup) { return 0; } +int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool dup) { + if (config->type != TSDB_STREAM_TABLE) return -1; + + if (dup) { + config->sql = strdup(sql); + if (config->sql == NULL) return -1; + } else { + config->sql = sql; + } + + return 0; +} + void tsdbClearTableCfg(STableCfg *config) { if (config->schema) tdFreeSchema(config->schema); if (config->tagSchema) tdFreeSchema(config->tagSchema); if (config->tagValues) tdFreeDataRow(config->tagValues); tfree(config->name); tfree(config->sname); + tfree(config->sql); } int tsdbInitSubmitBlkIter(SSubmitBlk *pBlock, SSubmitBlkIter *pIter) { diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 95680f95c45..427e15de378 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -15,7 +15,6 @@ static int32_t tsdbCheckTableCfg(STableCfg *pCfg); static int tsdbAddTableToMeta(STsdbMeta *pMeta, STable *pTable, bool addIdx); static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable); static int tsdbRemoveTableFromIndex(STsdbMeta *pMeta, STable *pTable); -static int tsdbEstimateTableEncodeSize(STable *pTable); static int tsdbRemoveTableFromMeta(STsdbMeta *pMeta, STable *pTable, bool rmFromIdx); /** @@ -28,16 +27,10 @@ static int tsdbRemoveTableFromMeta(STsdbMeta *pMeta, STable *pTable, bool rm * @return binary content for success * NULL fro failure */ -void *tsdbEncodeTable(STable *pTable, int *contLen) { - if (pTable == NULL) return NULL; - - *contLen = tsdbEstimateTableEncodeSize(pTable); - if (*contLen < 0) return NULL; - - void *ret = calloc(1, *contLen); - if (ret == NULL) return NULL; +void tsdbEncodeTable(STable *pTable, char *buf, int *contLen) { + if (pTable == NULL) return; - void *ptr = ret; + void *ptr = buf; T_APPEND_MEMBER(ptr, pTable, STable, type); // Encode name, todo refactor *(int *)ptr = varDataLen(pTable->name); @@ -59,7 +52,11 @@ void *tsdbEncodeTable(STable *pTable, int *contLen) { ptr = tdEncodeSchema(ptr, pTable->schema); } - return ret; + if (pTable->type == TSDB_STREAM_TABLE) { + ptr = taosEncodeString(ptr, pTable->sql); + } + + *contLen = (char *)ptr - buf; } /** @@ -97,10 +94,15 @@ STable *tsdbDecodeTable(void *cont, int contLen) { pTable->tagSchema = tdDecodeSchema(&ptr); } else if (pTable->type == TSDB_CHILD_TABLE) { pTable->tagVal = tdDataRowDup(ptr); + ptr = POINTER_SHIFT(ptr, dataRowLen(pTable->tagVal)); } else { pTable->schema = tdDecodeSchema(&ptr); } + if (pTable->type == TSDB_STREAM_TABLE) { + ptr = taosDecodeString(ptr, &(pTable->sql)); + } + return pTable; } @@ -211,7 +213,7 @@ int32_t tsdbFreeMeta(STsdbMeta *pMeta) { } STSchema *tsdbGetTableSchema(STsdbMeta *pMeta, STable *pTable) { - if (pTable->type == TSDB_NORMAL_TABLE || pTable->type == TSDB_SUPER_TABLE) { + if (pTable->type == TSDB_NORMAL_TABLE || pTable->type == TSDB_SUPER_TABLE || pTable->type == TSDB_STREAM_TABLE) { return pTable->schema; } else if (pTable->type == TSDB_CHILD_TABLE) { STable *pSuper = tsdbGetTableByUid(pMeta, pTable->superUid); @@ -283,6 +285,67 @@ char* tsdbGetTableName(TsdbRepoT *repo, const STableId* id, int16_t* bytes) { } } +static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { + STable *pTable = NULL; + size_t tsize = 0; + + pTable = (STable *)calloc(1, sizeof(STable)); + if (pTable == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; + goto _err; + } + + pTable->type = pCfg->type; + tsize = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN); + pTable->name = calloc(1, tsize + VARSTR_HEADER_SIZE + 1); + if (pTable->name == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; + goto _err; + } + STR_WITH_SIZE_TO_VARSTR(pTable->name, pCfg->sname, tsize); + + if (isSuper) { + pTable->type = TSDB_SUPER_TABLE; + pTable->tableId.uid = pCfg->superUid; + pTable->tableId.tid = -1; + pTable->superUid = TSDB_INVALID_SUPER_TABLE_ID; + pTable->schema = tdDupSchema(pCfg->schema); + pTable->tagSchema = tdDupSchema(pCfg->tagSchema); + + STColumn *pColSchema = schemaColAt(pTable->tagSchema, 0); + pTable->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, 1, 0, 1, + getTagIndexKey); // Allow duplicate key, no lock + if (pTable->pIndex == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; + goto _err; + } + } else { + pTable->type = pCfg->type; + pTable->tableId.uid = pCfg->tableId.uid; + pTable->tableId.tid = pCfg->tableId.tid; + pTable->lastKey = TSKEY_INITIAL_VAL; + + if (pCfg->type == TSDB_CHILD_TABLE) { + pTable->superUid = pCfg->superUid; + pTable->tagVal = tdDataRowDup(pCfg->tagValues); + } else if (pCfg->type == TSDB_NORMAL_TABLE) { + pTable->superUid = -1; + pTable->schema = tdDupSchema(pCfg->schema); + } else { + ASSERT(pCfg->type == TSDB_STREAM_TABLE); + pTable->superUid = -1; + pTable->schema = tdDupSchema(pCfg->schema); + pTable->sql = strdup(pCfg->sql); + } + } + + return pTable; + +_err: + tsdbFreeTable(pTable); + return NULL; +} + int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { STsdbRepo *pRepo = (STsdbRepo *)repo; STsdbMeta *pMeta = pRepo->tsdbMeta; @@ -303,61 +366,19 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { super = tsdbGetTableByUid(pMeta, pCfg->superUid); if (super == NULL) { // super table not exists, try to create it newSuper = 1; - // TODO: use function to implement create table object - super = (STable *)calloc(1, sizeof(STable)); + super = tsdbNewTable(pCfg, true); if (super == NULL) return -1; - - super->type = TSDB_SUPER_TABLE; - super->tableId.uid = pCfg->superUid; - super->tableId.tid = -1; - super->superUid = TSDB_INVALID_SUPER_TABLE_ID; - super->schema = tdDupSchema(pCfg->schema); - super->tagSchema = tdDupSchema(pCfg->tagSchema); - super->tagVal = NULL; - - // todo refactor extract method - size_t size = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN); - super->name = calloc(1, size + VARSTR_HEADER_SIZE + 1); - STR_WITH_SIZE_TO_VARSTR(super->name, pCfg->sname, size); - - // index the first tag column - STColumn* pColSchema = schemaColAt(super->tagSchema, 0); - super->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, - 1, 0, 1, getTagIndexKey); // Allow duplicate key, no lock - - if (super->pIndex == NULL) { - tdFreeSchema(super->schema); - tdFreeSchema(super->tagSchema); - tdFreeDataRow(super->tagVal); - free(super); - return -1; - } } else { if (super->type != TSDB_SUPER_TABLE) return -1; } } - STable *table = (STable *)calloc(1, sizeof(STable)); + STable *table = tsdbNewTable(pCfg, false); if (table == NULL) { - if (newSuper) tsdbFreeTable(super); - return -1; - } - - table->tableId = pCfg->tableId; - - size_t size = strnlen(pCfg->name, TSDB_TABLE_NAME_LEN); - table->name = calloc(1, size + VARSTR_HEADER_SIZE + 1); - STR_WITH_SIZE_TO_VARSTR(table->name, pCfg->name, size); - - table->lastKey = 0; - if (IS_CREATE_STABLE(pCfg)) { // TSDB_CHILD_TABLE - table->type = TSDB_CHILD_TABLE; - table->superUid = pCfg->superUid; - table->tagVal = tdDataRowDup(pCfg->tagValues); - } else { // TSDB_NORMAL_TABLE - table->type = TSDB_NORMAL_TABLE; - table->superUid = -1; - table->schema = tdDupSchema(pCfg->schema); + if (newSuper) { + tsdbFreeTable(super); + return -1; + } } // Register to meta @@ -372,15 +393,15 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { // Write to meta file int bufLen = 0; + char *buf = malloc(4096); if (newSuper) { - void *buf = tsdbEncodeTable(super, &bufLen); + tsdbEncodeTable(super, buf, &bufLen); tsdbInsertMetaRecord(pMeta->mfh, super->tableId.uid, buf, bufLen); - tsdbFreeEncode(buf); } - void *buf = tsdbEncodeTable(table, &bufLen); + tsdbEncodeTable(table, buf, &bufLen); tsdbInsertMetaRecord(pMeta->mfh, table->tableId.uid, buf, bufLen); - tsdbFreeEncode(buf); + tfree(buf); return 0; } @@ -438,13 +459,18 @@ static void tsdbFreeMemTable(SMemTable *pMemTable) { } static int tsdbFreeTable(STable *pTable) { - // TODO: finish this function + if (pTable == NULL) return 0; + if (pTable->type == TSDB_CHILD_TABLE) { tdFreeDataRow(pTable->tagVal); } else { tdFreeSchema(pTable->schema); } + if (pTable->type == TSDB_STREAM_TABLE) { + tfree(pTable->sql); + } + // Free content if (TSDB_TABLE_IS_SUPER_TABLE(pTable)) { tdFreeSchema(pTable->tagSchema); @@ -491,6 +517,9 @@ static int tsdbAddTableToMeta(STsdbMeta *pMeta, STable *pTable, bool addIdx) { if (pTable->type == TSDB_CHILD_TABLE && addIdx) { // add STABLE to the index tsdbAddTableIntoIndex(pMeta, pTable); } + if (pTable->type == TSDB_STREAM_TABLE && addIdx) { + // TODO + } pMeta->nTables++; } @@ -522,7 +551,6 @@ static int tsdbRemoveTableFromMeta(STsdbMeta *pMeta, STable *pTable, bool rmFrom tSkipListDestroyIter(pIter); - // TODO: Remove the table from the list if (pTable->prev != NULL) { pTable->prev->next = pTable->next; if (pTable->next != NULL) { @@ -536,6 +564,9 @@ static int tsdbRemoveTableFromMeta(STsdbMeta *pMeta, STable *pTable, bool rmFrom if (pTable->type == TSDB_CHILD_TABLE && rmFromIdx) { tsdbRemoveTableFromIndex(pMeta, pTable); } + if (pTable->type == TSDB_STREAM_TABLE && rmFromIdx) { + // TODO + } pMeta->nTables--; } @@ -598,26 +629,6 @@ static int tsdbRemoveTableFromIndex(STsdbMeta *pMeta, STable *pTable) { return 0; } -static int tsdbEstimateTableEncodeSize(STable *pTable) { - int size = 0; - size += T_MEMBER_SIZE(STable, type); - size += sizeof(int) + varDataLen(pTable->name); - size += T_MEMBER_SIZE(STable, tableId); - size += T_MEMBER_SIZE(STable, superUid); - size += T_MEMBER_SIZE(STable, sversion); - - if (pTable->type == TSDB_SUPER_TABLE) { - size += tdGetSchemaEncodeSize(pTable->schema); - size += tdGetSchemaEncodeSize(pTable->tagSchema); - } else if (pTable->type == TSDB_CHILD_TABLE) { - size += dataRowLen(pTable->tagVal); - } else { - size += tdGetSchemaEncodeSize(pTable->schema); - } - - return size; -} - char *getTSTupleKey(const void * data) { SDataRow row = (SDataRow)data; return POINTER_SHIFT(row, TD_DATA_ROW_HEAD_SIZE); diff --git a/src/util/inc/tcoding.h b/src/util/inc/tcoding.h index b4f7f596c56..cc9caf71d04 100644 --- a/src/util/inc/tcoding.h +++ b/src/util/inc/tcoding.h @@ -217,6 +217,28 @@ static FORCE_INLINE void *taosDecodeVariant64(void *buf, uint64_t *value) { return NULL; // error happened } +static FORCE_INLINE void *taosEncodeString(void *buf, char *value) { + size_t size = strlen(value); + + buf = taosEncodeVariant64(buf, size); + memcpy(buf, value, size); + + return POINTER_SHIFT(buf, size); +} + +static FORCE_INLINE void *taosDecodeString(void *buf, char **value) { + uint64_t size = 0; + + buf = taosDecodeVariant64(buf, &size); + *value = (char *)malloc(size + 1); + if (*value == NULL) return NULL; + memcpy(*value, buf, size); + + (*value)[size] = '\0'; + + return POINTER_SHIFT(buf, size); +} + #ifdef __cplusplus } #endif diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 9c415d6af75..25cd0983e52 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -106,6 +106,7 @@ static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pR static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pRet) { SMDCreateTableMsg *pTable = pCont; int32_t code = 0; + char sql[1024] = "\0"; vTrace("vgId:%d, table:%s, start to create", pVnode->vgId, pTable->tableId); int16_t numOfColumns = htons(pTable->numOfColumns); @@ -149,6 +150,11 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe tsdbTableSetTagValue(&tCfg, dataRow, false); } + if (pTable->tableType == TSDB_STREAM_TABLE) { + // TODO: set sql value + tsdbTableSetStreamSql(&tCfg, sql, false); + } + code = tsdbCreateTable(pVnode->tsdb, &tCfg); tdFreeDataRow(dataRow); tfree(pDestTagSchema); From cf6872796b965202907d083794424645ed72a844 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Wed, 27 May 2020 10:10:16 +0000 Subject: [PATCH 28/85] [TD-335] first compiler vresion --- src/client/src/tscSQLParser.c | 4 +- src/client/src/tscServer.c | 2 +- src/common/inc/tglobal.h | 2 +- src/common/src/tglobal.c | 4 +- src/dnode/CMakeLists.txt | 2 +- src/dnode/inc/{dnodeMpeer.h => dnodeMPeer.h} | 6 +- src/dnode/inc/dnodeMgmt.h | 4 +- src/dnode/src/dnodeMPeer.c | 155 ++++ src/dnode/src/dnodeMRead.c | 18 +- src/dnode/src/dnodeMWrite.c | 54 +- src/dnode/src/dnodeMain.c | 8 +- src/dnode/src/dnodeMgmt.c | 158 ++-- src/dnode/src/dnodeModule.c | 6 +- src/dnode/src/dnodeMpeer.c | 155 ---- src/dnode/src/dnodePeer.c | 13 +- src/dnode/src/dnodeShell.c | 4 +- src/dnode/src/dnodeVRead.c | 8 +- src/dnode/src/dnodeVWrite.c | 2 +- src/inc/dnode.h | 25 +- src/inc/mnode.h | 56 +- src/inc/taosmsg.h | 34 +- src/inc/tbalance.h | 2 +- src/inc/trpc.h | 8 +- src/mnode/inc/mnodeAcct.h | 24 +- src/mnode/inc/mnodeDb.h | 40 +- src/mnode/inc/mnodeDef.h | 26 +- src/mnode/inc/mnodeDnode.h | 26 +- src/mnode/inc/mnodeInt.h | 4 +- src/mnode/inc/mnodeMnode.h | 32 +- src/mnode/inc/mnodePeer.h | 32 + src/mnode/inc/mnodeProfile.h | 8 +- src/mnode/inc/{mnodeServer.h => mnodeRead.h} | 9 +- src/mnode/inc/{mnodeShell.h => mnodeShow.h} | 21 +- src/mnode/inc/mnodeTable.h | 20 +- src/mnode/inc/mnodeUser.h | 22 +- src/mnode/inc/mnodeVgroup.h | 60 +- .../inc/{mnodeDClient.h => mnodeWrite.h} | 11 +- src/mnode/src/mnodeAcct.c | 71 +- src/mnode/src/mnodeBalance.c | 12 +- src/mnode/src/mnodeDb.c | 249 +++--- src/mnode/src/mnodeDnode.c | 352 ++++---- src/mnode/src/mnodeInt.c | 63 ++ src/mnode/src/mnodeMain.c | 81 +- src/mnode/src/mnodeMnode.c | 207 +++-- src/mnode/src/{mnodeMgmt.c => mnodePeer.c} | 41 +- src/mnode/src/mnodeProfile.c | 193 ++-- src/mnode/src/mnodeRead.c | 43 +- src/mnode/src/mnodeSdb.c | 20 +- src/mnode/src/mnodeShow.c | 309 ++----- src/mnode/src/mnodeTable.c | 837 +++++++++--------- src/mnode/src/mnodeUser.c | 197 ++--- src/mnode/src/mnodeVgroup.c | 289 +++--- src/mnode/src/mnodeWrite.c | 42 +- 53 files changed, 1995 insertions(+), 2076 deletions(-) rename src/dnode/inc/{dnodeMpeer.h => dnodeMPeer.h} (86%) create mode 100644 src/dnode/src/dnodeMPeer.c delete mode 100644 src/dnode/src/dnodeMpeer.c create mode 100644 src/mnode/inc/mnodePeer.h rename src/mnode/inc/{mnodeServer.h => mnodeRead.h} (77%) rename src/mnode/inc/{mnodeShell.h => mnodeShow.h} (62%) rename src/mnode/inc/{mnodeDClient.h => mnodeWrite.h} (72%) create mode 100644 src/mnode/src/mnodeInt.c rename src/mnode/src/{mnodeMgmt.c => mnodePeer.c} (56%) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 087f546eaa0..d23d0e18605 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -2175,7 +2175,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { */ SShowInfo* pShowInfo = &pInfo->pDCLInfo->showOpt; int16_t showType = pShowInfo->showType; - if (showType == TSDB_MNODE_TABLE_TABLE || showType == TSDB_MNODE_TABLE_METRIC || showType == TSDB_MNODE_TABLE_VGROUP) { + if (showType == TSDB_MGMT_TABLE_TABLE || showType == TSDB_MGMT_TABLE_METRIC || showType == TSDB_MGMT_TABLE_VGROUP) { // db prefix in tagCond, show table conds in payload SSQLToken* pDbPrefixToken = &pShowInfo->prefix; if (pDbPrefixToken->type != 0) { @@ -2212,7 +2212,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg2); } } - } else if (showType == TSDB_MNODE_TABLE_VNODES) { + } else if (showType == TSDB_MGMT_TABLE_VNODES) { if (pShowInfo->prefix.type == 0) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), "No specified ip of dnode"); } diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 669f777d81b..0aac5daa2eb 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -1116,7 +1116,7 @@ int32_t tscBuildShowMsg(SSqlObj *pSql, SSqlInfo *pInfo) { SShowInfo *pShowInfo = &pInfo->pDCLInfo->showOpt; pShowMsg->type = pShowInfo->showType; - if (pShowInfo->showType != TSDB_MNODE_TABLE_VNODES) { + if (pShowInfo->showType != TSDB_MGMT_TABLE_VNODES) { SSQLToken *pPattern = &pShowInfo->pattern; if (pPattern->type > 0) { // only show tables support wildcard query strncpy(pShowMsg->payload, pPattern->z, pPattern->n); diff --git a/src/common/inc/tglobal.h b/src/common/inc/tglobal.h index 319772b6065..3cae25aead8 100644 --- a/src/common/inc/tglobal.h +++ b/src/common/inc/tglobal.h @@ -100,7 +100,7 @@ extern int32_t tsMaxMgmtConnections; extern int32_t tsBalanceInterval; extern int32_t tsOfflineThreshold; -extern int32_t tsMgmtEqualVnodeNum; +extern int32_t tsMnodeEqualVnodeNum; extern int32_t tsEnableHttpModule; extern int32_t tsEnableMqttModule; diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index faf15c42153..81f5e449c83 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -117,7 +117,7 @@ int32_t tsMaxVnodeConnections = 10000; int32_t tsBalanceInterval = 300; // seconds int32_t tsOfflineThreshold = 86400*100; // seconds 10days -int32_t tsMgmtEqualVnodeNum = 4; +int32_t tsMnodeEqualVnodeNum = 4; int32_t tsEnableHttpModule = 1; int32_t tsEnableMqttModule = 0; // not finished yet, not started it by default @@ -874,7 +874,7 @@ static void doInitGlobalConfig() { // module configs cfg.option = "mgmtEqualVnodeNum"; - cfg.ptr = &tsMgmtEqualVnodeNum; + cfg.ptr = &tsMnodeEqualVnodeNum; cfg.valType = TAOS_CFG_VTYPE_INT32; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; cfg.minValue = 0; diff --git a/src/dnode/CMakeLists.txt b/src/dnode/CMakeLists.txt index 2faea588a9b..de6e15e6b9f 100644 --- a/src/dnode/CMakeLists.txt +++ b/src/dnode/CMakeLists.txt @@ -16,7 +16,7 @@ IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM)) AUX_SOURCE_DIRECTORY(src SRC) ADD_EXECUTABLE(taosd ${SRC}) - TARGET_LINK_LIBRARIES(taosd taos_static monitor http mqtt tsdb twal vnode cJson lz4) + TARGET_LINK_LIBRARIES(taosd mnode taos_static monitor http mqtt tsdb twal vnode cJson lz4) IF (TD_ACCOUNT) TARGET_LINK_LIBRARIES(taosd account) diff --git a/src/dnode/inc/dnodeMpeer.h b/src/dnode/inc/dnodeMPeer.h similarity index 86% rename from src/dnode/inc/dnodeMpeer.h rename to src/dnode/inc/dnodeMPeer.h index 93b31c17492..0015532f152 100644 --- a/src/dnode/inc/dnodeMpeer.h +++ b/src/dnode/inc/dnodeMPeer.h @@ -20,9 +20,9 @@ extern "C" { #endif -int32_t dnodeInitMnodeMgmt(); -void dnodeCleanupMnodeMgmt(); -void dnodeDispatchToMnodeMgmtQueue(SRpcMsg *pMsg); +int32_t dnodeInitMnodePeer(); +void dnodeCleanupMnodePeer(); +void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg); #ifdef __cplusplus } diff --git a/src/dnode/inc/dnodeMgmt.h b/src/dnode/inc/dnodeMgmt.h index 949a7c6eeec..28844ba0e52 100644 --- a/src/dnode/inc/dnodeMgmt.h +++ b/src/dnode/inc/dnodeMgmt.h @@ -32,7 +32,9 @@ void* dnodeGetVnodeWal(void *pVnode); void* dnodeGetVnodeTsdb(void *pVnode); void dnodeReleaseVnode(void *pVnode); -void dnodeSendRediretMsg(SRpcMsg *pMsg); +void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell); +void dnodeGetMnodeIpSetForPeer(void *ipSet); +void dnodeGetMnodeIpSetForShell(void *ipSe); #ifdef __cplusplus } diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c new file mode 100644 index 00000000000..400215472d2 --- /dev/null +++ b/src/dnode/src/dnodeMPeer.c @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taoserror.h" +#include "taosmsg.h" +#include "tutil.h" +#include "tqueue.h" +#include "trpc.h" +#include "twal.h" +#include "tglobal.h" +#include "mnode.h" +#include "dnode.h" +#include "dnodeInt.h" +#include "dnodeMgmt.h" +#include "dnodeMWrite.h" + +typedef struct { + pthread_t thread; + int32_t workerId; +} SMPeerWorker; + +typedef struct { + int32_t num; + SMPeerWorker *peerWorker; +} SMPeerWorkerPool; + +static SMPeerWorkerPool tsMPeerPool; +static taos_qset tsMPeerQset; +static taos_queue tsMPeerQueue; + +static void *dnodeProcessMnodePeerQueue(void *param); + +int32_t dnodeInitMnodePeer() { + tsMPeerQset = taosOpenQset(); + + tsMPeerPool.num = 1; + tsMPeerPool.peerWorker = (SMPeerWorker *)calloc(sizeof(SMPeerWorker), tsMPeerPool.num); + + if (tsMPeerPool.peerWorker == NULL) return -1; + for (int32_t i = 0; i < tsMPeerPool.num; ++i) { + SMPeerWorker *pWorker = tsMPeerPool.peerWorker + i; + pWorker->workerId = i; + } + + dPrint("dnode mpeer is opened"); + return 0; +} + +void dnodeCleanupMnodePeer() { + for (int32_t i = 0; i < tsMPeerPool.num; ++i) { + SMPeerWorker *pWorker = tsMPeerPool.peerWorker + i; + if (pWorker->thread) { + taosQsetThreadResume(tsMPeerQset); + } + } + + for (int32_t i = 0; i < tsMPeerPool.num; ++i) { + SMPeerWorker *pWorker = tsMPeerPool.peerWorker + i; + if (pWorker->thread) { + pthread_join(pWorker->thread, NULL); + } + } + + dPrint("dnode mmgmt is closed"); +} + +int32_t dnodeAllocateMnodePqueue() { + tsMPeerQueue = taosOpenQueue(); + if (tsMPeerQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; + + taosAddIntoQset(tsMPeerQset, tsMPeerQueue, NULL); + + for (int32_t i = 0; i < tsMPeerPool.num; ++i) { + SMPeerWorker *pWorker = tsMPeerPool.peerWorker + i; + pWorker->workerId = i; + + pthread_attr_t thAttr; + pthread_attr_init(&thAttr); + pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); + + if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodePeerQueue, pWorker) != 0) { + dError("failed to create thread to process mmgmt queue, reason:%s", strerror(errno)); + } + + pthread_attr_destroy(&thAttr); + dTrace("dnode mmgmt worker:%d is launched, total:%d", pWorker->workerId, tsMPeerPool.num); + } + + dTrace("dnode mmgmt queue:%p is allocated", tsMPeerQueue); + return TSDB_CODE_SUCCESS; +} + +void dnodeFreeMnodePqueue() { + taosCloseQueue(tsMPeerQueue); + tsMPeerQueue = NULL; +} + +void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg) { + if (!mnodeIsRunning() || tsMPeerQueue == NULL) { + dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, false); + return; + } + + SMnodeMsg *pPeer = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); + mnodeCreateMsg(pPeer, pMsg); + taosWriteQitem(tsMPeerQueue, TAOS_QTYPE_RPC, pPeer); +} + +static void dnodeSendRpcMnodePeerRsp(SMnodeMsg *pPeer, int32_t code) { + if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + + SRpcMsg rpcRsp = { + .handle = pPeer->thandle, + .pCont = pPeer->rpcRsp.rsp, + .contLen = pPeer->rpcRsp.len, + .code = code, + }; + + rpcSendResponse(&rpcRsp); + mnodeCleanupMsg(pPeer); +} + +static void *dnodeProcessMnodePeerQueue(void *param) { + SMnodeMsg *pPeerMsg; + int32_t type; + void * unUsed; + + while (1) { + if (taosReadQitemFromQset(tsMPeerQset, &type, (void **)&pPeerMsg, &unUsed) == 0) { + dTrace("dnodeProcessMnodePeerQueue: got no message from qset, exiting..."); + break; + } + + dTrace("%p, msg:%s will be processed", pPeerMsg->ahandle, taosMsg[pPeerMsg->msgType]); + int32_t code = mnodeProcessPeerReq(pPeerMsg); + dnodeSendRpcMnodePeerRsp(pPeerMsg, code); + taosFreeQitem(pPeerMsg); + } + + return NULL; +} diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c index cd785a804e8..64375a3d7b8 100644 --- a/src/dnode/src/dnodeMRead.c +++ b/src/dnode/src/dnodeMRead.c @@ -25,7 +25,7 @@ #include "mnode.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodeMRead.h" typedef struct { @@ -116,12 +116,12 @@ void dnodeFreeMnodeRqueue() { void dnodeDispatchToMnodeReadQueue(SRpcMsg *pMsg) { if (!mnodeIsRunning() || tsMReadQueue == NULL) { - dnodeSendRediretMsg(pMsg); + dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, true); return; } SMnodeMsg *pRead = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); - pRead->rpcMsg = *pMsg; + mnodeCreateMsg(pRead, pMsg); taosWriteQitem(tsMReadQueue, TAOS_QTYPE_RPC, pRead); } @@ -129,14 +129,14 @@ static void dnodeSendRpcMnodeReadRsp(SMnodeMsg *pRead, int32_t code) { if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; SRpcMsg rpcRsp = { - .handle = pRead->rpcMsg.handle, - .pCont = pRead->rspRet.rsp, - .contLen = pRead->rspRet.len, - .code = pRead->rspRet.code, + .handle = pRead->thandle, + .pCont = pRead->rpcRsp.rsp, + .contLen = pRead->rpcRsp.len, + .code = code, }; rpcSendResponse(&rpcRsp); - rpcFreeCont(pRead->rpcMsg.pCont); + mnodeCleanupMsg(pRead); } static void *dnodeProcessMnodeReadQueue(void *param) { @@ -150,7 +150,7 @@ static void *dnodeProcessMnodeReadQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed", pReadMsg->rpcMsg.ahandle, taosMsg[pReadMsg->rpcMsg.msgType]); + dTrace("%p, msg:%s will be processed", pReadMsg->ahandle, taosMsg[pReadMsg->msgType]); int32_t code = mnodeProcessRead(pReadMsg); dnodeSendRpcMnodeReadRsp(pReadMsg, code); taosFreeQitem(pReadMsg); diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c index b768b31b01c..56022b4bf62 100644 --- a/src/dnode/src/dnodeMWrite.c +++ b/src/dnode/src/dnodeMWrite.c @@ -18,6 +18,7 @@ #include "taoserror.h" #include "taosmsg.h" #include "tutil.h" +#include "ttimer.h" #include "tqueue.h" #include "trpc.h" #include "twal.h" @@ -25,7 +26,7 @@ #include "mnode.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodeMWrite.h" typedef struct { @@ -41,6 +42,7 @@ typedef struct { static SMWriteWorkerPool tsMWritePool; static taos_qset tsMWriteQset; static taos_queue tsMWriteQueue; +extern void * tsDnodeTmr; static void *dnodeProcessMnodeWriteQueue(void *param); @@ -78,7 +80,7 @@ void dnodeCleanupMnodeWrite() { dPrint("dnode mwrite is closed"); } -int32_t dnodeAllocateMnodeRqueue() { +int32_t dnodeAllocateMnodeWqueue() { tsMWriteQueue = taosOpenQueue(); if (tsMWriteQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -104,34 +106,35 @@ int32_t dnodeAllocateMnodeRqueue() { return TSDB_CODE_SUCCESS; } -void dnodeFreeMnodeRqueue() { +void dnodeFreeMnodeWqueue() { taosCloseQueue(tsMWriteQueue); tsMWriteQueue = NULL; } void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg) { if (!mnodeIsRunning() || tsMWriteQueue == NULL) { - dnodeSendRediretMsg(pMsg); + dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, true); return; } SMnodeMsg *pWrite = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); - pWrite->rpcMsg = *pMsg; + mnodeCreateMsg(pWrite, pMsg); taosWriteQitem(tsMWriteQueue, TAOS_QTYPE_RPC, pWrite); } -static void dnodeSendRpcMnodeWriteRsp(SMnodeMsg *pWrite, int32_t code) { +void dnodeSendRpcMnodeWriteRsp(void *pRaw, int32_t code) { + SMnodeMsg *pWrite = pRaw; if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; SRpcMsg rpcRsp = { - .handle = pWrite->rpcMsg.handle, - .pCont = pWrite->rspRet.rsp, - .contLen = pWrite->rspRet.len, - .code = pWrite->rspRet.code, + .handle = pWrite->thandle, + .pCont = pWrite->rpcRsp.rsp, + .contLen = pWrite->rpcRsp.len, + .code = code, }; rpcSendResponse(&rpcRsp); - rpcFreeCont(pWrite->rpcMsg.pCont); + mnodeCleanupMsg(pWrite); } static void *dnodeProcessMnodeWriteQueue(void *param) { @@ -145,7 +148,7 @@ static void *dnodeProcessMnodeWriteQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed", pWriteMsg->rpcMsg.ahandle, taosMsg[pWriteMsg->rpcMsg.msgType]); + dTrace("%p, msg:%s will be processed", pWriteMsg->ahandle, taosMsg[pWriteMsg->msgType]); int32_t code = mnodeProcessWrite(pWriteMsg); dnodeSendRpcMnodeWriteRsp(pWriteMsg, code); taosFreeQitem(pWriteMsg); @@ -153,3 +156,30 @@ static void *dnodeProcessMnodeWriteQueue(void *param) { return NULL; } + +static void dnodeFreeMnodeWriteMsg(void *pMsg) { + SMnodeMsg *pWrite = pMsg; + mnodeCleanupMsg(pWrite); + taosFreeQitem(pWrite); +} + +void dnodeReprocessMnodeWriteMsg(void *pMsg) { + SMnodeMsg *pWrite = pMsg; + + if (!mnodeIsRunning() || tsMWriteQueue == NULL) { + dnodeSendRedirectMsg(pWrite->msgType, pWrite->thandle, true); + dnodeFreeMnodeWriteMsg(pWrite); + } else { + taosWriteQitem(tsMWriteQueue, TAOS_QTYPE_RPC, pWrite); + } +} + +static void dnodeDoDelayReprocessMnodeWriteMsg(void *param, void *tmrId) { + dnodeReprocessMnodeWriteMsg(param); +} + +void dnodeDelayReprocessMnodeWriteMsg(void *pMsg) { + SMnodeMsg *mnodeMsg = pMsg; + void *unUsed = NULL; + taosTmrReset(dnodeDoDelayReprocessMnodeWriteMsg, 300, mnodeMsg, tsDnodeTmr, &unUsed); +} \ No newline at end of file diff --git a/src/dnode/src/dnodeMain.c b/src/dnode/src/dnodeMain.c index e9e9480aef1..76f9446e0e9 100644 --- a/src/dnode/src/dnodeMain.c +++ b/src/dnode/src/dnodeMain.c @@ -21,14 +21,14 @@ #include "tglobal.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodePeer.h" #include "dnodeModule.h" #include "dnodeVRead.h" #include "dnodeVWrite.h" #include "dnodeMRead.h" #include "dnodeMWrite.h" -#include "dnodeMMgmt.h" +#include "dnodeMPeer.h" #include "dnodeShell.h" static int32_t dnodeInitStorage(); @@ -72,7 +72,7 @@ int32_t dnodeInitSystem() { if (dnodeInitVnodeWrite() != 0) return -1; if (dnodeInitMnodeRead() != 0) return -1; if (dnodeInitMnodeWrite() != 0) return -1; - if (dnodeInitMnodeMgmt() != 0) return -1; + if (dnodeInitMnodePeer() != 0) return -1; if (dnodeInitClient() != 0) return -1; if (dnodeInitServer() != 0) return -1; if (dnodeInitMgmt() != 0) return -1; @@ -95,7 +95,7 @@ void dnodeCleanUpSystem() { dnodeCleanupMgmt(); dnodeCleanupServer(); dnodeCleanupClient(); - dnodeCleanupMnodeMgmt(); + dnodeCleanupMnodePeer(); dnodeCleanupMnodeWrite(); dnodeCleanupMnodeRead(); dnodeCleanupVnodeWrite(); diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 442b5178468..ec7ff4c66c9 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -32,13 +32,22 @@ #include "vnode.h" #include "mnode.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodeVRead.h" #include "dnodeVWrite.h" #include "dnodeModule.h" #define MPEER_CONTENT_LEN 2000 +void * tsDnodeTmr = NULL; +static void * tsStatusTimer = NULL; +static uint32_t tsRebootTime; + +static SRpcIpSet tsDMnodeIpSetForPeer = {0}; +static SRpcIpSet tsDMnodeIpSetForShell = {0}; +static SDMMnodeInfos tsDMnodeInfos = {0}; +static SDMDnodeCfg tsDnodeCfg = {0}; + static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes); static bool dnodeReadMnodeInfos(); static void dnodeSaveMnodeInfos(); @@ -48,14 +57,6 @@ static void dnodeSaveDnodeCfg(); static void dnodeProcessStatusRsp(SRpcMsg *pMsg); static void dnodeSendStatusMsg(void *handle, void *tmrId); -static void *tsDnodeTmr = NULL; -static void *tsStatusTimer = NULL; -static uint32_t tsRebootTime; - -static SRpcIpSet tsMnodeIpSet = {0}; -static SDMMnodeInfos tsMnodeInfos = {0}; -static SDMDnodeCfg tsDnodeCfg = {0}; - static int32_t dnodeOpenVnodes(); static void dnodeCloseVnodes(); static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *pMsg); @@ -81,22 +82,40 @@ int32_t dnodeInitMgmt() { } if (!dnodeReadMnodeInfos()) { - memset(&tsMnodeIpSet, 0, sizeof(SRpcIpSet)); - memset(&tsMnodeInfos, 0, sizeof(SDMMnodeInfos)); - tsMnodeIpSet.numOfIps = 1; - taosGetFqdnPortFromEp(tsFirst, tsMnodeIpSet.fqdn[0], &tsMnodeIpSet.port[0]); - tsMnodeIpSet.port[0] += TSDB_PORT_DNODEDNODE; + memset(&tsDMnodeIpSetForPeer, 0, sizeof(SRpcIpSet)); + memset(&tsDMnodeIpSetForShell, 0, sizeof(SRpcIpSet)); + memset(&tsDMnodeInfos, 0, sizeof(SDMMnodeInfos)); + + tsDMnodeIpSetForPeer.numOfIps = 1; + taosGetFqdnPortFromEp(tsFirst, tsDMnodeIpSetForPeer.fqdn[0], &tsDMnodeIpSetForPeer.port[0]); + tsDMnodeIpSetForPeer.port[0] += TSDB_PORT_DNODEDNODE; + + tsDMnodeIpSetForShell.numOfIps = 1; + taosGetFqdnPortFromEp(tsFirst, tsDMnodeIpSetForShell.fqdn[0], &tsDMnodeIpSetForShell.port[0]); + tsDMnodeIpSetForShell.port[0] += TSDB_PORT_DNODESHELL; + if (strcmp(tsSecond, tsFirst) != 0) { - tsMnodeIpSet.numOfIps = 2; - taosGetFqdnPortFromEp(tsSecond, tsMnodeIpSet.fqdn[1], &tsMnodeIpSet.port[1]); - tsMnodeIpSet.port[1] += TSDB_PORT_DNODEDNODE; + tsDMnodeIpSetForPeer.numOfIps = 2; + taosGetFqdnPortFromEp(tsSecond, tsDMnodeIpSetForPeer.fqdn[1], &tsDMnodeIpSetForPeer.port[1]); + tsDMnodeIpSetForPeer.port[1] += TSDB_PORT_DNODEDNODE; + + tsDMnodeIpSetForShell.numOfIps = 2; + taosGetFqdnPortFromEp(tsSecond, tsDMnodeIpSetForShell.fqdn[1], &tsDMnodeIpSetForShell.port[1]); + tsDMnodeIpSetForShell.port[1] += TSDB_PORT_DNODESHELL; } } else { - tsMnodeIpSet.inUse = tsMnodeInfos.inUse; - tsMnodeIpSet.numOfIps = tsMnodeInfos.nodeNum; - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsMnodeInfos.nodeInfos[i].nodeEp, tsMnodeIpSet.fqdn[i], &tsMnodeIpSet.port[i]); - tsMnodeIpSet.port[i] += TSDB_PORT_DNODEDNODE; + tsDMnodeIpSetForPeer.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSetForPeer.numOfIps = tsDMnodeInfos.nodeNum; + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForPeer.fqdn[i], &tsDMnodeIpSetForPeer.port[i]); + tsDMnodeIpSetForPeer.port[i] += TSDB_PORT_DNODEDNODE; + } + + tsDMnodeIpSetForShell.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSetForShell.numOfIps = tsDMnodeInfos.nodeNum; + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForShell.fqdn[i], &tsDMnodeIpSetForShell.port[i]); + tsDMnodeIpSetForShell.port[i] += TSDB_PORT_DNODESHELL; } } @@ -265,26 +284,23 @@ static int32_t dnodeProcessConfigDnodeMsg(SRpcMsg *pMsg) { return taosCfgDynamicOptions(pCfg->config); } -void dnodeUpdateIpSet(SRpcIpSet *pIpSet) { +void dnodeUpdateMnodeIpSetForPeer(SRpcIpSet *pIpSet) { dPrint("mnode IP list is changed, numOfIps:%d inUse:%d", pIpSet->numOfIps, pIpSet->inUse); for (int i = 0; i < pIpSet->numOfIps; ++i) { dPrint("mnode index:%d %s:%u", i, pIpSet->fqdn[i], pIpSet->port[i]) } - tsMnodeIpSet = *pIpSet; + tsDMnodeIpSetForPeer = *pIpSet; } -void dnodeGetMnodeDnodeIpSet(void *ipSetRaw, bool encode) { +void dnodeGetMnodeIpSetForPeer(void *ipSetRaw) { SRpcIpSet *ipSet = ipSetRaw; - ipSet->numOfIps = tsMnodeInfos.nodeNum; - ipSet->inUse = tsMnodeInfos.inUse; - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; ++i) { - taosGetFqdnPortFromEp(tsMnodeInfos.nodeInfos[i].nodeEp, ipSet->fqdn[i], &ipSet->port[i]); - ipSet->port[i] += TSDB_PORT_DNODEDNODE; - if (encode) { - ipSet->port[i] = htons(ipSet->port[i]); - } - } + *ipSet = tsDMnodeIpSetForPeer; +} + +void dnodeGetMnodeIpSetForShell(void *ipSetRaw) { + SRpcIpSet *ipSet = ipSetRaw; + *ipSet = tsDMnodeIpSetForShell; } static void dnodeProcessStatusRsp(SRpcMsg *pMsg) { @@ -324,22 +340,22 @@ static void dnodeProcessStatusRsp(SRpcMsg *pMsg) { } static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { - bool mnodesChanged = (memcmp(&tsMnodeInfos, pMnodes, sizeof(SDMMnodeInfos)) != 0); - bool mnodesNotInit = (tsMnodeInfos.nodeNum == 0); + bool mnodesChanged = (memcmp(&tsDMnodeInfos, pMnodes, sizeof(SDMMnodeInfos)) != 0); + bool mnodesNotInit = (tsDMnodeInfos.nodeNum == 0); if (!(mnodesChanged || mnodesNotInit)) return; - memcpy(&tsMnodeInfos, pMnodes, sizeof(SDMMnodeInfos)); + memcpy(&tsDMnodeInfos, pMnodes, sizeof(SDMMnodeInfos)); - tsMnodeIpSet.inUse = tsMnodeInfos.inUse; - tsMnodeIpSet.numOfIps = tsMnodeInfos.nodeNum; - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsMnodeInfos.nodeInfos[i].nodeEp, tsMnodeIpSet.fqdn[i], &tsMnodeIpSet.port[i]); - tsMnodeIpSet.port[i] += TSDB_PORT_DNODEDNODE; + tsDMnodeIpSetForPeer.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSetForPeer.numOfIps = tsDMnodeInfos.nodeNum; + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForPeer.fqdn[i], &tsDMnodeIpSetForPeer.port[i]); + tsDMnodeIpSetForPeer.port[i] += TSDB_PORT_DNODEDNODE; } - dPrint("mnodes is changed, nodeNum:%d inUse:%d", tsMnodeInfos.nodeNum, tsMnodeInfos.inUse); - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; i++) { - dPrint("mnode:%d, %s", tsMnodeInfos.nodeInfos[i].nodeId, tsMnodeInfos.nodeInfos[i].nodeEp); + dPrint("mnodes is changed, nodeNum:%d inUse:%d", tsDMnodeInfos.nodeNum, tsDMnodeInfos.inUse); + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + dPrint("mnode:%d, %s", tsDMnodeInfos.nodeInfos[i].nodeId, tsDMnodeInfos.nodeInfos[i].nodeEp); } dnodeSaveMnodeInfos(); @@ -377,14 +393,14 @@ static bool dnodeReadMnodeInfos() { dError("failed to read mnode mgmtIpList.json, inUse not found"); goto PARSE_OVER; } - tsMnodeInfos.inUse = inUse->valueint; + tsDMnodeInfos.inUse = inUse->valueint; cJSON* nodeNum = cJSON_GetObjectItem(root, "nodeNum"); if (!nodeNum || nodeNum->type != cJSON_Number) { dError("failed to read mnode mgmtIpList.json, nodeNum not found"); goto PARSE_OVER; } - tsMnodeInfos.nodeNum = nodeNum->valueint; + tsDMnodeInfos.nodeNum = nodeNum->valueint; cJSON* nodeInfos = cJSON_GetObjectItem(root, "nodeInfos"); if (!nodeInfos || nodeInfos->type != cJSON_Array) { @@ -393,7 +409,7 @@ static bool dnodeReadMnodeInfos() { } int size = cJSON_GetArraySize(nodeInfos); - if (size != tsMnodeInfos.nodeNum) { + if (size != tsDMnodeInfos.nodeNum) { dError("failed to read mnode mgmtIpList.json, nodeInfos size not matched"); goto PARSE_OVER; } @@ -407,21 +423,21 @@ static bool dnodeReadMnodeInfos() { dError("failed to read mnode mgmtIpList.json, nodeId not found"); goto PARSE_OVER; } - tsMnodeInfos.nodeInfos[i].nodeId = nodeId->valueint; + tsDMnodeInfos.nodeInfos[i].nodeId = nodeId->valueint; cJSON *nodeEp = cJSON_GetObjectItem(nodeInfo, "nodeEp"); if (!nodeEp || nodeEp->type != cJSON_String || nodeEp->valuestring == NULL) { dError("failed to read mnode mgmtIpList.json, nodeName not found"); goto PARSE_OVER; } - strncpy(tsMnodeInfos.nodeInfos[i].nodeEp, nodeEp->valuestring, TSDB_EP_LEN); + strncpy(tsDMnodeInfos.nodeInfos[i].nodeEp, nodeEp->valuestring, TSDB_EP_LEN); } ret = true; - dPrint("read mnode iplist successed, numOfIps:%d inUse:%d", tsMnodeInfos.nodeNum, tsMnodeInfos.inUse); - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; i++) { - dPrint("mnode:%d, %s", tsMnodeInfos.nodeInfos[i].nodeId, tsMnodeInfos.nodeInfos[i].nodeEp); + dPrint("read mnode iplist successed, numOfIps:%d inUse:%d", tsDMnodeInfos.nodeNum, tsDMnodeInfos.inUse); + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + dPrint("mnode:%d, %s", tsDMnodeInfos.nodeInfos[i].nodeId, tsDMnodeInfos.nodeInfos[i].nodeEp); } PARSE_OVER: @@ -442,13 +458,13 @@ static void dnodeSaveMnodeInfos() { char * content = calloc(1, maxLen + 1); len += snprintf(content + len, maxLen - len, "{\n"); - len += snprintf(content + len, maxLen - len, " \"inUse\": %d,\n", tsMnodeInfos.inUse); - len += snprintf(content + len, maxLen - len, " \"nodeNum\": %d,\n", tsMnodeInfos.nodeNum); + len += snprintf(content + len, maxLen - len, " \"inUse\": %d,\n", tsDMnodeInfos.inUse); + len += snprintf(content + len, maxLen - len, " \"nodeNum\": %d,\n", tsDMnodeInfos.nodeNum); len += snprintf(content + len, maxLen - len, " \"nodeInfos\": [{\n"); - for (int32_t i = 0; i < tsMnodeInfos.nodeNum; i++) { - len += snprintf(content + len, maxLen - len, " \"nodeId\": %d,\n", tsMnodeInfos.nodeInfos[i].nodeId); - len += snprintf(content + len, maxLen - len, " \"nodeEp\": \"%s\"\n", tsMnodeInfos.nodeInfos[i].nodeEp); - if (i < tsMnodeInfos.nodeNum -1) { + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + len += snprintf(content + len, maxLen - len, " \"nodeId\": %d,\n", tsDMnodeInfos.nodeInfos[i].nodeId); + len += snprintf(content + len, maxLen - len, " \"nodeEp\": \"%s\"\n", tsDMnodeInfos.nodeInfos[i].nodeEp); + if (i < tsDMnodeInfos.nodeNum -1) { len += snprintf(content + len, maxLen - len, " },{\n"); } else { len += snprintf(content + len, maxLen - len, " }]\n"); @@ -464,11 +480,11 @@ static void dnodeSaveMnodeInfos() { } char *dnodeGetMnodeMasterEp() { - return tsMnodeInfos.nodeInfos[tsMnodeIpSet.inUse].nodeEp; + return tsDMnodeInfos.nodeInfos[tsDMnodeIpSetForPeer.inUse].nodeEp; } void* dnodeGetMnodeInfos() { - return &tsMnodeInfos; + return &tsDMnodeInfos; } static void dnodeSendStatusMsg(void *handle, void *tmrId) { @@ -511,7 +527,7 @@ static void dnodeSendStatusMsg(void *handle, void *tmrId) { .msgType = TSDB_MSG_TYPE_DM_STATUS }; - dnodeSendMsgToDnode(&tsMnodeIpSet, &rpcMsg); + dnodeSendMsgToDnode(&tsDMnodeIpSetForPeer, &rpcMsg); } static bool dnodeReadDnodeCfg() { @@ -593,14 +609,18 @@ int32_t dnodeGetDnodeId() { return tsDnodeCfg.dnodeId; } -void dnodeSendRediretMsg(SRpcMsg *rpcMsg) { +void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell) { SRpcConnInfo connInfo; - rpcGetConnInfo(rpcMsg->handle, &connInfo); + rpcGetConnInfo(thandle, &connInfo); SRpcIpSet ipSet = {0}; - dnodeGetMnodeDnodeIpSet(&ipSet); - - dTrace("msg:%s will be redirected, dnodeIp:%s user:%s, numOfIps:%d inUse:%d", taosMsg[rpcMsg->msgType], + if (forShell) { + dnodeGetMnodeIpSetForShell(&ipSet); + } else { + dnodeGetMnodeIpSetForPeer(&ipSet); + } + + dTrace("msg:%s will be redirected, dnodeIp:%s user:%s, numOfIps:%d inUse:%d", taosMsg[msgType], taosIpStr(connInfo.clientIp), connInfo.user, ipSet.numOfIps, ipSet.inUse); for (int i = 0; i < ipSet.numOfIps; ++i) { @@ -608,5 +628,5 @@ void dnodeSendRediretMsg(SRpcMsg *rpcMsg) { ipSet.port[i] = htons(ipSet.port[i]); } - rpcSendRedirectRsp(rpcMsg->handle, &ipSet); -} \ No newline at end of file + rpcSendRedirectRsp(thandle, &ipSet); +} diff --git a/src/dnode/src/dnodeModule.c b/src/dnode/src/dnodeModule.c index 2f3008c33e5..61c1ec9382a 100644 --- a/src/dnode/src/dnodeModule.c +++ b/src/dnode/src/dnodeModule.c @@ -48,9 +48,9 @@ static void dnodeUnSetModuleStatus(int32_t module) { static void dnodeAllocModules() { tsModule[TSDB_MOD_MGMT].enable = false; tsModule[TSDB_MOD_MGMT].name = "mgmt"; - tsModule[TSDB_MOD_MGMT].initFp = mgmtInitSystem; - tsModule[TSDB_MOD_MGMT].cleanUpFp = mgmtCleanUpSystem; - tsModule[TSDB_MOD_MGMT].startFp = mgmtStartSystem; + tsModule[TSDB_MOD_MGMT].initFp = mnodeInitSystem; + tsModule[TSDB_MOD_MGMT].cleanUpFp = mnodeCleanupSystem; + tsModule[TSDB_MOD_MGMT].startFp = mnodeStartSystem; tsModule[TSDB_MOD_MGMT].stopFp = mgmtStopSystem; tsModule[TSDB_MOD_HTTP].enable = (tsEnableHttpModule == 1); diff --git a/src/dnode/src/dnodeMpeer.c b/src/dnode/src/dnodeMpeer.c deleted file mode 100644 index d1bfa3a0482..00000000000 --- a/src/dnode/src/dnodeMpeer.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "os.h" -#include "taoserror.h" -#include "taosmsg.h" -#include "tutil.h" -#include "tqueue.h" -#include "trpc.h" -#include "twal.h" -#include "tglobal.h" -#include "mnode.h" -#include "dnode.h" -#include "dnodeInt.h" -#include "dnodeVMgmt.h" -#include "dnodeMWrite.h" - -typedef struct { - pthread_t thread; - int32_t workerId; -} SMMgmtWorker; - -typedef struct { - int32_t num; - SMMgmtWorker *mgmtWorker; -} SMMgmtWorkerPool; - -static SMMgmtWorkerPool tsMMgmtPool; -static taos_qset tsMMgmtQset; -static taos_queue tsMMgmtQueue; - -static void *dnodeProcessMnodeMgmtQueue(void *param); - -int32_t dnodeInitMnodeMgmt() { - tsMMgmtQset = taosOpenQset(); - - tsMMgmtPool.num = 1; - tsMMgmtPool.mgmtWorker = (SMMgmtWorker *)calloc(sizeof(SMMgmtWorker), tsMMgmtPool.num); - - if (tsMMgmtPool.mgmtWorker == NULL) return -1; - for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { - SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; - pWorker->workerId = i; - } - - dPrint("dnode mmgmt is opened"); - return 0; -} - -void dnodeCleanupMnodeMgmt() { - for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { - SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; - if (pWorker->thread) { - taosQsetThreadResume(tsMMgmtQset); - } - } - - for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { - SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; - if (pWorker->thread) { - pthread_join(pWorker->thread, NULL); - } - } - - dPrint("dnode mmgmt is closed"); -} - -int32_t dnodeAllocateMnodeMqueue() { - tsMMgmtQueue = taosOpenQueue(); - if (tsMMgmtQueue == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; - - taosAddIntoQset(tsMMgmtQset, tsMMgmtQueue, NULL); - - for (int32_t i = 0; i < tsMMgmtPool.num; ++i) { - SMMgmtWorker *pWorker = tsMMgmtPool.mgmtWorker + i; - pWorker->workerId = i; - - pthread_attr_t thAttr; - pthread_attr_init(&thAttr); - pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); - - if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodeMgmtQueue, pWorker) != 0) { - dError("failed to create thread to process mmgmt queue, reason:%s", strerror(errno)); - } - - pthread_attr_destroy(&thAttr); - dTrace("dnode mmgmt worker:%d is launched, total:%d", pWorker->workerId, tsMMgmtPool.num); - } - - dTrace("dnode mmgmt queue:%p is allocated", tsMMgmtQueue); - return TSDB_CODE_SUCCESS; -} - -void dnodeFreeMnodeRqueue() { - taosCloseQueue(tsMMgmtQueue); - tsMMgmtQueue = NULL; -} - -void dnodeDispatchToMnodeMgmtQueue(SRpcMsg *pMsg) { - if (!mnodeIsRunning() || tsMMgmtQueue == NULL) { - dnodeSendRediretMsg(pMsg); - return; - } - - SMnodeMsg *pMgmt = (SMnodeMsg *)taosAllocateQitem(sizeof(SMnodeMsg)); - pMgmt->rpcMsg = *pMsg; - taosWriteQitem(tsMMgmtQueue, TAOS_QTYPE_RPC, pMgmt); -} - -static void dnodeSendRpcMnodeMgmtRsp(SMnodeMsg *pMgmt, int32_t code) { - if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; - - SRpcMsg rpcRsp = { - .handle = pMgmt->rpcMsg.handle, - .pCont = pMgmt->rspRet.rsp, - .contLen = pMgmt->rspRet.len, - .code = pMgmt->rspRet.code, - }; - - rpcSendResponse(&rpcRsp); - rpcFreeCont(pMgmt->rpcMsg.pCont); -} - -static void *dnodeProcessMnodeMgmtQueue(void *param) { - SMnodeMsg *pMgmtMsg; - int32_t type; - void * unUsed; - - while (1) { - if (taosReadQitemFromQset(tsMMgmtQset, &type, (void **)&pMgmtMsg, &unUsed) == 0) { - dTrace("dnodeProcessMnodeMgmtQueue: got no message from qset, exiting..."); - break; - } - - dTrace("%p, msg:%s will be processed", pMgmtMsg->rpcMsg.ahandle, taosMsg[pMgmtMsg->rpcMsg.msgType]); - int32_t code = mnodeProcessMgmt(pMgmtMsg); - dnodeSendRpcMnodeMgmtRsp(pMgmtMsg, code); - taosFreeQitem(pMgmtMsg); - } - - return NULL; -} diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c index 9695de12099..53e664b58b6 100644 --- a/src/dnode/src/dnodePeer.c +++ b/src/dnode/src/dnodePeer.c @@ -23,15 +23,15 @@ #include "taosmsg.h" #include "tglobal.h" #include "trpc.h" +#include "mnode.h" #include "dnode.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodeVWrite.h" #include "dnodeMRead.h" #include "dnodeMWrite.h" -#include "mnode.h" -extern void dnodeUpdateIpSet(SRpcIpSet *pIpSet); +extern void dnodeUpdateMnodeIpSetForPeer(SRpcIpSet *pIpSet); static void (*dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *); static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcIpSet *); static void (*dnodeProcessRspMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *rpcMsg); @@ -148,9 +148,10 @@ void dnodeCleanupClient() { } static void dnodeProcessRspFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) { - if (dnodeProcessRspMsgFp[pMsg->msgType]) { - if (pMsg->msgType == TSDB_MSG_TYPE_DM_STATUS_RSP && pIpSet) dnodeUpdateIpSet(pIpSet); + if (pMsg->msgType == TSDB_MSG_TYPE_DM_STATUS_RSP && pIpSet) { + dnodeUpdateMnodeIpSetForPeer(pIpSet); + } (*dnodeProcessRspMsgFp[pMsg->msgType])(pMsg); } else { dError("RPC %p, msg:%s is not processed", pMsg->handle, taosMsg[pMsg->msgType]); @@ -169,6 +170,6 @@ void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg) { void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp) { SRpcIpSet ipSet = {0}; - dnodeGetMnodeDnodeIpSet(&ipSet, false); + dnodeGetMnodeIpSetForPeer(&ipSet); rpcSendRecv(tsDnodeClientRpc, &ipSet, rpcMsg, rpcRsp); } diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index 031d860b1ec..68dfaef4084 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -37,8 +37,6 @@ static void * tsDnodeShellRpc = NULL; static int32_t tsDnodeQueryReqNum = 0; static int32_t tsDnodeSubmitReqNum = 0; -void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg); - int32_t dnodeInitShell() { dnodeProcessShellMsgFp[TSDB_MSG_TYPE_SUBMIT] = dnodeDispatchToVnodeWriteQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_QUERY] = dnodeDispatchToVnodeReadQueue; @@ -141,7 +139,7 @@ void dnodeProcessMsgFromShell(SRpcMsg *pMsg, SRpcIpSet *pIpSet) { } static int dnodeRetrieveUserAuthInfo(char *user, char *spi, char *encrypt, char *secret, char *ckey) { - int code = mgmtRetriveAuth(user, spi, encrypt, secret, ckey); + int code = mnodeRetriveAuth(user, spi, encrypt, secret, ckey); if (code != TSDB_CODE_NOT_READY) return code; SDMAuthMsg *pMsg = rpcMallocCont(sizeof(SDMAuthMsg)); diff --git a/src/dnode/src/dnodeVRead.c b/src/dnode/src/dnodeVRead.c index 34bbdb57885..c2ca9fcd026 100644 --- a/src/dnode/src/dnodeVRead.c +++ b/src/dnode/src/dnodeVRead.c @@ -23,7 +23,7 @@ #include "twal.h" #include "tglobal.h" #include "dnodeInt.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" #include "dnodeVRead.h" #include "vnode.h" @@ -93,7 +93,7 @@ void dnodeCleanupVnodeRead() { } void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) { - int32_t queuedMsgNum = 0; + int32_t mnodeMsgNum = 0; int32_t leftLen = pMsg->contLen; char *pCont = (char *) pMsg->pCont; void *pVnode; @@ -125,12 +125,12 @@ void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) { // next vnode leftLen -= pHead->contLen; pCont -= pHead->contLen; - queuedMsgNum++; + mnodeMsgNum++; taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); } - if (queuedMsgNum == 0) { + if (mnodeMsgNum == 0) { SRpcMsg rpcRsp = { .handle = pMsg->handle, .pCont = NULL, diff --git a/src/dnode/src/dnodeVWrite.c b/src/dnode/src/dnodeVWrite.c index 3783b857d15..bf4e49e84d9 100644 --- a/src/dnode/src/dnodeVWrite.c +++ b/src/dnode/src/dnodeVWrite.c @@ -27,7 +27,7 @@ #include "tdataformat.h" #include "dnodeInt.h" #include "dnodeVWrite.h" -#include "dnodeVMgmt.h" +#include "dnodeMgmt.h" typedef struct { taos_qall qall; diff --git a/src/inc/dnode.h b/src/inc/dnode.h index bcab82cc5d7..54108af4b93 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -43,16 +43,21 @@ void *dnodeAllocateRqueue(void *pVnode); void dnodeFreeRqueue(void *rqueue); void dnodeSendRpcWriteRsp(void *pVnode, void *param, int32_t code); -bool dnodeIsFirstDeploy(); -char *dnodeGetMnodeMasterEp(); -void dnodeGetMnodeDnodeIpSet(void *ipSet, bool encode); -void * dnodeGetMnodeInfos(); -int32_t dnodeGetDnodeId(); - -void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); -void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); -void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); -void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); +bool dnodeIsFirstDeploy(); +char * dnodeGetMnodeMasterEp(); +void dnodeGetMnodeIpSetForPeer(void *ipSet); +void dnodeGetMnodeIpSetForShell(void *ipSet); +void * dnodeGetMnodeInfos(); +int32_t dnodeGetDnodeId(); + +void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); +void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); +void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); +void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); + +void dnodeSendRpcMnodeWriteRsp(void *pMsg, int32_t code); +void dnodeReprocessMnodeWriteMsg(void *pMsg); +void dnodeDelayReprocessMnodeWriteMsg(void *pMsg); #ifdef __cplusplus } diff --git a/src/inc/mnode.h b/src/inc/mnode.h index f025cb5e8a1..da0a899f37e 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -13,44 +13,62 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_H -#define TDENGINE_MGMT_H +#ifndef TDENGINE_MNODE_H +#define TDENGINE_MNODE_H #ifdef __cplusplus extern "C" { #endif +struct SAcctObj; +struct SDnodeObj; +struct SUserObj; +struct SDbObj; +struct SVgObj; +struct STableObj; +struct SRpcMsg; + typedef struct { int len; - int code; void *rsp; } SMnodeRsp; -typedef struct { - SRpcMsg rpcMsg; +typedef struct SMnodeMsg { SMnodeRsp rpcRsp; + uint8_t msgType; + int8_t received; + int8_t successed; + int8_t expected; + int8_t retry; + int8_t maxRetry; + int32_t contLen; + int32_t code; + void * ahandle; + void * thandle; + void * pCont; + struct SAcctObj * pAcct; + struct SDnodeObj *pDnode; + struct SUserObj * pUser; + struct SDbObj * pDb; + struct SVgObj * pVgroup; + struct STableObj *pTable; } SMnodeMsg; -SMnodeMsg *mnodeCreateMsg(SRpcMsg *rpcMsg); -bool mnodeInitMsg(SMnodeMsg *pMsg); -void mnodeRleaseMsg(SMnodeMsg *pMsg); +void mnodeCreateMsg(SMnodeMsg *pMsg, struct SRpcMsg *rpcMsg); +int32_t mnodeInitMsg(SMnodeMsg *pMsg); +void mnodeCleanupMsg(SMnodeMsg *pMsg); -int32_t mgmtInitSystem(); -int32_t mgmtStartSystem(); -void mgmtCleanUpSystem(); +int32_t mnodeInitSystem(); +int32_t mnodeStartSystem(); +void mnodeCleanupSystem(); void mgmtStopSystem(); void sdbUpdateSync(); - -void* mnodeGetRqueue(void *); -void* mnodeGetWqueue(int32_t vgId); bool mnodeIsRunning(); int32_t mnodeProcessRead(SMnodeMsg *pMsg); int32_t mnodeProcessWrite(SMnodeMsg *pMsg); -int32_t mnodeProcessMgmt(SMnodeMsg *pMsg); - -int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey); -void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg); -void mgmtProcessReqMsgFromDnode(SRpcMsg *rpcMsg); +int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg); +void mnodeProcessPeerRsp(struct SRpcMsg *pMsg); +int32_t mnodeRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey); #ifdef __cplusplus } diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index f493a2b5421..f550b1660fb 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -121,23 +121,23 @@ TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY14, "dummy14" ) #define TSDB_IE_TYPE_DNODE_STATE 7 enum _mgmt_table { - TSDB_MNODE_TABLE_ACCT, - TSDB_MNODE_TABLE_USER, - TSDB_MNODE_TABLE_DB, - TSDB_MNODE_TABLE_TABLE, - TSDB_MNODE_TABLE_DNODE, - TSDB_MNODE_TABLE_MNODE, - TSDB_MNODE_TABLE_VGROUP, - TSDB_MNODE_TABLE_METRIC, - TSDB_MNODE_TABLE_MODULE, - TSDB_MNODE_TABLE_QUERIES, - TSDB_MNODE_TABLE_STREAMS, - TSDB_MNODE_TABLE_CONFIGS, - TSDB_MNODE_TABLE_CONNS, - TSDB_MNODE_TABLE_SCORES, - TSDB_MNODE_TABLE_GRANTS, - TSDB_MNODE_TABLE_VNODES, - TSDB_MNODE_TABLE_MAX, + TSDB_MGMT_TABLE_ACCT, + TSDB_MGMT_TABLE_USER, + TSDB_MGMT_TABLE_DB, + TSDB_MGMT_TABLE_TABLE, + TSDB_MGMT_TABLE_DNODE, + TSDB_MGMT_TABLE_MNODE, + TSDB_MGMT_TABLE_VGROUP, + TSDB_MGMT_TABLE_METRIC, + TSDB_MGMT_TABLE_MODULE, + TSDB_MGMT_TABLE_QUERIES, + TSDB_MGMT_TABLE_STREAMS, + TSDB_MGMT_TABLE_CONFIGS, + TSDB_MGMT_TABLE_CONNS, + TSDB_MGMT_TABLE_SCORES, + TSDB_MGMT_TABLE_GRANTS, + TSDB_MGMT_TABLE_VNODES, + TSDB_MGMT_TABLE_MAX, }; #define TSDB_ALTER_TABLE_ADD_TAG_COLUMN 1 diff --git a/src/inc/tbalance.h b/src/inc/tbalance.h index fee04525453..63437021fd1 100644 --- a/src/inc/tbalance.h +++ b/src/inc/tbalance.h @@ -26,7 +26,7 @@ struct SDnodeObj; int32_t balanceInit(); void balanceCleanUp(); void balanceNotify(); -void balanceUpdateMgmt(); +void balanceUpdateMnode(); void balanceReset(); int32_t balanceAllocVnodes(struct SVgObj *pVgroup); int32_t balanceDropDnode(struct SDnodeObj *pDnode); diff --git a/src/inc/trpc.h b/src/inc/trpc.h index 16223b813a1..5c5c77c2517 100644 --- a/src/inc/trpc.h +++ b/src/inc/trpc.h @@ -28,21 +28,21 @@ extern "C" { extern int tsRpcHeadSize; -typedef struct { +typedef struct SRpcIpSet { int8_t inUse; int8_t numOfIps; uint16_t port[TSDB_MAX_REPLICA]; char fqdn[TSDB_MAX_REPLICA][TSDB_FQDN_LEN]; } SRpcIpSet; -typedef struct { +typedef struct SRpcConnInfo { uint32_t clientIp; uint16_t clientPort; uint32_t serverIp; char user[TSDB_USER_LEN]; } SRpcConnInfo; -typedef struct { +typedef struct SRpcMsg { uint8_t msgType; void *pCont; int contLen; @@ -51,7 +51,7 @@ typedef struct { void *ahandle; //app handle set by client, for debug purpose } SRpcMsg; -typedef struct { +typedef struct SRpcInit { uint16_t localPort; // local port char *label; // for debug purpose int numOfThreads; // number of threads to handle connections diff --git a/src/mnode/inc/mnodeAcct.h b/src/mnode/inc/mnodeAcct.h index 136c28f2ae4..44c3fc3cb81 100644 --- a/src/mnode/inc/mnodeAcct.h +++ b/src/mnode/inc/mnodeAcct.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_ACCT_H -#define TDENGINE_MGMT_ACCT_H +#ifndef TDENGINE_MNODE_ACCT_H +#define TDENGINE_MNODE_ACCT_H #ifdef __cplusplus extern "C" { @@ -22,16 +22,16 @@ extern "C" { #include "tacct.h" -int32_t mgmtInitAccts(); -void mgmtCleanUpAccts(); -void * mgmtGetAcct(char *acctName); -void * mgmtGetNextAcct(void *pIter, SAcctObj **pAcct); -void mgmtIncAcctRef(SAcctObj *pAcct); -void mgmtDecAcctRef(SAcctObj *pAcct); -void mgmtAddDbToAcct(SAcctObj *pAcct, SDbObj *pDb); -void mgmtDropDbFromAcct(SAcctObj *pAcct, SDbObj *pDb); -void mgmtAddUserToAcct(SAcctObj *pAcct, SUserObj *pUser); -void mgmtDropUserFromAcct(SAcctObj *pAcct, SUserObj *pUser); +int32_t mnodeInitAccts(); +void mnodeCleanupAccts(); +void * mnodeGetAcct(char *acctName); +void * mnodeGetNextAcct(void *pIter, SAcctObj **pAcct); +void mnodeIncAcctRef(SAcctObj *pAcct); +void mnodeDecAcctRef(SAcctObj *pAcct); +void mnodeAddDbToAcct(SAcctObj *pAcct, SDbObj *pDb); +void mnodeDropDbFromAcct(SAcctObj *pAcct, SDbObj *pDb); +void mnodeAddUserToAcct(SAcctObj *pAcct, SUserObj *pUser); +void mnodeDropUserFromAcct(SAcctObj *pAcct, SUserObj *pUser); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeDb.h b/src/mnode/inc/mnodeDb.h index 5339a878f13..c8557af1667 100644 --- a/src/mnode/inc/mnodeDb.h +++ b/src/mnode/inc/mnodeDb.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_DB_H -#define TDENGINE_MGMT_DB_H +#ifndef TDENGINE_MNODE_DB_H +#define TDENGINE_MNODE_DB_H #ifdef __cplusplus extern "C" { @@ -28,26 +28,26 @@ enum _TSDB_DB_STATUS { }; // api -int32_t mgmtInitDbs(); -void mgmtCleanUpDbs(); -SDbObj *mgmtGetDb(char *db); -SDbObj *mgmtGetDbByTableId(char *db); -void * mgmtGetNextDb(void *pIter, SDbObj **pDb); -void mgmtIncDbRef(SDbObj *pDb); -void mgmtDecDbRef(SDbObj *pDb); -bool mgmtCheckIsMonitorDB(char *db, char *monitordb); -void mgmtDropAllDbs(SAcctObj *pAcct); +int32_t mnodeInitDbs(); +void mnodeCleanupDbs(); +SDbObj *mnodeGetDb(char *db); +SDbObj *mnodeGetDbByTableId(char *db); +void * mnodeGetNextDb(void *pIter, SDbObj **pDb); +void mnodeIncDbRef(SDbObj *pDb); +void mnodeDecDbRef(SDbObj *pDb); +bool mnodeCheckIsMonitorDB(char *db, char *monitordb); +void mnodeDropAllDbs(SAcctObj *pAcct); // util func -void mgmtAddSuperTableIntoDb(SDbObj *pDb); -void mgmtRemoveSuperTableFromDb(SDbObj *pDb); -void mgmtAddTableIntoDb(SDbObj *pDb); -void mgmtRemoveTableFromDb(SDbObj *pDb); -void mgmtAddVgroupIntoDb(SVgObj *pVgroup); -void mgmtAddVgroupIntoDbTail(SVgObj *pVgroup); -void mgmtRemoveVgroupFromDb(SVgObj *pVgroup); -void mgmtMoveVgroupToTail(SVgObj *pVgroup); -void mgmtMoveVgroupToHead(SVgObj *pVgroup); +void mnodeAddSuperTableIntoDb(SDbObj *pDb); +void mnodeRemoveSuperTableFromDb(SDbObj *pDb); +void mnodeAddTableIntoDb(SDbObj *pDb); +void mnodeRemoveTableFromDb(SDbObj *pDb); +void mnodeAddVgroupIntoDb(SVgObj *pVgroup); +void mnodeAddVgroupIntoDbTail(SVgObj *pVgroup); +void mnodeRemoveVgroupFromDb(SVgObj *pVgroup); +void mnodeMoveVgroupToTail(SVgObj *pVgroup); +void mnodeMoveVgroupToHead(SVgObj *pVgroup); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeDef.h b/src/mnode/inc/mnodeDef.h index 07920403b18..aacf8f419ff 100644 --- a/src/mnode/inc/mnodeDef.h +++ b/src/mnode/inc/mnodeDef.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_DEF_H -#define TDENGINE_MGMT_DEF_H +#ifndef TDENGINE_MNODE_DEF_H +#define TDENGINE_MNODE_DEF_H #ifdef __cplusplus extern "C" { @@ -65,7 +65,7 @@ typedef struct SMnodeObj { int8_t role; } SMnodeObj; -typedef struct { +typedef struct STableObj { char *tableId; int8_t type; } STableObj; @@ -233,26 +233,6 @@ typedef struct { char payload[]; } SShowObj; -typedef struct { - uint8_t msgType; - int8_t received; - int8_t successed; - int8_t expected; - int8_t retry; - int8_t maxRetry; - int32_t contLen; - int32_t code; - void *ahandle; - void *thandle; - void *pCont; - SAcctObj *pAcct; - SDnodeObj*pDnode; - SUserObj *pUser; - SDbObj *pDb; - SVgObj *pVgroup; - STableObj *pTable; -} SMnodeMsg; - #ifdef __cplusplus } #endif diff --git a/src/mnode/inc/mnodeDnode.h b/src/mnode/inc/mnodeDnode.h index 14960c5701b..75a1e29b0b3 100644 --- a/src/mnode/inc/mnodeDnode.h +++ b/src/mnode/inc/mnodeDnode.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_CLUSTER_H -#define TDENGINE_CLUSTER_H +#ifndef TDENGINE_MNODE_DNODE_H +#define TDENGINE_MNODE_DNODE_H #ifdef __cplusplus extern "C" { @@ -27,21 +27,21 @@ typedef enum { TAOS_DN_STATUS_READY } EDnodeStatus; -int32_t mgmtInitDnodes(); +int32_t mnodeInitDnodes(); void mgmtCleanupDnodes(); -char* mgmtGetDnodeStatusStr(int32_t dnodeStatus); +char* mnodeGetDnodeStatusStr(int32_t dnodeStatus); void mgmtMonitorDnodeModule(); -int32_t mgmtGetDnodesNum(); -int32_t mgmtGetOnlinDnodesNum(); -void * mgmtGetNextDnode(void *pIter, SDnodeObj **pDnode); -void mgmtIncDnodeRef(SDnodeObj *pDnode); -void mgmtDecDnodeRef(SDnodeObj *pDnode); -void * mgmtGetDnode(int32_t dnodeId); -void * mgmtGetDnodeByEp(char *ep); -void mgmtUpdateDnode(SDnodeObj *pDnode); -int32_t mgmtDropDnode(SDnodeObj *pDnode); +int32_t mnodeGetDnodesNum(); +int32_t mnodeGetOnlinDnodesNum(); +void * mnodeGetNextDnode(void *pIter, SDnodeObj **pDnode); +void mnodeIncDnodeRef(SDnodeObj *pDnode); +void mnodeDecDnodeRef(SDnodeObj *pDnode); +void * mnodeGetDnode(int32_t dnodeId); +void * mnodeGetDnodeByEp(char *ep); +void mnodeUpdateDnode(SDnodeObj *pDnode); +int32_t mnodeDropDnode(SDnodeObj *pDnode); extern int32_t tsAccessSquence; diff --git a/src/mnode/inc/mnodeInt.h b/src/mnode/inc/mnodeInt.h index a83d5beee06..466c3306a01 100644 --- a/src/mnode/inc/mnodeInt.h +++ b/src/mnode/inc/mnodeInt.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_LOG_H -#define TDENGINE_MGMT_LOG_H +#ifndef TDENGINE_MNODE_LOG_H +#define TDENGINE_MNODE_LOG_H #ifdef __cplusplus extern "C" { diff --git a/src/mnode/inc/mnodeMnode.h b/src/mnode/inc/mnodeMnode.h index 123df73fb22..14ea9922062 100644 --- a/src/mnode/inc/mnodeMnode.h +++ b/src/mnode/inc/mnodeMnode.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_MNODE_H -#define TDENGINE_MGMT_MNODE_H +#ifndef TDENGINE_MNODE_MNODE_H +#define TDENGINE_MNODE_MNODE_H #ifdef __cplusplus extern "C" { @@ -28,25 +28,25 @@ typedef enum { TAOS_MN_STATUS_READY } EMnodeStatus; -int32_t mgmtInitMnodes(); +int32_t mnodeInitMnodes(); void mgmtCleanupMnodes(); -int32_t mgmtAddMnode(int32_t dnodeId); -int32_t mgmtDropMnode(int32_t dnodeId); -void mgmtDropMnodeLocal(int32_t dnodeId); +int32_t mnodeAddMnode(int32_t dnodeId); +int32_t mnodeDropMnode(int32_t dnodeId); +void mnodeDropMnodeLocal(int32_t dnodeId); -void * mgmtGetMnode(int32_t mnodeId); -int32_t mgmtGetMnodesNum(); -void * mgmtGetNextMnode(void *pIter, struct SMnodeObj **pMnode); -void mgmtIncMnodeRef(struct SMnodeObj *pMnode); -void mgmtDecMnodeRef(struct SMnodeObj *pMnode); +void * mnodeGetMnode(int32_t mnodeId); +int32_t mnodeGetMnodesNum(); +void * mnodeGetNextMnode(void *pIter, struct SMnodeObj **pMnode); +void mnodeIncMnodeRef(struct SMnodeObj *pMnode); +void mnodeDecMnodeRef(struct SMnodeObj *pMnode); -char * mgmtGetMnodeRoleStr(); -void mgmtGetMnodeIpSetForPeer(SRpcIpSet *ipSet); -void mgmtGetMnodeIpSetForShell(SRpcIpSet *ipSet); +char * mnodeGetMnodeRoleStr(); +void mnodeGetMnodeIpSetForPeer(SRpcIpSet *ipSet); +void mnodeGetMnodeIpSetForShell(SRpcIpSet *ipSet); -void mgmtGetMnodeInfos(void *mnodes); -void mgmtUpdateMnodeIpSet(); +void mnodeGetMnodeInfos(void *mnodes); +void mnodeUpdateMnodeIpSet(); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodePeer.h b/src/mnode/inc/mnodePeer.h new file mode 100644 index 00000000000..c81617266d7 --- /dev/null +++ b/src/mnode/inc/mnodePeer.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TDENGINE_MNODE_PEER_H +#define TDENGINE_MNODE_PEER_H + +#ifdef __cplusplus +extern "C" { +#endif +#include "mnodeDef.h" + +void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); +void mnodeAddPeerMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)); +int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mnode/inc/mnodeProfile.h b/src/mnode/inc/mnodeProfile.h index cb5234c7e63..0311983a381 100644 --- a/src/mnode/inc/mnodeProfile.h +++ b/src/mnode/inc/mnodeProfile.h @@ -13,16 +13,16 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_PROFILE_H -#define TDENGINE_MGMT_PROFILE_H +#ifndef TDENGINE_MNODE_PROFILE_H +#define TDENGINE_MNODE_PROFILE_H #ifdef __cplusplus extern "C" { #endif #include "mnodeDef.h" -int32_t mgmtInitProfile(); -void mgmtCleanUpProfile(); +int32_t mnodeInitProfile(); +void mnodeCleanupProfile(); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeServer.h b/src/mnode/inc/mnodeRead.h similarity index 77% rename from src/mnode/inc/mnodeServer.h rename to src/mnode/inc/mnodeRead.h index 69df500bbc5..5e7131f585a 100644 --- a/src/mnode/inc/mnodeServer.h +++ b/src/mnode/inc/mnodeRead.h @@ -13,15 +13,16 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_DSERVER_H -#define TDENGINE_MGMT_DSERVER_H +#ifndef TDENGINE_MNODE_READ_H +#define TDENGINE_MNODE_READ_H #ifdef __cplusplus extern "C" { #endif +#include "mnodeDef.h" -int32_t mnodeInitMgmt(); -void mgmtCleanupMgmt(); +void mnodeAddReadMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)); +int32_t mnodeProcessRead(SMnodeMsg *pMsg); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeShell.h b/src/mnode/inc/mnodeShow.h similarity index 62% rename from src/mnode/inc/mnodeShell.h rename to src/mnode/inc/mnodeShow.h index 53fb5827c13..d571eabfd8a 100644 --- a/src/mnode/inc/mnodeShell.h +++ b/src/mnode/inc/mnodeShow.h @@ -13,35 +13,22 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_SHELL_H -#define TDENGINE_MGMT_SHELL_H +#ifndef TDENGINE_MNODE_SHELL_H +#define TDENGINE_MNODE_SHELL_H #ifdef __cplusplus extern "C" { #endif #include "mnodeDef.h" -int32_t mgmtInitShell(); -void mgmtCleanUpShell(); -void mgmtAddShellMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *queuedMsg)); +int32_t mnodeInitShow(); +void mnodeCleanUpShow(); typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn); void mnodeAddShowMetaHandle(uint8_t showType, SShowMetaFp fp); void mnodeAddShowRetrieveHandle(uint8_t showType, SShowRetrieveFp fp); -void mgmtAddToShellQueue(SMnodeMsg *queuedMsg); -void mgmtDealyedAddToShellQueue(SMnodeMsg *queuedMsg); -void mgmtSendSimpleResp(void *thandle, int32_t code); - -bool mgmtCheckQhandle(uint64_t qhandle); -void *mgmtSaveQhandle(void *qhandle, int32_t size); -void mgmtFreeQhandle(void *qhandle, bool forceRemove); - -void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg); -void *mgmtCloneQueuedMsg(SMnodeMsg *pSrcMsg); -void mgmtFreeQueuedMsg(SMnodeMsg *pMsg); - #ifdef __cplusplus } #endif diff --git a/src/mnode/inc/mnodeTable.h b/src/mnode/inc/mnodeTable.h index cee2a88ee42..78ef0e37e8a 100644 --- a/src/mnode/inc/mnodeTable.h +++ b/src/mnode/inc/mnodeTable.h @@ -22,16 +22,16 @@ extern "C" { #include "mnodeDef.h" -int32_t mgmtInitTables(); -void mgmtCleanUpTables(); -void * mgmtGetTable(char *tableId); -void mgmtIncTableRef(void *pTable); -void mgmtDecTableRef(void *pTable); -void * mgmtGetNextChildTable(void *pIter, SChildTableObj **pTable); -void * mgmtGetNextSuperTable(void *pIter, SSuperTableObj **pTable); -void mgmtDropAllChildTables(SDbObj *pDropDb); -void mgmtDropAllSuperTables(SDbObj *pDropDb); -void mgmtDropAllChildTablesInVgroups(SVgObj *pVgroup); +int32_t mnodeInitTables(); +void mnodeCleanupTables(); +void * mnodeGetTable(char *tableId); +void mnodeIncTableRef(void *pTable); +void mnodeDecTableRef(void *pTable); +void * mnodeGetNextChildTable(void *pIter, SChildTableObj **pTable); +void * mnodeGetNextSuperTable(void *pIter, SSuperTableObj **pTable); +void mnodeDropAllChildTables(SDbObj *pDropDb); +void mnodeDropAllSuperTables(SDbObj *pDropDb); +void mnodeDropAllChildTablesInVgroups(SVgObj *pVgroup); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeUser.h b/src/mnode/inc/mnodeUser.h index fc5ad13b8a9..338b43b47de 100644 --- a/src/mnode/inc/mnodeUser.h +++ b/src/mnode/inc/mnodeUser.h @@ -13,23 +13,23 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_USER_H -#define TDENGINE_MGMT_USER_H +#ifndef TDENGINE_MNODE_USER_H +#define TDENGINE_MNODE_USER_H #ifdef __cplusplus extern "C" { #endif #include "mnodeDef.h" -int32_t mgmtInitUsers(); -void mgmtCleanUpUsers(); -SUserObj *mgmtGetUser(char *name); -void * mgmtGetNextUser(void *pIter, SUserObj **pUser); -void mgmtIncUserRef(SUserObj *pUser); -void mgmtDecUserRef(SUserObj *pUser); -SUserObj *mgmtGetUserFromConn(void *pConn); -int32_t mgmtCreateUser(SAcctObj *pAcct, char *name, char *pass); -void mgmtDropAllUsers(SAcctObj *pAcct); +int32_t mnodeInitUsers(); +void mnodeCleanupUsers(); +SUserObj *mnodeGetUser(char *name); +void * mnodeGetNextUser(void *pIter, SUserObj **pUser); +void mnodeIncUserRef(SUserObj *pUser); +void mnodeDecUserRef(SUserObj *pUser); +SUserObj *mnodeGetUserFromConn(void *pConn); +int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass); +void mnodeDropAllUsers(SAcctObj *pAcct); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeVgroup.h b/src/mnode/inc/mnodeVgroup.h index b1359e07347..ac8eb73296e 100644 --- a/src/mnode/inc/mnodeVgroup.h +++ b/src/mnode/inc/mnodeVgroup.h @@ -13,41 +13,41 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_VGROUP_H -#define TDENGINE_MGMT_VGROUP_H +#ifndef TDENGINE_MNODE_VGROUP_H +#define TDENGINE_MNODE_VGROUP_H #ifdef __cplusplus extern "C" { #endif -#include "mnodeDef.h" - -int32_t mgmtInitVgroups(); -void mgmtCleanUpVgroups(); -SVgObj *mgmtGetVgroup(int32_t vgId); -void mgmtIncVgroupRef(SVgObj *pVgroup); -void mgmtDecVgroupRef(SVgObj *pVgroup); -void mgmtDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg); -void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode); -void mgmtUpdateAllDbVgroups(SDbObj *pAlterDb); - -void * mgmtGetNextVgroup(void *pIter, SVgObj **pVgroup); -void mgmtUpdateVgroup(SVgObj *pVgroup); -void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *dnodeId, SVnodeLoad *pVload); - -void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb); -void mgmtDropVgroup(SVgObj *pVgroup, void *ahandle); -void mgmtAlterVgroup(SVgObj *pVgroup, void *ahandle); -SVgObj *mgmtGetAvailableVgroup(SDbObj *pDb); - -void mgmtAddTableIntoVgroup(SVgObj *pVgroup, SChildTableObj *pTable); -void mgmtRemoveTableFromVgroup(SVgObj *pVgroup, SChildTableObj *pTable); -void mgmtSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle); -void mgmtSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle); -void mgmtSendCreateVgroupMsg(SVgObj *pVgroup, void *ahandle); - -SRpcIpSet mgmtGetIpSetFromVgroup(SVgObj *pVgroup); -SRpcIpSet mgmtGetIpSetFromIp(char *ep); +struct SMnodeMsg; + +int32_t mnodeInitVgroups(); +void mnodeCleanupVgroups(); +SVgObj *mnodeGetVgroup(int32_t vgId); +void mnodeIncVgroupRef(SVgObj *pVgroup); +void mnodeDecVgroupRef(SVgObj *pVgroup); +void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg); +void mnodeDropAllDnodeVgroups(SDnodeObj *pDropDnode); +void mnodeUpdateAllDbVgroups(SDbObj *pAlterDb); + +void * mnodeGetNextVgroup(void *pIter, SVgObj **pVgroup); +void mnodeUpdateVgroup(SVgObj *pVgroup); +void mnodeUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *dnodeId, SVnodeLoad *pVload); + +int32_t mnodeCreateVgroup(struct SMnodeMsg *pMsg, SDbObj *pDb); +void mnodeDropVgroup(SVgObj *pVgroup, void *ahandle); +void mnodeAlterVgroup(SVgObj *pVgroup, void *ahandle); +SVgObj *mnodeGetAvailableVgroup(SDbObj *pDb); + +void mnodeAddTableIntoVgroup(SVgObj *pVgroup, SChildTableObj *pTable); +void mnodeRemoveTableFromVgroup(SVgObj *pVgroup, SChildTableObj *pTable); +void mnodeSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle); +void mnodeSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle); +void mnodeSendCreateVgroupMsg(SVgObj *pVgroup, void *ahandle); + +SRpcIpSet mnodeGetIpSetFromVgroup(SVgObj *pVgroup); +SRpcIpSet mnodeGetIpSetFromIp(char *ep); #ifdef __cplusplus } diff --git a/src/mnode/inc/mnodeDClient.h b/src/mnode/inc/mnodeWrite.h similarity index 72% rename from src/mnode/inc/mnodeDClient.h rename to src/mnode/inc/mnodeWrite.h index 1bd222f4bce..ced8eeb7c05 100644 --- a/src/mnode/inc/mnodeDClient.h +++ b/src/mnode/inc/mnodeWrite.h @@ -13,17 +13,16 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_MGMT_DCLIENT_H -#define TDENGINE_MGMT_DCLIENT_H +#ifndef TDENGINE_MNODE_WRITE_H +#define TDENGINE_MNODE_WRITE_H #ifdef __cplusplus extern "C" { #endif +#include "mnodeDef.h" -int32_t mgmtInitDClient(); -void mgmtCleanupDClient(); -void mgmtAddDClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); -void mgmtSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); +void mnodeAddWriteMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)); +int32_t mnodeProcessRead(SMnodeMsg *pMsg); #ifdef __cplusplus } diff --git a/src/mnode/src/mnodeAcct.c b/src/mnode/src/mnodeAcct.c index dce771fefd0..3836bcea52c 100644 --- a/src/mnode/src/mnodeAcct.c +++ b/src/mnode/src/mnodeAcct.c @@ -17,7 +17,6 @@ #include "os.h" #include "taoserror.h" #include "ttime.h" -#include "tutil.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" @@ -28,48 +27,48 @@ void * tsAcctSdb = NULL; static int32_t tsAcctUpdateSize; -static void mgmtCreateRootAcct(); +static void mnodeCreateRootAcct(); -static int32_t mgmtActionAcctDestroy(SSdbOper *pOper) { +static int32_t mnodeAcctActionDestroy(SSdbOper *pOper) { SAcctObj *pAcct = pOper->pObj; pthread_mutex_destroy(&pAcct->mutex); tfree(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtAcctActionInsert(SSdbOper *pOper) { +static int32_t mnodeAcctActionInsert(SSdbOper *pOper) { SAcctObj *pAcct = pOper->pObj; memset(&pAcct->acctInfo, 0, sizeof(SAcctInfo)); pthread_mutex_init(&pAcct->mutex, NULL); return TSDB_CODE_SUCCESS; } -static int32_t mgmtActionAcctDelete(SSdbOper *pOper) { +static int32_t mnodeAcctActionDelete(SSdbOper *pOper) { SAcctObj *pAcct = pOper->pObj; - mgmtDropAllUsers(pAcct); - mgmtDropAllDbs(pAcct); + mnodeDropAllUsers(pAcct); + mnodeDropAllDbs(pAcct); return TSDB_CODE_SUCCESS; } -static int32_t mgmtActionAcctUpdate(SSdbOper *pOper) { +static int32_t mnodeAcctActionUpdate(SSdbOper *pOper) { SAcctObj *pAcct = pOper->pObj; - SAcctObj *pSaved = mgmtGetAcct(pAcct->user); + SAcctObj *pSaved = mnodeGetAcct(pAcct->user); if (pAcct != pSaved) { memcpy(pSaved, pAcct, tsAcctUpdateSize); free(pAcct); } - mgmtDecAcctRef(pSaved); + mnodeDecAcctRef(pSaved); return TSDB_CODE_SUCCESS; } -static int32_t mgmtActionActionEncode(SSdbOper *pOper) { +static int32_t mnodeActionActionEncode(SSdbOper *pOper) { SAcctObj *pAcct = pOper->pObj; memcpy(pOper->rowData, pAcct, tsAcctUpdateSize); pOper->rowSize = tsAcctUpdateSize; return TSDB_CODE_SUCCESS; } -static int32_t mgmtActionAcctDecode(SSdbOper *pOper) { +static int32_t mnodeAcctActionDecode(SSdbOper *pOper) { SAcctObj *pAcct = (SAcctObj *) calloc(1, sizeof(SAcctObj)); if (pAcct == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -78,16 +77,16 @@ static int32_t mgmtActionAcctDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtActionAcctRestored() { +static int32_t mnodeAcctActionRestored() { if (dnodeIsFirstDeploy()) { - mgmtCreateRootAcct(); + mnodeCreateRootAcct(); } acctInit(); return TSDB_CODE_SUCCESS; } -int32_t mgmtInitAccts() { +int32_t mnodeInitAccts() { SAcctObj tObj; tsAcctUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -98,13 +97,13 @@ int32_t mgmtInitAccts() { .maxRowSize = tsAcctUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, - .insertFp = mgmtAcctActionInsert, - .deleteFp = mgmtActionAcctDelete, - .updateFp = mgmtActionAcctUpdate, - .encodeFp = mgmtActionActionEncode, - .decodeFp = mgmtActionAcctDecode, - .destroyFp = mgmtActionAcctDestroy, - .restoredFp = mgmtActionAcctRestored + .insertFp = mnodeAcctActionInsert, + .deleteFp = mnodeAcctActionDelete, + .updateFp = mnodeAcctActionUpdate, + .encodeFp = mnodeActionActionEncode, + .decodeFp = mnodeAcctActionDecode, + .destroyFp = mnodeAcctActionDestroy, + .restoredFp = mnodeAcctActionRestored }; tsAcctSdb = sdbOpenTable(&tableDesc); @@ -117,52 +116,52 @@ int32_t mgmtInitAccts() { return TSDB_CODE_SUCCESS; } -void mgmtCleanUpAccts() { +void mnodeCleanupAccts() { sdbCloseTable(tsAcctSdb); acctCleanUp(); } -void *mgmtGetAcct(char *name) { +void *mnodeGetAcct(char *name) { return sdbGetRow(tsAcctSdb, name); } -void *mgmtGetNextAcct(void *pIter, SAcctObj **pAcct) { +void *mnodeGetNextAcct(void *pIter, SAcctObj **pAcct) { return sdbFetchRow(tsAcctSdb, pIter, (void **)pAcct); } -void mgmtIncAcctRef(SAcctObj *pAcct) { +void mnodeIncAcctRef(SAcctObj *pAcct) { sdbIncRef(tsAcctSdb, pAcct); } -void mgmtDecAcctRef(SAcctObj *pAcct) { +void mnodeDecAcctRef(SAcctObj *pAcct) { sdbDecRef(tsAcctSdb, pAcct); } -void mgmtAddDbToAcct(SAcctObj *pAcct, SDbObj *pDb) { +void mnodeAddDbToAcct(SAcctObj *pAcct, SDbObj *pDb) { atomic_add_fetch_32(&pAcct->acctInfo.numOfDbs, 1); pDb->pAcct = pAcct; - mgmtIncAcctRef(pAcct); + mnodeIncAcctRef(pAcct); } -void mgmtDropDbFromAcct(SAcctObj *pAcct, SDbObj *pDb) { +void mnodeDropDbFromAcct(SAcctObj *pAcct, SDbObj *pDb) { atomic_sub_fetch_32(&pAcct->acctInfo.numOfDbs, 1); pDb->pAcct = NULL; - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } -void mgmtAddUserToAcct(SAcctObj *pAcct, SUserObj *pUser) { +void mnodeAddUserToAcct(SAcctObj *pAcct, SUserObj *pUser) { atomic_add_fetch_32(&pAcct->acctInfo.numOfUsers, 1); pUser->pAcct = pAcct; - mgmtIncAcctRef(pAcct); + mnodeIncAcctRef(pAcct); } -void mgmtDropUserFromAcct(SAcctObj *pAcct, SUserObj *pUser) { +void mnodeDropUserFromAcct(SAcctObj *pAcct, SUserObj *pUser) { atomic_sub_fetch_32(&pAcct->acctInfo.numOfUsers, 1); pUser->pAcct = NULL; - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } -static void mgmtCreateRootAcct() { +static void mnodeCreateRootAcct() { int32_t numOfAccts = sdbGetNumOfRows(tsAcctSdb); if (numOfAccts != 0) return; diff --git a/src/mnode/src/mnodeBalance.c b/src/mnode/src/mnodeBalance.c index e70458a3faa..64d3c6d7c71 100644 --- a/src/mnode/src/mnodeBalance.c +++ b/src/mnode/src/mnodeBalance.c @@ -15,22 +15,18 @@ #define _DEFAULT_SOURCE #include "os.h" -#include "trpc.h" -#include "tbalance.h" #include "tglobal.h" #include "mnodeDef.h" #include "mnodeInt.h" -#include "mnodeMnode.h" #include "mnodeDnode.h" #include "mnodeSdb.h" -#include "mnodeVgroup.h" #ifndef _SYNC int32_t balanceInit() { return TSDB_CODE_SUCCESS; } void balanceCleanUp() {} void balanceNotify() {} -void balanceUpdateMgmt() {} +void balanceUpdateMnode() {} void balanceReset() {} int32_t balanceAllocVnodes(SVgObj *pVgroup) { @@ -40,12 +36,12 @@ int32_t balanceAllocVnodes(SVgObj *pVgroup) { float vnodeUsage = 1000.0; while (1) { - pIter = mgmtGetNextDnode(pIter, &pDnode); + pIter = mnodeGetNextDnode(pIter, &pDnode); if (pDnode == NULL) break; if (pDnode->totalVnodes > 0 && pDnode->openVnodes < pDnode->totalVnodes) { float openVnodes = pDnode->openVnodes; - if (pDnode->isMgmt) openVnodes += tsMgmtEqualVnodeNum; + if (pDnode->isMgmt) openVnodes += tsMnodeEqualVnodeNum; float usage = openVnodes / pDnode->totalVnodes; if (usage <= vnodeUsage) { @@ -53,7 +49,7 @@ int32_t balanceAllocVnodes(SVgObj *pVgroup) { vnodeUsage = usage; } } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } sdbFreeIter(pIter); diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index 871ce32c6fa..09fd7f5b3e1 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -15,7 +15,6 @@ #define _DEFAULT_SOURCE #include "os.h" - #include "taoserror.h" #include "tutil.h" #include "tgrant.h" @@ -24,15 +23,17 @@ #include "tname.h" #include "tbalance.h" #include "tdataformat.h" +#include "mnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeAcct.h" #include "mnodeDb.h" #include "mnodeDnode.h" #include "mnodeMnode.h" -#include "mnodeShell.h" #include "mnodeProfile.h" +#include "mnodeWrite.h" #include "mnodeSdb.h" +#include "mnodeShow.h" #include "mnodeTable.h" #include "mnodeUser.h" #include "mnodeVgroup.h" @@ -40,23 +41,23 @@ static void * tsDbSdb = NULL; static int32_t tsDbUpdateSize; -static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate); -static void mgmtDropDb(SMnodeMsg *newMsg); -static int32_t mgmtSetDbDropping(SDbObj *pDb); -static int32_t mgmtGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg); -static void mgmtProcessAlterDbMsg(SMnodeMsg *pMsg); -static void mgmtProcessDropDbMsg(SMnodeMsg *pMsg); +static int32_t mnodeCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate); +static int32_t mnodeDropDb(SMnodeMsg *newMsg); +static int32_t mnodeSetDbDropping(SDbObj *pDb); +static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeProcessCreateDbMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessAlterDbMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg); -static int32_t mgmtDbActionDestroy(SSdbOper *pOper) { +static int32_t mnodeDbActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionInsert(SSdbOper *pOper) { +static int32_t mnodeDbActionInsert(SSdbOper *pOper) { SDbObj *pDb = pOper->pObj; - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); pDb->pHead = NULL; pDb->pTail = NULL; @@ -65,8 +66,8 @@ static int32_t mgmtDbActionInsert(SSdbOper *pOper) { pDb->numOfSuperTables = 0; if (pAcct != NULL) { - mgmtAddDbToAcct(pAcct, pDb); - mgmtDecAcctRef(pAcct); + mnodeAddDbToAcct(pAcct, pDb); + mnodeDecAcctRef(pAcct); } else { mError("db:%s, acct:%s info not exist in sdb", pDb->name, pDb->acct); @@ -76,39 +77,39 @@ static int32_t mgmtDbActionInsert(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionDelete(SSdbOper *pOper) { +static int32_t mnodeDbActionDelete(SSdbOper *pOper) { SDbObj *pDb = pOper->pObj; - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); - mgmtDropDbFromAcct(pAcct, pDb); - mgmtDropAllChildTables(pDb); - mgmtDropAllSuperTables(pDb); - mgmtDropAllDbVgroups(pDb, false); - mgmtDecAcctRef(pAcct); + mnodeDropDbFromAcct(pAcct, pDb); + mnodeDropAllChildTables(pDb); + mnodeDropAllSuperTables(pDb); + mnodeDropAllDbVgroups(pDb, false); + mnodeDecAcctRef(pAcct); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionUpdate(SSdbOper *pOper) { +static int32_t mnodeDbActionUpdate(SSdbOper *pOper) { SDbObj *pDb = pOper->pObj; - SDbObj *pSaved = mgmtGetDb(pDb->name); + SDbObj *pSaved = mnodeGetDb(pDb->name); if (pDb != pSaved) { memcpy(pSaved, pDb, pOper->rowSize); free(pDb); } - mgmtUpdateAllDbVgroups(pSaved); - mgmtDecDbRef(pSaved); + mnodeUpdateAllDbVgroups(pSaved); + mnodeDecDbRef(pSaved); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionEncode(SSdbOper *pOper) { +static int32_t mnodeDbActionEncode(SSdbOper *pOper) { SDbObj *pDb = pOper->pObj; memcpy(pOper->rowData, pDb, tsDbUpdateSize); pOper->rowSize = tsDbUpdateSize; return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionDecode(SSdbOper *pOper) { +static int32_t mnodeDbActionDecode(SSdbOper *pOper) { SDbObj *pDb = (SDbObj *) calloc(1, sizeof(SDbObj)); if (pDb == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -117,11 +118,11 @@ static int32_t mgmtDbActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtDbActionRestored() { +static int32_t mnodeDbActionRestored() { return 0; } -int32_t mgmtInitDbs() { +int32_t mnodeInitDbs() { SDbObj tObj; tsDbUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -132,13 +133,13 @@ int32_t mgmtInitDbs() { .maxRowSize = tsDbUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, - .insertFp = mgmtDbActionInsert, - .deleteFp = mgmtDbActionDelete, - .updateFp = mgmtDbActionUpdate, - .encodeFp = mgmtDbActionEncode, - .decodeFp = mgmtDbActionDecode, - .destroyFp = mgmtDbActionDestroy, - .restoredFp = mgmtDbActionRestored + .insertFp = mnodeDbActionInsert, + .deleteFp = mnodeDbActionDelete, + .updateFp = mnodeDbActionUpdate, + .encodeFp = mnodeDbActionEncode, + .decodeFp = mnodeDbActionDecode, + .destroyFp = mnodeDbActionDestroy, + .restoredFp = mnodeDbActionRestored }; tsDbSdb = sdbOpenTable(&tableDesc); @@ -147,33 +148,33 @@ int32_t mgmtInitDbs() { return -1; } - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DB, mgmtProcessCreateDbMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_DB, mgmtProcessAlterDbMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_DB, mgmtProcessDropDbMsg); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_DB, mgmtGetDbMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_DB, mgmtRetrieveDbs); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DB, mnodeProcessCreateDbMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_ALTER_DB, mnodeProcessAlterDbMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_DROP_DB, mnodeProcessDropDbMsg); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DB, mnodeGetDbMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DB, mnodeRetrieveDbs); mTrace("table:dbs table is created"); return 0; } -void *mgmtGetNextDb(void *pIter, SDbObj **pDb) { +void *mnodeGetNextDb(void *pIter, SDbObj **pDb) { return sdbFetchRow(tsDbSdb, pIter, (void **)pDb); } -SDbObj *mgmtGetDb(char *db) { +SDbObj *mnodeGetDb(char *db) { return (SDbObj *)sdbGetRow(tsDbSdb, db); } -void mgmtIncDbRef(SDbObj *pDb) { +void mnodeIncDbRef(SDbObj *pDb) { return sdbIncRef(tsDbSdb, pDb); } -void mgmtDecDbRef(SDbObj *pDb) { +void mnodeDecDbRef(SDbObj *pDb) { return sdbDecRef(tsDbSdb, pDb); } -SDbObj *mgmtGetDbByTableId(char *tableId) { +SDbObj *mnodeGetDbByTableId(char *tableId) { char db[TSDB_TABLE_ID_LEN], *pos; pos = strstr(tableId, TS_PATH_DELIMITER); @@ -181,10 +182,10 @@ SDbObj *mgmtGetDbByTableId(char *tableId) { memset(db, 0, sizeof(db)); strncpy(db, tableId, pos - tableId); - return mgmtGetDb(db); + return mnodeGetDb(db); } -static int32_t mgmtCheckDbCfg(SDbCfg *pCfg) { +static int32_t mnodeCheckDbCfg(SDbCfg *pCfg) { if (pCfg->cacheBlockSize < TSDB_MIN_CACHE_BLOCK_SIZE || pCfg->cacheBlockSize > TSDB_MAX_CACHE_BLOCK_SIZE) { mError("invalid db option cacheBlockSize:%d valid range: [%d, %d]", pCfg->cacheBlockSize, TSDB_MIN_CACHE_BLOCK_SIZE, TSDB_MAX_CACHE_BLOCK_SIZE); @@ -290,7 +291,7 @@ static int32_t mgmtCheckDbCfg(SDbCfg *pCfg) { return TSDB_CODE_SUCCESS; } -static void mgmtSetDefaultDbCfg(SDbCfg *pCfg) { +static void mnodeSetDefaultDbCfg(SDbCfg *pCfg) { if (pCfg->cacheBlockSize < 0) pCfg->cacheBlockSize = tsCacheBlockSize; if (pCfg->totalBlocks < 0) pCfg->totalBlocks = tsBlocksPerVnode; if (pCfg->maxTables < 0) pCfg->maxTables = tsMaxTablePerVnode; @@ -307,13 +308,13 @@ static void mgmtSetDefaultDbCfg(SDbCfg *pCfg) { if (pCfg->replications < 0) pCfg->replications = tsReplications; } -static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) { +static int32_t mnodeCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) { int32_t code = acctCheck(pAcct, ACCT_GRANT_DB); if (code != 0) return code; - SDbObj *pDb = mgmtGetDb(pCreate->db); + SDbObj *pDb = mnodeGetDb(pCreate->db); if (pDb != NULL) { - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); if (pCreate->ignoreExist) { mTrace("db:%s, already exist, ignore exist is set", pCreate->db); return TSDB_CODE_SUCCESS; @@ -347,9 +348,9 @@ static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) { .replications = pCreate->replications }; - mgmtSetDefaultDbCfg(&pDb->cfg); + mnodeSetDefaultDbCfg(&pDb->cfg); - code = mgmtCheckDbCfg(&pDb->cfg); + code = mnodeCheckDbCfg(&pDb->cfg); if (code != TSDB_CODE_SUCCESS) { tfree(pDb); return code; @@ -371,7 +372,7 @@ static int32_t mgmtCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) { return code; } -bool mgmtCheckIsMonitorDB(char *db, char *monitordb) { +bool mnodeCheckIsMonitorDB(char *db, char *monitordb) { char dbName[TSDB_DB_NAME_LEN + 1] = {0}; extractDBName(db, dbName); @@ -397,7 +398,7 @@ void mgmtPrintVgroups(SDbObj *pDb, char *oper) { } #endif -void mgmtAddVgroupIntoDb(SVgObj *pVgroup) { +void mnodeAddVgroupIntoDb(SVgObj *pVgroup) { SDbObj *pDb = pVgroup->pDb; pVgroup->next = pDb->pHead; @@ -410,7 +411,7 @@ void mgmtAddVgroupIntoDb(SVgObj *pVgroup) { pDb->numOfVgroups++; } -void mgmtAddVgroupIntoDbTail(SVgObj *pVgroup) { +void mnodeAddVgroupIntoDbTail(SVgObj *pVgroup) { SDbObj *pDb = pVgroup->pDb; pVgroup->next = NULL; pVgroup->prev = pDb->pTail; @@ -422,7 +423,7 @@ void mgmtAddVgroupIntoDbTail(SVgObj *pVgroup) { pDb->numOfVgroups++; } -void mgmtRemoveVgroupFromDb(SVgObj *pVgroup) { +void mnodeRemoveVgroupFromDb(SVgObj *pVgroup) { SDbObj *pDb = pVgroup->pDb; if (pVgroup->prev) pVgroup->prev->next = pVgroup->next; if (pVgroup->next) pVgroup->next->prev = pVgroup->prev; @@ -431,25 +432,25 @@ void mgmtRemoveVgroupFromDb(SVgObj *pVgroup) { pDb->numOfVgroups--; } -void mgmtMoveVgroupToTail(SVgObj *pVgroup) { - mgmtRemoveVgroupFromDb(pVgroup); - mgmtAddVgroupIntoDbTail(pVgroup); +void mnodeMoveVgroupToTail(SVgObj *pVgroup) { + mnodeRemoveVgroupFromDb(pVgroup); + mnodeAddVgroupIntoDbTail(pVgroup); } -void mgmtMoveVgroupToHead(SVgObj *pVgroup) { - mgmtRemoveVgroupFromDb(pVgroup); - mgmtAddVgroupIntoDb(pVgroup); +void mnodeMoveVgroupToHead(SVgObj *pVgroup) { + mnodeRemoveVgroupFromDb(pVgroup); + mnodeAddVgroupIntoDb(pVgroup); } -void mgmtCleanUpDbs() { +void mnodeCleanupDbs() { sdbCloseTable(tsDbSdb); } -static int32_t mgmtGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; SSchema *pSchema = pMeta->schema; - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; pShow->bytes[cols] = TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE; @@ -583,32 +584,32 @@ static int32_t mgmtGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->numOfRows = pUser->pAcct->acctInfo.numOfDbs; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static char *mgmtGetDbStr(char *src) { +static char *mnodeGetDbStr(char *src) { char *pos = strstr(src, TS_PATH_DELIMITER); return ++pos; } -static int32_t mgmtRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; SDbObj *pDb = NULL; char * pWrite; int32_t cols = 0; - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; while (numOfRows < rows) { - pShow->pIter = mgmtGetNextDb(pShow->pIter, &pDb); + pShow->pIter = mnodeGetNextDb(pShow->pIter, &pDb); if (pDb == NULL) break; cols = 0; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - char* name = mgmtGetDbStr(pDb->name); + char* name = mnodeGetDbStr(pDb->name); STR_WITH_MAXSIZE_TO_VARSTR(pWrite, name, TSDB_DB_NAME_LEN); cols++; @@ -706,31 +707,31 @@ static int32_t mgmtRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void * cols++; numOfRows++; - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); } pShow->numOfReads += numOfRows; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return numOfRows; } -void mgmtAddSuperTableIntoDb(SDbObj *pDb) { +void mnodeAddSuperTableIntoDb(SDbObj *pDb) { atomic_add_fetch_32(&pDb->numOfSuperTables, 1); } -void mgmtRemoveSuperTableFromDb(SDbObj *pDb) { +void mnodeRemoveSuperTableFromDb(SDbObj *pDb) { atomic_add_fetch_32(&pDb->numOfSuperTables, -1); } -void mgmtAddTableIntoDb(SDbObj *pDb) { +void mnodeAddTableIntoDb(SDbObj *pDb) { atomic_add_fetch_32(&pDb->numOfTables, 1); } -void mgmtRemoveTableFromDb(SDbObj *pDb) { +void mnodeRemoveTableFromDb(SDbObj *pDb) { atomic_add_fetch_32(&pDb->numOfTables, -1); } -static int32_t mgmtSetDbDropping(SDbObj *pDb) { +static int32_t mnodeSetDbDropping(SDbObj *pDb) { if (pDb->status) return TSDB_CODE_SUCCESS; pDb->status = true; @@ -748,7 +749,7 @@ static int32_t mgmtSetDbDropping(SDbObj *pDb) { return code; } -static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessCreateDbMsg(SMnodeMsg *pMsg) { SCMCreateDbMsg *pCreate = pMsg->pCont; pCreate->maxTables = htonl(pCreate->maxTables); @@ -768,7 +769,7 @@ static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg) { } else if (!pMsg->pUser->writeAuth) { code = TSDB_CODE_NO_RIGHTS; } else { - code = mgmtCreateDb(pMsg->pUser->pAcct, pCreate); + code = mnodeCreateDb(pMsg->pUser->pAcct, pCreate); if (code == TSDB_CODE_SUCCESS) { mLPrint("db:%s, is created by %s", pCreate->db, pMsg->pUser->user); } else { @@ -776,10 +777,10 @@ static void mgmtProcessCreateDbMsg(SMnodeMsg *pMsg) { } } - mgmtSendSimpleResp(pMsg->thandle, code); + return code; } -static SDbCfg mgmtGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) { +static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) { SDbCfg newCfg = pDb->cfg; int32_t maxTables = htonl(pAlter->maxTables); int32_t cacheBlockSize = htonl(pAlter->cacheBlockSize); @@ -876,7 +877,7 @@ static SDbCfg mgmtGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) { terrno = TSDB_CODE_INVALID_OPTION; } - if (replications > mgmtGetDnodesNum()) { + if (replications > mnodeGetDnodesNum()) { mError("db:%s, no enough dnode to change replica:%d", pDb->name, replications); terrno = TSDB_CODE_NO_ENOUGH_DNODES; } @@ -890,13 +891,13 @@ static SDbCfg mgmtGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) { return newCfg; } -static int32_t mgmtAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { - SDbCfg newCfg = mgmtGetAlterDbOption(pDb, pAlter); +static int32_t mnodeAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { + SDbCfg newCfg = mnodeGetAlterDbOption(pDb, pAlter); if (terrno != TSDB_CODE_SUCCESS) { return terrno; } - int32_t code = mgmtCheckDbCfg(&newCfg); + int32_t code = mnodeCheckDbCfg(&newCfg); if (code != TSDB_CODE_SUCCESS) { return code; } @@ -921,10 +922,10 @@ static int32_t mgmtAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { void *pIter = NULL; while (1) { SVgObj *pVgroup = NULL; - pIter = mgmtGetNextVgroup(pIter, &pVgroup); + pIter = mnodeGetNextVgroup(pIter, &pVgroup); if (pVgroup == NULL) break; - mgmtSendCreateVgroupMsg(pVgroup, NULL); - mgmtDecVgroupRef(pVgroup); + mnodeSendCreateVgroupMsg(pVgroup, NULL); + mnodeDecVgroupRef(pVgroup); } sdbFreeIter(pIter); @@ -935,35 +936,27 @@ static int32_t mgmtAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { return TSDB_CODE_SUCCESS; } -static void mgmtProcessAlterDbMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessAlterDbMsg(SMnodeMsg *pMsg) { SCMAlterDbMsg *pAlter = pMsg->pCont; mTrace("db:%s, alter db msg is received from thandle:%p", pAlter->db, pMsg->thandle); - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - mError("db:%s, failed to alter, grant expired", pAlter->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_GRANT_EXPIRED); - return; - } - - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDb(pAlter->db); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pAlter->db); if (pMsg->pDb == NULL) { mError("db:%s, failed to alter, invalid db", pAlter->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_DB); - return; + return TSDB_CODE_INVALID_DB; } - int32_t code = mgmtAlterDb(pMsg->pDb, pAlter); + int32_t code = mnodeAlterDb(pMsg->pDb, pAlter); if (code != TSDB_CODE_SUCCESS) { mError("db:%s, failed to alter, invalid db option", pAlter->db); - mgmtSendSimpleResp(pMsg->thandle, code); - return; + return code; } mTrace("db:%s, all vgroups is altered", pMsg->pDb->name); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); + return TSDB_CODE_SUCCESS; } -static void mgmtDropDb(SMnodeMsg *pMsg) { +static int32_t mnodeDropDb(SMnodeMsg *pMsg) { SDbObj *pDb = pMsg->pDb; mPrint("db:%s, drop db from sdb", pDb->name); @@ -977,64 +970,54 @@ static void mgmtDropDb(SMnodeMsg *pMsg) { code = TSDB_CODE_SDB_ERROR; } - mgmtSendSimpleResp(pMsg->thandle, code); + return code; } -static void mgmtProcessDropDbMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg) { SCMDropDbMsg *pDrop = pMsg->pCont; mTrace("db:%s, drop db msg is received from thandle:%p", pDrop->db, pMsg->thandle); - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - mError("db:%s, failed to drop, grant expired", pDrop->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_GRANT_EXPIRED); - return; - } - - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDb(pDrop->db); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pDrop->db); if (pMsg->pDb == NULL) { if (pDrop->ignoreNotExists) { mTrace("db:%s, db is not exist, think drop success", pDrop->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); - return; + return TSDB_CODE_SUCCESS; } else { mError("db:%s, failed to drop, invalid db", pDrop->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_DB); - return; + return TSDB_CODE_INVALID_DB; } } - if (mgmtCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { + if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { mError("db:%s, can't drop monitor database", pDrop->db); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_MONITOR_DB_FORBIDDEN); - return; + return TSDB_CODE_MONITOR_DB_FORBIDDEN; } - int32_t code = mgmtSetDbDropping(pMsg->pDb); + int32_t code = mnodeSetDbDropping(pMsg->pDb); if (code != TSDB_CODE_SUCCESS) { mError("db:%s, failed to drop, reason:%s", pDrop->db, tstrerror(code)); - mgmtSendSimpleResp(pMsg->thandle, code); - return; + return code; } #if 1 - mgmtDropAllDbVgroups(pMsg->pDb, true); + mnodeDropAllDbVgroups(pMsg->pDb, true); #else SVgObj *pVgroup = pMsg->pDb->pHead; if (pVgroup != NULL) { mPrint("vgId:%d, will be dropped", pVgroup->vgId); - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); + SMnodeMsg *newMsg = mnodeCloneMsg(pMsg); newMsg->ahandle = pVgroup; newMsg->expected = pVgroup->numOfVnodes; - mgmtDropVgroup(pVgroup, newMsg); + mnodeDropVgroup(pVgroup, newMsg); return; } #endif mTrace("db:%s, all vgroups is dropped", pMsg->pDb->name); - mgmtDropDb(pMsg); + return mnodeDropDb(pMsg); } -void mgmtDropAllDbs(SAcctObj *pAcct) { +void mnodeDropAllDbs(SAcctObj *pAcct) { int32_t numOfDbs = 0; SDbObj *pDb = NULL; void * pIter = NULL; @@ -1042,7 +1025,7 @@ void mgmtDropAllDbs(SAcctObj *pAcct) { mPrint("acct:%s, all dbs will be dropped from sdb", pAcct->user); while (1) { - pIter = mgmtGetNextDb(pIter, &pDb); + pIter = mnodeGetNextDb(pIter, &pDb); if (pDb == NULL) break; if (pDb->pAcct == pAcct) { @@ -1056,7 +1039,7 @@ void mgmtDropAllDbs(SAcctObj *pAcct) { sdbDeleteRow(&oper); numOfDbs++; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); } sdbFreeIter(pIter); diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 57155549351..57ce07dbcff 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -25,15 +25,18 @@ #include "tbalance.h" #include "tsync.h" #include "tdataformat.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeDnode.h" #include "mnodeMnode.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeUser.h" #include "mnodeVgroup.h" +#include "mnodeWrite.h" +#include "mnodePeer.h" int32_t tsAccessSquence = 0; static void *tsDnodeSdb = NULL; @@ -41,27 +44,27 @@ static int32_t tsDnodeUpdateSize = 0; extern void * tsMnodeSdb; extern void * tsVgroupSdb; -static int32_t mgmtCreateDnode(char *ep); -static void mgmtProcessCreateDnodeMsg(SMnodeMsg *pMsg); -static void mgmtProcessDropDnodeMsg(SMnodeMsg *pMsg); -static void mgmtProcessCfgDnodeMsg(SMnodeMsg *pMsg); -static void mgmtProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) ; -static void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg); -static int32_t mgmtGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mgmtGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveConfigs(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mgmtGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mgmtGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); - -static int32_t mgmtDnodeActionDestroy(SSdbOper *pOper) { +static int32_t mnodeCreateDnode(char *ep); +static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessDropDnodeMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg); +static void mnodeProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) ; +static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *rpcMsg); +static int32_t mnodeGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveConfigs(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); + +static int32_t mnodeDnodeActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionInsert(SSdbOper *pOper) { +static int32_t mnodeDnodeActionInsert(SSdbOper *pOper) { SDnodeObj *pDnode = pOper->pObj; if (pDnode->status != TAOS_DN_STATUS_DROPPING) { pDnode->status = TAOS_DN_STATUS_OFFLINE; @@ -70,38 +73,38 @@ static int32_t mgmtDnodeActionInsert(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionDelete(SSdbOper *pOper) { +static int32_t mnodeDnodeActionDelete(SSdbOper *pOper) { SDnodeObj *pDnode = pOper->pObj; #ifndef _SYNC - mgmtDropAllDnodeVgroups(pDnode); + mnodeDropAllDnodeVgroups(pDnode); #endif - mgmtDropMnodeLocal(pDnode->dnodeId); + mnodeDropMnodeLocal(pDnode->dnodeId); balanceNotify(); mTrace("dnode:%d, all vgroups is dropped from sdb", pDnode->dnodeId); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionUpdate(SSdbOper *pOper) { +static int32_t mnodeDnodeActionUpdate(SSdbOper *pOper) { SDnodeObj *pDnode = pOper->pObj; - SDnodeObj *pSaved = mgmtGetDnode(pDnode->dnodeId); + SDnodeObj *pSaved = mnodeGetDnode(pDnode->dnodeId); if (pDnode != pSaved) { memcpy(pSaved, pDnode, pOper->rowSize); free(pDnode); } - mgmtDecDnodeRef(pSaved); + mnodeDecDnodeRef(pSaved); return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionEncode(SSdbOper *pOper) { +static int32_t mnodeDnodeActionEncode(SSdbOper *pOper) { SDnodeObj *pDnode = pOper->pObj; memcpy(pOper->rowData, pDnode, tsDnodeUpdateSize); pOper->rowSize = tsDnodeUpdateSize; return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionDecode(SSdbOper *pOper) { +static int32_t mnodeDnodeActionDecode(SSdbOper *pOper) { SDnodeObj *pDnode = (SDnodeObj *) calloc(1, sizeof(SDnodeObj)); if (pDnode == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -110,19 +113,19 @@ static int32_t mgmtDnodeActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtDnodeActionRestored() { +static int32_t mnodeDnodeActionRestored() { int32_t numOfRows = sdbGetNumOfRows(tsDnodeSdb); if (numOfRows <= 0 && dnodeIsFirstDeploy()) { - mgmtCreateDnode(tsLocalEp); - SDnodeObj *pDnode = mgmtGetDnodeByEp(tsLocalEp); - mgmtAddMnode(pDnode->dnodeId); - mgmtDecDnodeRef(pDnode); + mnodeCreateDnode(tsLocalEp); + SDnodeObj *pDnode = mnodeGetDnodeByEp(tsLocalEp); + mnodeAddMnode(pDnode->dnodeId); + mnodeDecDnodeRef(pDnode); } return TSDB_CODE_SUCCESS; } -int32_t mgmtInitDnodes() { +int32_t mnodeInitDnodes() { SDnodeObj tObj; tsDnodeUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -133,13 +136,13 @@ int32_t mgmtInitDnodes() { .maxRowSize = tsDnodeUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_AUTO, - .insertFp = mgmtDnodeActionInsert, - .deleteFp = mgmtDnodeActionDelete, - .updateFp = mgmtDnodeActionUpdate, - .encodeFp = mgmtDnodeActionEncode, - .decodeFp = mgmtDnodeActionDecode, - .destroyFp = mgmtDnodeActionDestroy, - .restoredFp = mgmtDnodeActionRestored + .insertFp = mnodeDnodeActionInsert, + .deleteFp = mnodeDnodeActionDelete, + .updateFp = mnodeDnodeActionUpdate, + .encodeFp = mnodeDnodeActionEncode, + .decodeFp = mnodeDnodeActionDecode, + .destroyFp = mnodeDnodeActionDestroy, + .restoredFp = mnodeDnodeActionRestored }; tsDnodeSdb = sdbOpenTable(&tableDesc); @@ -148,19 +151,19 @@ int32_t mgmtInitDnodes() { return -1; } - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DNODE, mgmtProcessCreateDnodeMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_DNODE, mgmtProcessDropDnodeMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CONFIG_DNODE, mgmtProcessCfgDnodeMsg); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP, mgmtProcessCfgDnodeMsgRsp); - dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_STATUS, mgmtProcessDnodeStatusMsg); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_MODULE, mgmtGetModuleMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_MODULE, mgmtRetrieveModules); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_CONFIGS, mgmtGetConfigMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_CONFIGS, mgmtRetrieveConfigs); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_VNODES, mgmtGetVnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_VNODES, mgmtRetrieveVnodes); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_DNODE, mgmtGetDnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_DNODE, mgmtRetrieveDnodes); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CREATE_DNODE, mnodeProcessCreateDnodeMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_DROP_DNODE, mnodeProcessDropDnodeMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CONFIG_DNODE, mnodeProcessCfgDnodeMsg); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP, mnodeProcessCfgDnodeMsgRsp); + mnodeAddPeerMsgHandle(TSDB_MSG_TYPE_DM_STATUS, mnodeProcessDnodeStatusMsg); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MODULE, mnodeGetModuleMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MODULE, mnodeRetrieveModules); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONFIGS, mnodeGetConfigMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONFIGS, mnodeRetrieveConfigs); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VNODES, mnodeGetVnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VNODES, mnodeRetrieveVnodes); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_DNODE, mnodeGetDnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_DNODE, mnodeRetrieveDnodes); mTrace("table:dnodes table is created"); return 0; @@ -170,24 +173,24 @@ void mgmtCleanupDnodes() { sdbCloseTable(tsDnodeSdb); } -void *mgmtGetNextDnode(void *pIter, SDnodeObj **pDnode) { +void *mnodeGetNextDnode(void *pIter, SDnodeObj **pDnode) { return sdbFetchRow(tsDnodeSdb, pIter, (void **)pDnode); } -int32_t mgmtGetDnodesNum() { +int32_t mnodeGetDnodesNum() { return sdbGetNumOfRows(tsDnodeSdb); } -int32_t mgmtGetOnlinDnodesNum(char *ep) { +int32_t mnodeGetOnlinDnodesNum(char *ep) { SDnodeObj *pDnode = NULL; void * pIter = NULL; int32_t onlineDnodes = 0; while (1) { - pIter = mgmtGetNextDnode(pIter, &pDnode); + pIter = mnodeGetNextDnode(pIter, &pDnode); if (pDnode == NULL) break; if (pDnode->status != TAOS_DN_STATUS_OFFLINE) onlineDnodes++; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } sdbFreeIter(pIter); @@ -195,22 +198,22 @@ int32_t mgmtGetOnlinDnodesNum(char *ep) { return onlineDnodes; } -void *mgmtGetDnode(int32_t dnodeId) { +void *mnodeGetDnode(int32_t dnodeId) { return sdbGetRow(tsDnodeSdb, &dnodeId); } -void *mgmtGetDnodeByEp(char *ep) { +void *mnodeGetDnodeByEp(char *ep) { SDnodeObj *pDnode = NULL; void * pIter = NULL; while (1) { - pIter = mgmtGetNextDnode(pIter, &pDnode); + pIter = mnodeGetNextDnode(pIter, &pDnode); if (pDnode == NULL) break; if (strcmp(ep, pDnode->dnodeEp) == 0) { sdbFreeIter(pIter); return pDnode; } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } sdbFreeIter(pIter); @@ -218,15 +221,15 @@ void *mgmtGetDnodeByEp(char *ep) { return NULL; } -void mgmtIncDnodeRef(SDnodeObj *pDnode) { +void mnodeIncDnodeRef(SDnodeObj *pDnode) { sdbIncRef(tsDnodeSdb, pDnode); } -void mgmtDecDnodeRef(SDnodeObj *pDnode) { +void mnodeDecDnodeRef(SDnodeObj *pDnode) { sdbDecRef(tsDnodeSdb, pDnode); } -void mgmtUpdateDnode(SDnodeObj *pDnode) { +void mnodeUpdateDnode(SDnodeObj *pDnode) { SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsDnodeSdb, @@ -236,9 +239,7 @@ void mgmtUpdateDnode(SDnodeObj *pDnode) { sdbUpdateRow(&oper); } -void mgmtProcessCfgDnodeMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - +static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg) { SCMCfgDnodeMsg *pCmCfgDnode = pMsg->pCont; if (pCmCfgDnode->ep[0] == 0) { strcpy(pCmCfgDnode->ep, tsLocalEp); @@ -247,36 +248,34 @@ void mgmtProcessCfgDnodeMsg(SMnodeMsg *pMsg) { } if (strcmp(pMsg->pUser->user, "root") != 0) { - rpcRsp.code = TSDB_CODE_NO_RIGHTS; - } else { - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pCmCfgDnode->ep); - SMDCfgDnodeMsg *pMdCfgDnode = rpcMallocCont(sizeof(SMDCfgDnodeMsg)); - strcpy(pMdCfgDnode->ep, pCmCfgDnode->ep); - strcpy(pMdCfgDnode->config, pCmCfgDnode->config); - SRpcMsg rpcMdCfgDnodeMsg = { - .handle = 0, - .code = 0, - .msgType = TSDB_MSG_TYPE_MD_CONFIG_DNODE, - .pCont = pMdCfgDnode, - .contLen = sizeof(SMDCfgDnodeMsg) - }; - dnodeSendMsgToDnode(&ipSet, &rpcMdCfgDnodeMsg); - rpcRsp.code = TSDB_CODE_SUCCESS; + return TSDB_CODE_NO_RIGHTS; } - if (rpcRsp.code == TSDB_CODE_SUCCESS) { - mPrint("dnode:%s, is configured by %s", pCmCfgDnode->ep, pMsg->pUser->user); - } + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pCmCfgDnode->ep); + SMDCfgDnodeMsg *pMdCfgDnode = rpcMallocCont(sizeof(SMDCfgDnodeMsg)); + strcpy(pMdCfgDnode->ep, pCmCfgDnode->ep); + strcpy(pMdCfgDnode->config, pCmCfgDnode->config); + + SRpcMsg rpcMdCfgDnodeMsg = { + .handle = 0, + .code = 0, + .msgType = TSDB_MSG_TYPE_MD_CONFIG_DNODE, + .pCont = pMdCfgDnode, + .contLen = sizeof(SMDCfgDnodeMsg) + }; + dnodeSendMsgToDnode(&ipSet, &rpcMdCfgDnodeMsg); - rpcSendResponse(&rpcRsp); + mPrint("dnode:%s, is configured by %s", pCmCfgDnode->ep, pMsg->pUser->user); + + return TSDB_CODE_SUCCESS; } -static void mgmtProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) { mPrint("cfg dnode rsp is received"); } -void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) { - SDMStatusMsg *pStatus = rpcMsg->pCont; +static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) { + SDMStatusMsg *pStatus = pMsg->pCont; pStatus->dnodeId = htonl(pStatus->dnodeId); pStatus->moduleStatus = htonl(pStatus->moduleStatus); pStatus->lastReboot = htonl(pStatus->lastReboot); @@ -286,24 +285,21 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) { uint32_t version = htonl(pStatus->version); if (version != tsVersion) { mError("status msg version:%d not equal with mnode:%d", version, tsVersion); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_VERSION); - return ; + return TSDB_CODE_INVALID_MSG_VERSION; } SDnodeObj *pDnode = NULL; if (pStatus->dnodeId == 0) { - pDnode = mgmtGetDnodeByEp(pStatus->dnodeEp); + pDnode = mnodeGetDnodeByEp(pStatus->dnodeEp); if (pDnode == NULL) { mTrace("dnode %s not created", pStatus->dnodeEp); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_DNODE_NOT_EXIST); - return; + return TSDB_CODE_DNODE_NOT_EXIST; } } else { - pDnode = mgmtGetDnode(pStatus->dnodeId); + pDnode = mnodeGetDnode(pStatus->dnodeId); if (pDnode == NULL) { mError("dnode id:%d, %s not exist", pStatus->dnodeId, pStatus->dnodeEp); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_DNODE_NOT_EXIST); - return; + return TSDB_CODE_DNODE_NOT_EXIST; } } @@ -327,34 +323,33 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) { pVload->vgId = htonl(pVload->vgId); pVload->cfgVersion = htonl(pVload->cfgVersion); - SVgObj *pVgroup = mgmtGetVgroup(pVload->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pVload->vgId); if (pVgroup == NULL) { - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pDnode->dnodeEp); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pDnode->dnodeEp); mPrint("dnode:%d, vgId:%d not exist in mnode, drop it", pDnode->dnodeId, pVload->vgId); - mgmtSendDropVnodeMsg(pVload->vgId, &ipSet, NULL); + mnodeSendDropVnodeMsg(pVload->vgId, &ipSet, NULL); } else { - mgmtUpdateVgroupStatus(pVgroup, pDnode, pVload); - mgmtDecVgroupRef(pVgroup); + mnodeUpdateVgroupStatus(pVgroup, pDnode, pVload); + mnodeDecVgroupRef(pVgroup); } } if (pDnode->status == TAOS_DN_STATUS_OFFLINE) { mTrace("dnode:%d, from offline to online", pDnode->dnodeId); pDnode->status = TAOS_DN_STATUS_READY; - balanceUpdateMgmt(); + balanceUpdateMnode(); balanceNotify(); } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); int32_t contLen = sizeof(SDMStatusRsp) + TSDB_MAX_VNODES * sizeof(SDMVgroupAccess); SDMStatusRsp *pRsp = rpcMallocCont(contLen); if (pRsp == NULL) { - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } - mgmtGetMnodeInfos(&pRsp->mnodes); + mnodeGetMnodeInfos(&pRsp->mnodes); pRsp->dnodeCfg.dnodeId = htonl(pDnode->dnodeId); pRsp->dnodeCfg.moduleStatus = htonl((int32_t)pDnode->isMgmt); @@ -364,25 +359,21 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) { //TODO: set vnode access - SRpcMsg rpcRsp = { - .handle = rpcMsg->handle, - .code = TSDB_CODE_SUCCESS, - .pCont = pRsp, - .contLen = contLen - }; + pMsg->rpcRsp.len = contLen; + pMsg->rpcRsp.rsp = pRsp; - rpcSendResponse(&rpcRsp); + return TSDB_CODE_SUCCESS; } -static int32_t mgmtCreateDnode(char *ep) { +static int32_t mnodeCreateDnode(char *ep) { int32_t grantCode = grantCheck(TSDB_GRANT_DNODE); if (grantCode != TSDB_CODE_SUCCESS) { return grantCode; } - SDnodeObj *pDnode = mgmtGetDnodeByEp(ep); + SDnodeObj *pDnode = mnodeGetDnodeByEp(ep); if (pDnode != NULL) { - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); mError("dnode:%d is alredy exist, %s:%d", pDnode->dnodeId, pDnode->dnodeFqdn, pDnode->dnodePort); return TSDB_CODE_DNODE_ALREADY_EXIST; } @@ -413,7 +404,7 @@ static int32_t mgmtCreateDnode(char *ep) { return code; } -int32_t mgmtDropDnode(SDnodeObj *pDnode) { +int32_t mnodeDropDnode(SDnodeObj *pDnode) { SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsDnodeSdb, @@ -429,15 +420,14 @@ int32_t mgmtDropDnode(SDnodeObj *pDnode) { return code; } -static int32_t mgmtDropDnodeByEp(char *ep) { - - SDnodeObj *pDnode = mgmtGetDnodeByEp(ep); +static int32_t mnodeDropDnodeByEp(char *ep) { + SDnodeObj *pDnode = mnodeGetDnodeByEp(ep); if (pDnode == NULL) { mError("dnode:%s, is not exist", ep); return TSDB_CODE_DNODE_NOT_EXIST; } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); if (strcmp(pDnode->dnodeEp, dnodeGetMnodeMasterEp()) == 0) { mError("dnode:%d, can't drop dnode:%s which is master", pDnode->dnodeId, ep); return TSDB_CODE_NO_REMOVE_MASTER; @@ -445,58 +435,56 @@ static int32_t mgmtDropDnodeByEp(char *ep) { mPrint("dnode:%d, start to drop it", pDnode->dnodeId); #ifndef _SYNC - return mgmtDropDnode(pDnode); + return mnodeDropDnode(pDnode); #else return balanceDropDnode(pDnode); #endif } -static void mgmtProcessCreateDnodeMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - +static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) { SCMCreateDnodeMsg *pCreate = pMsg->pCont; if (strcmp(pMsg->pUser->user, "root") != 0) { - rpcRsp.code = TSDB_CODE_NO_RIGHTS; + return TSDB_CODE_NO_RIGHTS; } else { - rpcRsp.code = mgmtCreateDnode(pCreate->ep); - if (rpcRsp.code == TSDB_CODE_SUCCESS) { - SDnodeObj *pDnode = mgmtGetDnodeByEp(pCreate->ep); + int32_t code = mnodeCreateDnode(pCreate->ep); + + if (code == TSDB_CODE_SUCCESS) { + SDnodeObj *pDnode = mnodeGetDnodeByEp(pCreate->ep); mLPrint("dnode:%d, %s is created by %s", pDnode->dnodeId, pCreate->ep, pMsg->pUser->user); - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } else { - mError("failed to create dnode:%s, reason:%s", pCreate->ep, tstrerror(rpcRsp.code)); + mError("failed to create dnode:%s, reason:%s", pCreate->ep, tstrerror(code)); } + + return code; } - rpcSendResponse(&rpcRsp); } - -static void mgmtProcessDropDnodeMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - +static int32_t mnodeProcessDropDnodeMsg(SMnodeMsg *pMsg) { SCMDropDnodeMsg *pDrop = pMsg->pCont; if (strcmp(pMsg->pUser->user, "root") != 0) { - rpcRsp.code = TSDB_CODE_NO_RIGHTS; + return TSDB_CODE_NO_RIGHTS; } else { - rpcRsp.code = mgmtDropDnodeByEp(pDrop->ep); - if (rpcRsp.code == TSDB_CODE_SUCCESS) { + int32_t code = mnodeDropDnodeByEp(pDrop->ep); + + if (code == TSDB_CODE_SUCCESS) { mLPrint("dnode:%s is dropped by %s", pDrop->ep, pMsg->pUser->user); } else { - mError("failed to drop dnode:%s, reason:%s", pDrop->ep, tstrerror(rpcRsp.code)); + mError("failed to drop dnode:%s, reason:%s", pDrop->ep, tstrerror(code)); } - } - rpcSendResponse(&rpcRsp); + return code; + } } -static int32_t mgmtGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - SUserObj *pUser = mgmtGetUserFromConn(pConn); +static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; if (strcmp(pUser->pAcct->user, "root") != 0) { - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_NO_RIGHTS; } @@ -547,23 +535,23 @@ static int32_t mgmtGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo pShow->offset[i] = pShow->offset[i - 1] + pShow->bytes[i - 1]; } - pShow->numOfRows = mgmtGetDnodesNum(); + pShow->numOfRows = mnodeGetDnodesNum(); pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->pIter = NULL; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; int32_t cols = 0; SDnodeObj *pDnode = NULL; char *pWrite; while (numOfRows < rows) { - pShow->pIter = mgmtGetNextDnode(pShow->pIter, &pDnode); + pShow->pIter = mnodeGetNextDnode(pShow->pIter, &pDnode); if (pDnode == NULL) break; cols = 0; @@ -586,7 +574,7 @@ static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, voi pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - char* status = mgmtGetDnodeStatusStr(pDnode->status); + char* status = mnodeGetDnodeStatusStr(pDnode->status); STR_TO_VARSTR(pWrite, status); cols++; @@ -596,26 +584,26 @@ static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, voi numOfRows++; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } pShow->numOfReads += numOfRows; return numOfRows; } -static bool mgmtCheckModuleInDnode(SDnodeObj *pDnode, int32_t moduleType) { +static bool mnodeCheckModuleInDnode(SDnodeObj *pDnode, int32_t moduleType) { uint32_t status = pDnode->moduleStatus & (1 << moduleType); return status > 0; } -static int32_t mgmtGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +static int32_t mnodeGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; if (strcmp(pUser->user, "root") != 0) { - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_NO_RIGHTS; } @@ -653,21 +641,21 @@ static int32_t mgmtGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC pShow->offset[i] = pShow->offset[i - 1] + pShow->bytes[i - 1]; } - pShow->numOfRows = mgmtGetDnodesNum() * TSDB_MOD_MAX; + pShow->numOfRows = mnodeGetDnodesNum() * TSDB_MOD_MAX; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->pIter = NULL; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -int32_t mgmtRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; char * pWrite; while (numOfRows < rows) { SDnodeObj *pDnode = NULL; - pShow->pIter = mgmtGetNextDnode(pShow->pIter, (SDnodeObj **)&pDnode); + pShow->pIter = mnodeGetNextDnode(pShow->pIter, (SDnodeObj **)&pDnode); if (pDnode == NULL) break; for (int32_t moduleType = 0; moduleType < TSDB_MOD_MAX; ++moduleType) { @@ -698,34 +686,34 @@ int32_t mgmtRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pCo cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - bool enable = mgmtCheckModuleInDnode(pDnode, moduleType); + bool enable = mnodeCheckModuleInDnode(pDnode, moduleType); strcpy(pWrite, enable ? "enable" : "disable"); cols++; numOfRows++; } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } pShow->numOfReads += numOfRows; return numOfRows; } -static bool mgmtCheckConfigShow(SGlobalCfg *cfg) { +static bool mnodeCheckConfigShow(SGlobalCfg *cfg) { if (!(cfg->cfgType & TSDB_CFG_CTYPE_B_SHOW)) return false; return true; } -static int32_t mgmtGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +static int32_t mnodeGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; if (strcmp(pUser->user, "root") != 0) { - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_NO_RIGHTS; } @@ -752,23 +740,23 @@ static int32_t mgmtGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC pShow->numOfRows = 0; for (int32_t i = tsGlobalConfigNum - 1; i >= 0; --i) { SGlobalCfg *cfg = tsGlobalConfig + i; - if (!mgmtCheckConfigShow(cfg)) continue; + if (!mnodeCheckConfigShow(cfg)) continue; pShow->numOfRows++; } pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->pIter = NULL; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static int32_t mgmtRetrieveConfigs(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveConfigs(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; for (int32_t i = tsGlobalConfigNum - 1; i >= 0 && numOfRows < rows; --i) { SGlobalCfg *cfg = tsGlobalConfig + i; - if (!mgmtCheckConfigShow(cfg)) continue; + if (!mnodeCheckConfigShow(cfg)) continue; char *pWrite; int32_t cols = 0; @@ -806,13 +794,13 @@ static int32_t mgmtRetrieveConfigs(SShowObj *pShow, char *data, int32_t rows, vo return numOfRows; } -static int32_t mgmtGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; if (strcmp(pUser->user, "root") != 0) { - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_NO_RIGHTS; } @@ -838,25 +826,25 @@ static int32_t mgmtGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo SDnodeObj *pDnode = NULL; if (pShow->payloadLen > 0 ) { - pDnode = mgmtGetDnodeByEp(pShow->payload); + pDnode = mnodeGetDnodeByEp(pShow->payload); } else { - void *pIter = mgmtGetNextDnode(NULL, (SDnodeObj **)&pDnode); + void *pIter = mnodeGetNextDnode(NULL, (SDnodeObj **)&pDnode); sdbFreeIter(pIter); } if (pDnode != NULL) { pShow->numOfRows += pDnode->openVnodes; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->pIter = pDnode; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static int32_t mgmtRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; SDnodeObj *pDnode = NULL; char * pWrite; @@ -869,7 +857,7 @@ static int32_t mgmtRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, voi void *pIter = NULL; SVgObj *pVgroup; while (1) { - pIter = mgmtGetNextVgroup(pIter, &pVgroup); + pIter = mnodeGetNextVgroup(pIter, &pVgroup); if (pVgroup == NULL) break; for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { @@ -882,12 +870,12 @@ static int32_t mgmtRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, voi cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - strcpy(pWrite, mgmtGetMnodeRoleStr(pVgid->role)); + strcpy(pWrite, mnodeGetMnodeRoleStr(pVgid->role)); cols++; } } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } sdbFreeIter(pIter); } else { @@ -898,7 +886,7 @@ static int32_t mgmtRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, voi return numOfRows; } -char* mgmtGetDnodeStatusStr(int32_t dnodeStatus) { +char* mnodeGetDnodeStatusStr(int32_t dnodeStatus) { switch (dnodeStatus) { case TAOS_DN_STATUS_OFFLINE: return "offline"; case TAOS_DN_STATUS_DROPPING: return "dropping"; diff --git a/src/mnode/src/mnodeInt.c b/src/mnode/src/mnodeInt.c new file mode 100644 index 00000000000..a701f1e1f4b --- /dev/null +++ b/src/mnode/src/mnodeInt.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" +#include "taosmsg.h" +#include "taoserror.h" +#include "trpc.h" +#include "tcache.h" +#include "mnode.h" +#include "dnode.h" +#include "mnodeDef.h" +#include "mnodeInt.h" +#include "mnodeAcct.h" +#include "mnodeDb.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" +#include "mnodeProfile.h" +#include "mnodeSdb.h" +#include "mnodeShow.h" +#include "mnodeTable.h" +#include "mnodeUser.h" +#include "mnodeVgroup.h" + +void mnodeCreateMsg(SMnodeMsg *pMsg, SRpcMsg *rpcMsg) { + pMsg->thandle = rpcMsg->handle; + pMsg->msgType = rpcMsg->msgType; + pMsg->contLen = rpcMsg->contLen; + pMsg->pCont = rpcMsg->pCont; +} + +int32_t mnodeInitMsg(SMnodeMsg *pMsg) { + pMsg->pUser = mnodeGetUserFromConn(pMsg->thandle); + if (pMsg->pUser == NULL) { + return TSDB_CODE_INVALID_USER; + } + + return TSDB_CODE_SUCCESS; +} + +void mnodeCleanupMsg(SMnodeMsg *pMsg) { + if (pMsg != NULL) { + if (pMsg->pCont) rpcFreeCont(pMsg->pCont); + if (pMsg->pUser) mnodeDecUserRef(pMsg->pUser); + if (pMsg->pDb) mnodeDecDbRef(pMsg->pDb); + if (pMsg->pVgroup) mnodeDecVgroupRef(pMsg->pVgroup); + if (pMsg->pTable) mnodeDecTableRef(pMsg->pTable); + if (pMsg->pAcct) mnodeDecAcctRef(pMsg->pAcct); + if (pMsg->pDnode) mnodeDecDnodeRef(pMsg->pDnode); + } +} diff --git a/src/mnode/src/mnodeMain.c b/src/mnode/src/mnodeMain.c index 563e679b34b..6e3b3d24e97 100644 --- a/src/mnode/src/mnodeMain.c +++ b/src/mnode/src/mnodeMain.c @@ -24,7 +24,6 @@ #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" -#include "mnodeServer.h" #include "mnodeAcct.h" #include "mnodeDnode.h" #include "mnodeMnode.h" @@ -33,16 +32,16 @@ #include "mnodeVgroup.h" #include "mnodeUser.h" #include "mnodeTable.h" -#include "mnodeShell.h" +#include "mnodeShow.h" -static void *tsMgmtTmr; +void *tsMnodeTmr; static bool tsMgmtIsRunning = false; static void mnodeInitTimer(); static void mnodeCleanupTimer(); static bool mnodeNeedStart() ; -int32_t mgmtStartSystem() { +int32_t mnodeStartSystem() { if (tsMgmtIsRunning) { mPrint("TDengine mgmt module already started..."); return 0; @@ -54,37 +53,37 @@ int32_t mgmtStartSystem() { mkdir(tsMnodeDir, 0755); } - if (mgmtInitAccts() < 0) { + if (mnodeInitAccts() < 0) { mError("failed to init accts"); return -1; } - if (mgmtInitUsers() < 0) { + if (mnodeInitUsers() < 0) { mError("failed to init users"); return -1; } - if (mgmtInitDnodes() < 0) { + if (mnodeInitDnodes() < 0) { mError("failed to init dnodes"); return -1; } - if (mgmtInitDbs() < 0) { + if (mnodeInitDbs() < 0) { mError("failed to init dbs"); return -1; } - if (mgmtInitVgroups() < 0) { + if (mnodeInitVgroups() < 0) { mError("failed to init vgroups"); return -1; } - if (mgmtInitTables() < 0) { + if (mnodeInitTables() < 0) { mError("failed to init tables"); return -1; } - if (mgmtInitMnodes() < 0) { + if (mnodeInitMnodes() < 0) { mError("failed to init mnodes"); return -1; } @@ -103,7 +102,8 @@ int32_t mgmtStartSystem() { return -1; } - if (mnodeInitMgmt() < 0) { + if (mnodeInitShow() < 0) { + mError("failed to init show"); return -1; } @@ -115,39 +115,28 @@ int32_t mgmtStartSystem() { return 0; } -int32_t mgmtInitSystem() { +int32_t mnodeInitSystem() { mnodeInitTimer(); - mnodeInitRead(); - mnodeInitWrite(); - - if (mnodeNeedStart()) { - if (mgmtStartSystem() != 0) { - return -1; - } - } - - return 0; + if (!mnodeNeedStart()) return 0; + return mnodeStartSystem(); } -void mgmtCleanUpSystem() { +void mnodeCleanupSystem() { mPrint("starting to clean up mgmt"); tsMgmtIsRunning = false; mnodeCleanupTimer(); - mnodeCleanupRead(); - mnodeCleanupWrite(); - - mgmtCleanupMgmt(); + mnodeCleanUpShow(); grantCleanUp(); balanceCleanUp(); sdbCleanUp(); mgmtCleanupMnodes(); - mgmtCleanUpTables(); - mgmtCleanUpVgroups(); - mgmtCleanUpDbs(); + mnodeCleanupTables(); + mnodeCleanupVgroups(); + mnodeCleanupDbs(); mgmtCleanupDnodes(); - mgmtCleanUpUsers(); - mgmtCleanUpAccts(); + mnodeCleanupUsers(); + mnodeCleanupAccts(); mPrint("mgmt is cleaned up"); } @@ -157,31 +146,21 @@ void mgmtStopSystem() { return; } - - mgmtCleanUpSystem(); - + mnodeCleanupSystem(); mPrint("mgmt file is removed"); remove(tsMnodeDir); } - - -void* mnodeGetWqueue(int32_t vgId) { - -} - - - static void mnodeInitTimer() { - if (tsMgmtTmr != NULL) { - tsMgmtTmr = taosTmrInit((tsMaxShellConns)*3, 200, 3600000, "MND"); + if (tsMnodeTmr != NULL) { + tsMnodeTmr = taosTmrInit((tsMaxShellConns)*3, 200, 3600000, "MND"); } } static void mnodeCleanupTimer() { - if (tsMgmtTmr != NULL) { - taosTmrCleanUp(tsMgmtTmr); - tsMgmtTmr = NULL; + if (tsMnodeTmr != NULL) { + taosTmrCleanUp(tsMnodeTmr); + tsMnodeTmr = NULL; } } @@ -196,3 +175,7 @@ static bool mnodeNeedStart() { return false; } + +bool mnodeIsRunning() { + return tsMgmtIsRunning; +} \ No newline at end of file diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c index f939dfb4264..3fababf0237 100644 --- a/src/mnode/src/mnodeMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -28,80 +28,80 @@ #include "mnodeMnode.h" #include "mnodeDnode.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeUser.h" -static void * tsMnodeSdb = NULL; -static int32_t tsMnodeUpdateSize = 0; -static int32_t mgmtGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); - -static SRpcIpSet tsMnodeRpcIpSet; +static void * tsMnodeSdb = NULL; +static int32_t tsMnodeUpdateSize = 0; +static SRpcIpSet tsMnodeRpcIpSetForShell; +static SRpcIpSet tsMnodeRpcIpSetForPeer; static SDMMnodeInfos tsMnodeInfos; +static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); #if defined(LINUX) - static pthread_rwlock_t tsMnodeLock; - #define mgmtMnodeWrLock() pthread_rwlock_wrlock(&tsMnodeLock) - #define mgmtMnodeRdLock() pthread_rwlock_rdlock(&tsMnodeLock) - #define mgmtMnodeUnLock() pthread_rwlock_unlock(&tsMnodeLock) - #define mgmtMnodeInitLock() pthread_rwlock_init(&tsMnodeLock, NULL) - #define mgmtMnodeDestroyLock() pthread_rwlock_destroy(&tsMnodeLock) + static pthread_rwlock_t tsMnodeLock; + #define mnodeMnodeWrLock() pthread_rwlock_wrlock(&tsMnodeLock) + #define mnodeMnodeRdLock() pthread_rwlock_rdlock(&tsMnodeLock) + #define mnodeMnodeUnLock() pthread_rwlock_unlock(&tsMnodeLock) + #define mnodeMnodeInitLock() pthread_rwlock_init(&tsMnodeLock, NULL) + #define mnodeMnodeDestroyLock() pthread_rwlock_destroy(&tsMnodeLock) #else - static pthread_mutex_t tsMnodeLock; - #define mgmtMnodeWrLock() pthread_mutex_lock(&tsMnodeLock) - #define mgmtMnodeRdLock() pthread_mutex_lock(&tsMnodeLock) - #define mgmtMnodeUnLock() pthread_mutex_unlock(&tsMnodeLock) - #define mgmtMnodeInitLock() pthread_mutex_init(&tsMnodeLock, NULL) - #define mgmtMnodeDestroyLock() pthread_mutex_destroy(&tsMnodeLock) + static pthread_mutex_t tsMnodeLock; + #define mnodeMnodeWrLock() pthread_mutex_lock(&tsMnodeLock) + #define mnodeMnodeRdLock() pthread_mutex_lock(&tsMnodeLock) + #define mnodeMnodeUnLock() pthread_mutex_unlock(&tsMnodeLock) + #define mnodeMnodeInitLock() pthread_mutex_init(&tsMnodeLock, NULL) + #define mnodeMnodeDestroyLock() pthread_mutex_destroy(&tsMnodeLock) #endif -static int32_t mgmtMnodeActionDestroy(SSdbOper *pOper) { +static int32_t mnodeMnodeActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionInsert(SSdbOper *pOper) { +static int32_t mnodeMnodeActionInsert(SSdbOper *pOper) { SMnodeObj *pMnode = pOper->pObj; - SDnodeObj *pDnode = mgmtGetDnode(pMnode->mnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode == NULL) return TSDB_CODE_DNODE_NOT_EXIST; pDnode->isMgmt = true; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionDelete(SSdbOper *pOper) { +static int32_t mnodeMnodeActionDelete(SSdbOper *pOper) { SMnodeObj *pMnode = pOper->pObj; - SDnodeObj *pDnode = mgmtGetDnode(pMnode->mnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode == NULL) return TSDB_CODE_DNODE_NOT_EXIST; pDnode->isMgmt = false; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); mTrace("mnode:%d, is dropped from sdb", pMnode->mnodeId); return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionUpdate(SSdbOper *pOper) { +static int32_t mnodeMnodeActionUpdate(SSdbOper *pOper) { SMnodeObj *pMnode = pOper->pObj; - SMnodeObj *pSaved = mgmtGetMnode(pMnode->mnodeId); + SMnodeObj *pSaved = mnodeGetMnode(pMnode->mnodeId); if (pMnode != pSaved) { memcpy(pSaved, pMnode, pOper->rowSize); free(pMnode); } - mgmtDecMnodeRef(pSaved); + mnodeDecMnodeRef(pSaved); return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionEncode(SSdbOper *pOper) { +static int32_t mnodeMnodeActionEncode(SSdbOper *pOper) { SMnodeObj *pMnode = pOper->pObj; memcpy(pOper->rowData, pMnode, tsMnodeUpdateSize); pOper->rowSize = tsMnodeUpdateSize; return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionDecode(SSdbOper *pOper) { +static int32_t mnodeMnodeActionDecode(SSdbOper *pOper) { SMnodeObj *pMnode = calloc(1, sizeof(SMnodeObj)); if (pMnode == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -110,24 +110,24 @@ static int32_t mgmtMnodeActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtMnodeActionRestored() { - if (mgmtGetMnodesNum() == 1) { +static int32_t mnodeMnodeActionRestored() { + if (mnodeGetMnodesNum() == 1) { SMnodeObj *pMnode = NULL; - void *pIter = mgmtGetNextMnode(NULL, &pMnode); + void *pIter = mnodeGetNextMnode(NULL, &pMnode); if (pMnode != NULL) { pMnode->role = TAOS_SYNC_ROLE_MASTER; - mgmtDecMnodeRef(pMnode); + mnodeDecMnodeRef(pMnode); } sdbFreeIter(pIter); } - mgmtUpdateMnodeIpSet(); + mnodeUpdateMnodeIpSet(); return TSDB_CODE_SUCCESS; } -int32_t mgmtInitMnodes() { - mgmtMnodeInitLock(); +int32_t mnodeInitMnodes() { + mnodeMnodeInitLock(); SMnodeObj tObj; tsMnodeUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -139,13 +139,13 @@ int32_t mgmtInitMnodes() { .maxRowSize = tsMnodeUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_INT, - .insertFp = mgmtMnodeActionInsert, - .deleteFp = mgmtMnodeActionDelete, - .updateFp = mgmtMnodeActionUpdate, - .encodeFp = mgmtMnodeActionEncode, - .decodeFp = mgmtMnodeActionDecode, - .destroyFp = mgmtMnodeActionDestroy, - .restoredFp = mgmtMnodeActionRestored + .insertFp = mnodeMnodeActionInsert, + .deleteFp = mnodeMnodeActionDelete, + .updateFp = mnodeMnodeActionUpdate, + .encodeFp = mnodeMnodeActionEncode, + .decodeFp = mnodeMnodeActionDecode, + .destroyFp = mnodeMnodeActionDestroy, + .restoredFp = mnodeMnodeActionRestored }; tsMnodeSdb = sdbOpenTable(&tableDesc); @@ -154,8 +154,8 @@ int32_t mgmtInitMnodes() { return -1; } - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_MNODE, mgmtGetMnodeMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_MNODE, mgmtRetrieveMnodes); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_MNODE, mnodeGetMnodeMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_MNODE, mnodeRetrieveMnodes); mTrace("table:mnodes table is created"); return TSDB_CODE_SUCCESS; @@ -163,30 +163,30 @@ int32_t mgmtInitMnodes() { void mgmtCleanupMnodes() { sdbCloseTable(tsMnodeSdb); - mgmtMnodeDestroyLock(); + mnodeMnodeDestroyLock(); } -int32_t mgmtGetMnodesNum() { +int32_t mnodeGetMnodesNum() { return sdbGetNumOfRows(tsMnodeSdb); } -void *mgmtGetMnode(int32_t mnodeId) { +void *mnodeGetMnode(int32_t mnodeId) { return sdbGetRow(tsMnodeSdb, &mnodeId); } -void mgmtIncMnodeRef(SMnodeObj *pMnode) { +void mnodeIncMnodeRef(SMnodeObj *pMnode) { sdbIncRef(tsMnodeSdb, pMnode); } -void mgmtDecMnodeRef(SMnodeObj *pMnode) { +void mnodeDecMnodeRef(SMnodeObj *pMnode) { sdbDecRef(tsMnodeSdb, pMnode); } -void *mgmtGetNextMnode(void *pIter, SMnodeObj **pMnode) { +void *mnodeGetNextMnode(void *pIter, SMnodeObj **pMnode) { return sdbFetchRow(tsMnodeSdb, pIter, (void **)pMnode); } -char *mgmtGetMnodeRoleStr(int32_t role) { +char *mnodeGetMnodeRoleStr(int32_t role) { switch (role) { case TAOS_SYNC_ROLE_OFFLINE: return "offline"; @@ -201,68 +201,79 @@ char *mgmtGetMnodeRoleStr(int32_t role) { } } -void mgmtUpdateMnodeIpSet() { - SRpcIpSet *ipSet = &tsMnodeRpcIpSet; +void mnodeUpdateMnodeIpSet() { + SRpcIpSet *ipSetForShell = &tsMnodeRpcIpSetForShell; + SRpcIpSet *ipSetForPeer = &tsMnodeRpcIpSetForPeer; SDMMnodeInfos *mnodes = &tsMnodeInfos; - mPrint("update mnodes ipset, numOfIps:%d ", mgmtGetMnodesNum()); + mPrint("update mnodes ipset, numOfIps:%d ", mnodeGetMnodesNum()); - mgmtMnodeWrLock(); + mnodeMnodeWrLock(); - memset(ipSet, 0, sizeof(tsMnodeRpcIpSet)); + memset(ipSetForShell, 0, sizeof(SRpcIpSet)); + memset(ipSetForPeer, 0, sizeof(SRpcIpSet)); memset(mnodes, 0, sizeof(SDMMnodeInfos)); int32_t index = 0; void * pIter = NULL; while (1) { SMnodeObj *pMnode = NULL; - pIter = mgmtGetNextMnode(pIter, &pMnode); + pIter = mnodeGetNextMnode(pIter, &pMnode); if (pMnode == NULL) break; - SDnodeObj *pDnode = mgmtGetDnode(pMnode->mnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode != NULL) { - strcpy(ipSet->fqdn[ipSet->numOfIps], pDnode->dnodeFqdn); - ipSet->port[ipSet->numOfIps] = htons(pDnode->dnodePort); + strcpy(ipSetForShell->fqdn[ipSetForShell->numOfIps], pDnode->dnodeFqdn); + ipSetForShell->port[ipSetForShell->numOfIps] = htons(pDnode->dnodePort); + + strcpy(ipSetForPeer->fqdn[ipSetForPeer->numOfIps], pDnode->dnodeFqdn); + ipSetForPeer->port[ipSetForPeer->numOfIps] = htons(pDnode->dnodePort + TSDB_PORT_DNODEDNODE); mnodes->nodeInfos[index].nodeId = htonl(pMnode->mnodeId); strcpy(mnodes->nodeInfos[index].nodeEp, pDnode->dnodeEp); if (pMnode->role == TAOS_SYNC_ROLE_MASTER) { - ipSet->inUse = ipSet->numOfIps; + ipSetForShell->inUse = index; + ipSetForPeer->inUse = index; mnodes->inUse = index; } - mPrint("mnode:%d, ep:%s %s", index, pDnode->dnodeEp, - pMnode->role == TAOS_SYNC_ROLE_MASTER ? "master" : ""); - - ipSet->numOfIps++; + mPrint("mnode:%d, ep:%s %s", index, pDnode->dnodeEp, pMnode->role == TAOS_SYNC_ROLE_MASTER ? "master" : ""); index++; } - mgmtDecDnodeRef(pDnode); - mgmtDecMnodeRef(pMnode); + mnodeDecDnodeRef(pDnode); + mnodeDecMnodeRef(pMnode); } mnodes->nodeNum = index; + ipSetForPeer->numOfIps = index; + ipSetForPeer->numOfIps = index; sdbFreeIter(pIter); - mgmtMnodeUnLock(); + mnodeMnodeUnLock(); +} + +void mnodeGetMnodeIpSetForPeer(SRpcIpSet *ipSet) { + mnodeMnodeRdLock(); + *ipSet = tsMnodeRpcIpSetForShell; + mnodeMnodeUnLock(); } -void mgmtGetMnodeIpSet(SRpcIpSet *ipSet) { - mgmtMnodeRdLock(); - *ipSet = tsMnodeRpcIpSet; - mgmtMnodeUnLock(); +void mnodeGetMnodeIpSetForShell(SRpcIpSet *ipSet) { + mnodeMnodeRdLock(); + *ipSet = tsMnodeRpcIpSetForShell; + mnodeMnodeUnLock(); } -void mgmtGetMnodeInfos(void *mnodeInfos) { - mgmtMnodeRdLock(); +void mnodeGetMnodeInfos(void *mnodeInfos) { + mnodeMnodeRdLock(); *(SDMMnodeInfos *)mnodeInfos = tsMnodeInfos; - mgmtMnodeUnLock(); + mnodeMnodeUnLock(); } -int32_t mgmtAddMnode(int32_t dnodeId) { +int32_t mnodeAddMnode(int32_t dnodeId) { SMnodeObj *pMnode = calloc(1, sizeof(SMnodeObj)); pMnode->mnodeId = dnodeId; pMnode->createdTime = taosGetTimestampMs(); @@ -279,24 +290,24 @@ int32_t mgmtAddMnode(int32_t dnodeId) { code = TSDB_CODE_SDB_ERROR; } - mgmtUpdateMnodeIpSet(); + mnodeUpdateMnodeIpSet(); return code; } -void mgmtDropMnodeLocal(int32_t dnodeId) { - SMnodeObj *pMnode = mgmtGetMnode(dnodeId); +void mnodeDropMnodeLocal(int32_t dnodeId) { + SMnodeObj *pMnode = mnodeGetMnode(dnodeId); if (pMnode != NULL) { SSdbOper oper = {.type = SDB_OPER_LOCAL, .table = tsMnodeSdb, .pObj = pMnode}; sdbDeleteRow(&oper); - mgmtDecMnodeRef(pMnode); + mnodeDecMnodeRef(pMnode); } - mgmtUpdateMnodeIpSet(); + mnodeUpdateMnodeIpSet(); } -int32_t mgmtDropMnode(int32_t dnodeId) { - SMnodeObj *pMnode = mgmtGetMnode(dnodeId); +int32_t mnodeDropMnode(int32_t dnodeId) { + SMnodeObj *pMnode = mnodeGetMnode(dnodeId); if (pMnode == NULL) { return TSDB_CODE_DNODE_NOT_EXIST; } @@ -314,18 +325,18 @@ int32_t mgmtDropMnode(int32_t dnodeId) { sdbDecRef(tsMnodeSdb, pMnode); - mgmtUpdateMnodeIpSet(); + mnodeUpdateMnodeIpSet(); return code; } -static int32_t mgmtGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { sdbUpdateMnodeRoles(); - SUserObj *pUser = mgmtGetUserFromConn(pConn); + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) return 0; if (strcmp(pUser->pAcct->user, "root") != 0) { - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_NO_RIGHTS; } @@ -364,22 +375,22 @@ static int32_t mgmtGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo pShow->offset[i] = pShow->offset[i - 1] + pShow->bytes[i - 1]; } - pShow->numOfRows = mgmtGetMnodesNum(); + pShow->numOfRows = mnodeGetMnodesNum(); pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; pShow->pIter = NULL; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; int32_t cols = 0; SMnodeObj *pMnode = NULL; char *pWrite; while (numOfRows < rows) { - pShow->pIter = mgmtGetNextMnode(pShow->pIter, &pMnode); + pShow->pIter = mnodeGetNextMnode(pShow->pIter, &pMnode); if (pMnode == NULL) break; cols = 0; @@ -390,18 +401,18 @@ static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, voi pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - SDnodeObj *pDnode = mgmtGetDnode(pMnode->mnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode != NULL) { STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pDnode->dnodeEp, pShow->bytes[cols] - VARSTR_HEADER_SIZE); } else { STR_WITH_MAXSIZE_TO_VARSTR(pWrite, "invalid ep", pShow->bytes[cols] - VARSTR_HEADER_SIZE); } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - char* roles = mgmtGetMnodeRoleStr(pMnode->role); + char* roles = mnodeGetMnodeRoleStr(pMnode->role); STR_TO_VARSTR(pWrite, roles); cols++; @@ -411,7 +422,7 @@ static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, voi numOfRows++; - mgmtDecMnodeRef(pMnode); + mnodeDecMnodeRef(pMnode); } pShow->numOfReads += numOfRows; diff --git a/src/mnode/src/mnodeMgmt.c b/src/mnode/src/mnodePeer.c similarity index 56% rename from src/mnode/src/mnodeMgmt.c rename to src/mnode/src/mnodePeer.c index 49f4c90fa50..a4bb28b02ce 100644 --- a/src/mnode/src/mnodeMgmt.c +++ b/src/mnode/src/mnodePeer.c @@ -23,38 +23,43 @@ #include "tgrant.h" #include "tbalance.h" #include "tglobal.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeDb.h" #include "mnodeMnode.h" #include "mnodeProfile.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeSdb.h" #include "mnodeTable.h" #include "mnodeVgroup.h" -static void (*tsMnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); +static int32_t (*tsMnodeProcessPeerMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); +static void (*tsMnodeProcessPeerRspFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *); -void mnodeAddMgmtMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { - tsMnodeProcessMgmtMsgFp[msgType] = fp; +void mnodeAddPeerMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)) { + tsMnodeProcessPeerMsgFp[msgType] = fp; } -int32_t mnodeProcessMgmt(SMnodeMsg *pMsg) { - SRpcMsg *rpcMsg = &pMsg->rpcMsg; - if (rpcMsg->pCont == NULL) { - mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); +void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) { + tsMnodeProcessPeerRspFp[msgType] = fp; +} + +int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { + if (pMsg->pCont == NULL) { + mError("msg:%s content is null", taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } if (!sdbIsMaster()) { SMnodeRsp *rpcRsp = &pMsg->rpcRsp; SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); - mgmtGetMnodeIpSetForPeer(ipSet); + mnodeGetMnodeIpSetForPeer(ipSet); rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -62,10 +67,20 @@ int32_t mnodeProcessMgmt(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (tsMnodeProcessMgmtMsgFp[rpcMsg->msgType] == NULL) { - mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + if (tsMnodeProcessPeerMsgFp[pMsg->msgType] == NULL) { + mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } - return (*tsMnodeProcessMgmtMsgFp[rpcMsg->msgType])(rpcMsg, ); + return (*tsMnodeProcessPeerMsgFp[pMsg->msgType])(pMsg); +} + +void mnodeProcessPeerRsp(SRpcMsg *pMsg) { + if (tsMnodeProcessPeerRspFp[pMsg->msgType]) { + (*tsMnodeProcessPeerRspFp[pMsg->msgType])(pMsg); + } else { + mError("msg:%s is not processed", pMsg->handle, taosMsg[pMsg->msgType]); + } + + rpcFreeCont(pMsg->pCont); } diff --git a/src/mnode/src/mnodeProfile.c b/src/mnode/src/mnodeProfile.c index 3236197c83d..4cb560e066e 100644 --- a/src/mnode/src/mnodeProfile.c +++ b/src/mnode/src/mnodeProfile.c @@ -18,6 +18,7 @@ #include "taosmsg.h" #include "taoserror.h" #include "tutil.h" +#include "mnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeAcct.h" @@ -25,16 +26,17 @@ #include "mnodeDb.h" #include "mnodeMnode.h" #include "mnodeProfile.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeTable.h" #include "mnodeUser.h" #include "mnodeVgroup.h" +#include "mnodeWrite.h" -int32_t mgmtSaveQueryStreamList(SCMHeartBeatMsg *pHBMsg); +int32_t mnodeSaveQueryStreamList(SCMHeartBeatMsg *pHBMsg); -int32_t mgmtKillQuery(char *qidstr, void *pConn); -int32_t mgmtKillStream(char *qidstr, void *pConn); -int32_t mgmtKillConnection(char *qidstr, void *pConn); +int32_t mnodeKillQuery(char *qidstr, void *pConn); +int32_t mnodeKillStream(char *qidstr, void *pConn); +int32_t mnodeKillConnection(char *qidstr, void *pConn); typedef struct { char user[TSDB_TABLE_ID_LEN + 1]; @@ -98,7 +100,7 @@ int32_t mgmtSaveQueryStreamList(SCMHeartBeatMsg *pHBMsg) { return TSDB_CODE_SUCCESS; } -int32_t mgmtGetQueries(SShowObj *pShow, void *pConn) { +int32_t mnodeGetQueries(SShowObj *pShow, void *pConn) { // SAcctObj * pAcct = pConn->pAcct; // SQueryShow *pQueryShow; // @@ -145,7 +147,7 @@ int32_t mgmtGetQueries(SShowObj *pShow, void *pConn) { return 0; } -int32_t mgmtGetQueryMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +int32_t mnodeGetQueryMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; SSchema *pSchema = pMeta->schema; @@ -190,11 +192,11 @@ int32_t mgmtGetQueryMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { pShow->pIter = NULL; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtGetQueries(pShow, pConn); + mnodeGetQueries(pShow, pConn); return 0; } -int32_t mgmtKillQuery(char *qidstr, void *pConn) { +int32_t mnodeKillQuery(char *qidstr, void *pConn) { // char *temp, *chr, idstr[64]; // strcpy(idstr, qidstr); // @@ -247,7 +249,7 @@ int32_t mgmtKillQuery(char *qidstr, void *pConn) { return TSDB_CODE_INVALID_QUERY_ID; } -int32_t mgmtRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; char *pWrite; int32_t cols = 0; @@ -297,7 +299,7 @@ int32_t mgmtRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, void *pCo return numOfRows; } -int32_t mgmtGetStreams(SShowObj *pShow, void *pConn) { +int32_t mnodeGetStreams(SShowObj *pShow, void *pConn) { // SAcctObj * pAcct = pConn->pAcct; // SStreamShow *pStreamShow; // @@ -344,7 +346,7 @@ int32_t mgmtGetStreams(SShowObj *pShow, void *pConn) { return 0; } -int32_t mgmtGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +int32_t mnodeGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; SSchema *pSchema = pMeta->schema; @@ -400,11 +402,11 @@ int32_t mgmtGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { pShow->pIter = NULL; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtGetStreams(pShow, pConn); + mnodeGetStreams(pShow, pConn); return 0; } -int32_t mgmtRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; char *pWrite; int32_t cols = 0; @@ -462,7 +464,7 @@ int32_t mgmtRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pCo return numOfRows; } -int32_t mgmtKillStream(char *qidstr, void *pConn) { +int32_t mnodeKillStream(char *qidstr, void *pConn) { // char *temp, *chr, idstr[64]; // strcpy(idstr, qidstr); // @@ -515,7 +517,7 @@ int32_t mgmtKillStream(char *qidstr, void *pConn) { return TSDB_CODE_INVALID_STREAM_ID; } -int32_t mgmtKillConnection(char *qidstr, void *pConn) { +int32_t mnodeKillConnection(char *qidstr, void *pConn) { // void *pConn1 = NULL; // char * temp, *chr, idstr[64]; // strcpy(idstr, qidstr); @@ -562,7 +564,7 @@ int32_t mgmtKillConnection(char *qidstr, void *pConn) { } -int mgmtGetConns(SShowObj *pShow, void *pConn) { +int mnodeGetConns(SShowObj *pShow, void *pConn) { // SAcctObj * pAcct = pConn->pAcct; // SConnShow *pConnShow; // @@ -597,7 +599,7 @@ int mgmtGetConns(SShowObj *pShow, void *pConn) { return 0; } -int32_t mgmtGetConnsMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { +int32_t mnodeGetConnsMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { int32_t cols = 0; pShow->bytes[cols] = TSDB_TABLE_NAME_LEN; @@ -630,11 +632,11 @@ int32_t mgmtGetConnsMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { pShow->pIter = NULL; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtGetConns(pShow, pConn); + mnodeGetConns(pShow, pConn); return 0; } -int32_t mgmtRetrieveConns(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveConns(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; char *pWrite; int32_t cols = 0; @@ -672,91 +674,94 @@ int32_t mgmtRetrieveConns(SShowObj *pShow, char *data, int32_t rows, void *pConn return numOfRows; } -void mgmtProcessKillQueryMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; +int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) { + // SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); - if (pUser == NULL) { - rpcRsp.code = TSDB_CODE_INVALID_USER; - rpcSendResponse(&rpcRsp); - return; - } - - SCMKillQueryMsg *pKill = pMsg->pCont; - int32_t code; - - if (!pUser->writeAuth) { - code = TSDB_CODE_NO_RIGHTS; - } else { - code = mgmtKillQuery(pKill->queryId, pMsg->thandle); - } - - rpcRsp.code = code; - rpcSendResponse(&rpcRsp); - mgmtDecUserRef(pUser); + // SUserObj *pUser = mnodeGetUserFromConn(pMsg->thandle); + // if (pUser == NULL) { + // rpcRsp.code = TSDB_CODE_INVALID_USER; + // rpcSendResponse(&rpcRsp); + // return; + // } + + // SCMKillQueryMsg *pKill = pMsg->pCont; + // int32_t code; + + // if (!pUser->writeAuth) { + // code = TSDB_CODE_NO_RIGHTS; + // } else { + // code = mgmtKillQuery(pKill->queryId, pMsg->thandle); + // } + + // rpcRsp.code = code; + // rpcSendResponse(&rpcRsp); + // mnodeDecUserRef(pUser); + return TSDB_CODE_SUCCESS; } -void mgmtProcessKillStreamMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; +int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) { + // SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); - if (pUser == NULL) { - rpcRsp.code = TSDB_CODE_INVALID_USER; - rpcSendResponse(&rpcRsp); - return; - } - - SCMKillStreamMsg *pKill = pMsg->pCont; - int32_t code; - - if (!pUser->writeAuth) { - code = TSDB_CODE_NO_RIGHTS; - } else { - code = mgmtKillStream(pKill->queryId, pMsg->thandle); - } - - rpcRsp.code = code; - rpcSendResponse(&rpcRsp); - mgmtDecUserRef(pUser); + // SUserObj *pUser = mnodeGetUserFromConn(pMsg->thandle); + // if (pUser == NULL) { + // rpcRsp.code = TSDB_CODE_INVALID_USER; + // rpcSendResponse(&rpcRsp); + // return; + // } + + // SCMKillStreamMsg *pKill = pMsg->pCont; + // int32_t code; + + // if (!pUser->writeAuth) { + // code = TSDB_CODE_NO_RIGHTS; + // } else { + // code = mgmtKillStream(pKill->queryId, pMsg->thandle); + // } + + // rpcRsp.code = code; + // rpcSendResponse(&rpcRsp); + // mnodeDecUserRef(pUser); + return TSDB_CODE_SUCCESS; } -void mgmtProcessKillConnectionMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; +int32_t mnodeProcessKillConnectionMsg(SMnodeMsg *pMsg) { + // SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - SUserObj *pUser = mgmtGetUserFromConn(pMsg->thandle); - if (pUser == NULL) { - rpcRsp.code = TSDB_CODE_INVALID_USER; - rpcSendResponse(&rpcRsp); - return; - } - - SCMKillConnMsg *pKill = pMsg->pCont; - int32_t code; - - if (!pUser->writeAuth) { - code = TSDB_CODE_NO_RIGHTS; - } else { - code = mgmtKillConnection(pKill->queryId, pMsg->thandle); - } - - rpcRsp.code = code; - rpcSendResponse(&rpcRsp); - mgmtDecUserRef(pUser); + // SUserObj *pUser = mnodeGetUserFromConn(pMsg->thandle); + // if (pUser == NULL) { + // rpcRsp.code = TSDB_CODE_INVALID_USER; + // rpcSendResponse(&rpcRsp); + // return; + // } + + // SCMKillConnMsg *pKill = pMsg->pCont; + // int32_t code; + + // if (!pUser->writeAuth) { + // code = TSDB_CODE_NO_RIGHTS; + // } else { + // code = mgmtKillConnection(pKill->queryId, pMsg->thandle); + // } + + // rpcRsp.code = code; + // rpcSendResponse(&rpcRsp); + // mnodeDecUserRef(pUser); + return TSDB_CODE_SUCCESS; } -int32_t mgmtInitProfile() { - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_QUERIES, mgmtGetQueryMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_QUERIES, mgmtRetrieveQueries); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_CONNS, mgmtGetConnsMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_CONNS, mgmtRetrieveConns); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_STREAMS, mgmtGetStreamMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_STREAMS, mgmtRetrieveStreams); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mgmtProcessKillQueryMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mgmtProcessKillStreamMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mgmtProcessKillConnectionMsg); +int32_t mnodeInitProfile() { + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mnodeGetQueryMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mnodeRetrieveQueries); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mnodeGetConnsMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mnodeRetrieveConns); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mnodeGetStreamMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mnodeRetrieveStreams); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mnodeProcessKillQueryMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mnodeProcessKillStreamMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mnodeProcessKillConnectionMsg); return 0; } -void mgmtCleanUpProfile() { +void mnodeCleanupProfile() { } diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c index c8983bf1e75..32790af03f3 100644 --- a/src/mnode/src/mnodeRead.c +++ b/src/mnode/src/mnodeRead.c @@ -24,39 +24,37 @@ #include "mnode.h" #include "dnode.h" #include "mnodeDef.h" -#include "mgmtInt.h" -#include "mgmtServer.h" +#include "mnodeInt.h" #include "mnodeAcct.h" -#include "mgmtDnode.h" -#include "mgmtMnode.h" +#include "mnodeDnode.h" +#include "mnodeMnode.h" #include "mnodeDb.h" -#include "mgmtSdb.h" -#include "mgmtVgroup.h" -#include "mgmtUser.h" -#include "mgmtTable.h" -#include "mgmtShell.h" +#include "mnodeSdb.h" +#include "mnodeVgroup.h" +#include "mnodeUser.h" +#include "mnodeTable.h" +#include "mnodeShow.h" -static void (*tsMnodeProcessReadMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); +static int32_t (*tsMnodeProcessReadMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); -void mnodeAddReadMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { +void mnodeAddReadMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *pMsg)) { tsMnodeProcessReadMsgFp[msgType] = fp; } int32_t mnodeProcessRead(SMnodeMsg *pMsg) { - SRpcMsg *rpcMsg = &pMsg->rpcMsg; - if (rpcMsg->pCont == NULL) { - mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + if (pMsg->pCont == NULL) { + mError("msg:%s content is null", taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } if (!sdbIsMaster()) { SMnodeRsp *rpcRsp = &pMsg->rpcRsp; SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); - mgmtGetMnodeIpSetForShell(ipSet); + mnodeGetMnodeIpSetForShell(ipSet); rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -64,20 +62,15 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - mError("%p, msg:%s not processed, grant time expired", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); - return TSDB_CODE_GRANT_EXPIRED; - } - - if (tsMnodeProcessReadMsgFp[rpcMsg->msgType] == NULL) { - mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + if (tsMnodeProcessReadMsgFp[pMsg->msgType] == NULL) { + mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } if (!mnodeInitMsg(pMsg)) { - mError("%p, msg:%s not processed, reason:%s", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], tstrerror(terrno)); + mError("msg:%s not processed, reason:%s", taosMsg[pMsg->msgType], tstrerror(terrno)); return terrno; } - return (*tsMgmtProcessShellMsgFp[rpcMsg->msgType])(pMsg); + return (*tsMnodeProcessReadMsgFp[pMsg->msgType])(pMsg); } diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c index e873c0b5733..3b04be1ea63 100644 --- a/src/mnode/src/mnodeSdb.c +++ b/src/mnode/src/mnodeSdb.c @@ -189,16 +189,16 @@ void sdbUpdateMnodeRoles() { sdbPrint("update mnodes:%d sync roles", tsSdbObj.cfg.replica); for (int32_t i = 0; i < tsSdbObj.cfg.replica; ++i) { - SMnodeObj *pMnode = mgmtGetMnode(roles.nodeId[i]); + SMnodeObj *pMnode = mnodeGetMnode(roles.nodeId[i]); if (pMnode != NULL) { pMnode->role = roles.role[i]; - sdbPrint("mnode:%d, role:%s", pMnode->mnodeId, mgmtGetMnodeRoleStr(pMnode->role)); + sdbPrint("mnode:%d, role:%s", pMnode->mnodeId, mnodeGetMnodeRoleStr(pMnode->role)); if (pMnode->mnodeId == dnodeGetDnodeId()) tsSdbObj.role = pMnode->role; - mgmtDecMnodeRef(pMnode); + mnodeDecMnodeRef(pMnode); } } - mgmtUpdateMnodeIpSet(); + mnodeUpdateMnodeIpSet(); } static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32_t *size, uint64_t *fversion) { @@ -211,7 +211,7 @@ static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) { } static void sdbNotifyRole(void *ahandle, int8_t role) { - sdbPrint("mnode role changed from %s to %s", mgmtGetMnodeRoleStr(tsSdbObj.role), mgmtGetMnodeRoleStr(role)); + sdbPrint("mnode role changed from %s to %s", mnodeGetMnodeRoleStr(tsSdbObj.role), mnodeGetMnodeRoleStr(role)); if (role == TAOS_SYNC_ROLE_MASTER && tsSdbObj.role != TAOS_SYNC_ROLE_MASTER) { balanceReset(); @@ -256,20 +256,20 @@ void sdbUpdateSync() { void *pIter = NULL; while (1) { SMnodeObj *pMnode = NULL; - pIter = mgmtGetNextMnode(pIter, &pMnode); + pIter = mnodeGetNextMnode(pIter, &pMnode); if (pMnode == NULL) break; syncCfg.nodeInfo[index].nodeId = pMnode->mnodeId; - SDnodeObj *pDnode = mgmtGetDnode(pMnode->mnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode != NULL) { syncCfg.nodeInfo[index].nodePort = pDnode->dnodePort + TSDB_PORT_SYNC; strcpy(syncCfg.nodeInfo[index].nodeFqdn, pDnode->dnodeEp); index++; } - mgmtDecDnodeRef(pDnode); - mgmtDecMnodeRef(pMnode); + mnodeDecDnodeRef(pDnode); + mnodeDecMnodeRef(pMnode); } sdbFreeIter(pIter); } @@ -324,7 +324,7 @@ int32_t sdbInit() { sdbRestoreTables(); - if (mgmtGetMnodesNum() == 1) { + if (mnodeGetMnodesNum() == 1) { tsSdbObj.role = TAOS_SYNC_ROLE_MASTER; } diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index a629d02fdd3..37bcd075a52 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -24,6 +24,7 @@ #include "tgrant.h" #include "tglobal.h" #include "tcache.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" @@ -33,33 +34,38 @@ #include "mnodeMnode.h" #include "mnodeProfile.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeTable.h" #include "mnodeUser.h" #include "mnodeVgroup.h" +#include "mnodeWrite.h" +#include "mnodeRead.h" -typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeProcessShowMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessHeartBeatMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessConnectMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessUseMsg(SMnodeMsg *mnodeMsg); -static void mnodeProcessShowMsg(SMnodeMsg *queuedMsg); -static void mnodeProcessRetrieveMsg(SMnodeMsg *queuedMsg); -static void mnodeProcessHeartBeatMsg(SMnodeMsg *queuedMsg); -static void mnodeProcessConnectMsg(SMnodeMsg *queuedMsg); -static void mnodeProcessUseMsg(SMnodeMsg *queuedMsg); -static void mnodeFreeShowObj(void *data); +static void mnodeFreeShowObj(void *data); +static bool mnodeCheckQhandle(uint64_t qhandle); +static void *mnodeSaveQhandle(void *qhandle, int32_t size); +static void mnodeFreeQhandle(void *qhandle, bool forceRemove); +extern void *tsMnodeTmr; static void *tsQhandleCache = NULL; -static SShowMetaFp tsMnodeShowMetaFp[TSDB_MNODE_TABLE_MAX] = {0}; -static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MNODE_TABLE_MAX] = {0}; +static SShowMetaFp tsMnodeShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; +static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; -void mnodeInitShow() { +int32_t mnodeInitShow() { mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_SHOW, mnodeProcessShowMsg); mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_RETRIEVE, mnodeProcessRetrieveMsg); mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_HEARTBEAT, mnodeProcessHeartBeatMsg); mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mnodeProcessConnectMsg); mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mnodeProcessUseMsg); - tsQhandleCache = taosCacheInitWithCb(tsMgmtTmr, 10, mnodeFreeShowObj); + tsQhandleCache = taosCacheInitWithCb(tsMnodeTmr, 10, mnodeFreeShowObj); + return 0; } void mnodeCleanUpShow() { @@ -77,46 +83,43 @@ void mnodeAddShowRetrieveHandle(uint8_t msgType, SShowRetrieveFp fp) { tsMnodeShowRetrieveFp[msgType] = fp; } -char *mnodeGetShowType(int32_t showType) { +static char *mnodeGetShowType(int32_t showType) { switch (showType) { - case TSDB_MNODE_TABLE_ACCT: return "show accounts"; - case TSDB_MNODE_TABLE_USER: return "show users"; - case TSDB_MNODE_TABLE_DB: return "show databases"; - case TSDB_MNODE_TABLE_TABLE: return "show tables"; - case TSDB_MNODE_TABLE_DNODE: return "show dnodes"; - case TSDB_MNODE_TABLE_MNODE: return "show mnodes"; - case TSDB_MNODE_TABLE_VGROUP: return "show vgroups"; - case TSDB_MNODE_TABLE_METRIC: return "show stables"; - case TSDB_MNODE_TABLE_MODULE: return "show modules"; - case TSDB_MNODE_TABLE_QUERIES: return "show queries"; - case TSDB_MNODE_TABLE_STREAMS: return "show streams"; - case TSDB_MNODE_TABLE_CONFIGS: return "show configs"; - case TSDB_MNODE_TABLE_CONNS: return "show connections"; - case TSDB_MNODE_TABLE_SCORES: return "show scores"; - case TSDB_MNODE_TABLE_GRANTS: return "show grants"; - case TSDB_MNODE_TABLE_VNODES: return "show vnodes"; + case TSDB_MGMT_TABLE_ACCT: return "show accounts"; + case TSDB_MGMT_TABLE_USER: return "show users"; + case TSDB_MGMT_TABLE_DB: return "show databases"; + case TSDB_MGMT_TABLE_TABLE: return "show tables"; + case TSDB_MGMT_TABLE_DNODE: return "show dnodes"; + case TSDB_MGMT_TABLE_MNODE: return "show mnodes"; + case TSDB_MGMT_TABLE_VGROUP: return "show vgroups"; + case TSDB_MGMT_TABLE_METRIC: return "show stables"; + case TSDB_MGMT_TABLE_MODULE: return "show modules"; + case TSDB_MGMT_TABLE_QUERIES: return "show queries"; + case TSDB_MGMT_TABLE_STREAMS: return "show streams"; + case TSDB_MGMT_TABLE_CONFIGS: return "show configs"; + case TSDB_MGMT_TABLE_CONNS: return "show connections"; + case TSDB_MGMT_TABLE_SCORES: return "show scores"; + case TSDB_MGMT_TABLE_GRANTS: return "show grants"; + case TSDB_MGMT_TABLE_VNODES: return "show vnodes"; default: return "undefined"; } } -static void mnodeProcessShowMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { SCMShowMsg *pShowMsg = pMsg->pCont; - if (pShowMsg->type >= TSDB_MNODE_TABLE_MAX) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_MSG_TYPE); - return; + if (pShowMsg->type >= TSDB_MGMT_TABLE_MAX) { + return TSDB_CODE_INVALID_MSG_TYPE; } if (!tsMnodeShowMetaFp[pShowMsg->type] || !tsMnodeShowRetrieveFp[pShowMsg->type]) { mError("show type:%s is not support", mnodeGetShowType(pShowMsg->type)); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_OPS_NOT_SUPPORT); - return; + return TSDB_CODE_OPS_NOT_SUPPORT; } int32_t size = sizeof(SCMShowRsp) + sizeof(SSchema) * TSDB_MAX_COLUMNS + TSDB_EXTRA_PAYLOAD_SIZE; SCMShowRsp *pShowRsp = rpcMallocCont(size); if (pShowRsp == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen); @@ -127,31 +130,23 @@ static void mnodeProcessShowMsg(SMnodeMsg *pMsg) { strcpy(pShow->db, pShowMsg->db); memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); - pShow = mgmtSaveQhandle(pShow, showObjSize); + pShow = mnodeSaveQhandle(pShow, showObjSize); pShowRsp->qhandle = htobe64((uint64_t) pShow); mTrace("show:%p, type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->thandle); if (code == 0) { - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .pCont = pShowRsp, - .contLen = sizeof(SCMShowRsp) + sizeof(SSchema) * pShow->numOfColumns, - .code = code - }; - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pShowRsp; + pMsg->rpcRsp.len = sizeof(SCMShowRsp) + sizeof(SSchema) * pShow->numOfColumns; + return TSDB_CODE_SUCCESS; } else { mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); - mgmtFreeQhandle(pShow, false); - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .code = code - }; - rpcSendResponse(&rpcRsp); + mnodeFreeQhandle(pShow, true); + return code; } } -static void mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { int32_t rowsToRead = 0; int32_t size = 0; int32_t rowsRead = 0; @@ -162,10 +157,9 @@ static void mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { * in case of server restart, apps may hold qhandle created by server before * restart, which is actually invalid, therefore, signature check is required. */ - if (!mgmtCheckQhandle(pRetrieve->qhandle)) { + if (!mnodeCheckQhandle(pRetrieve->qhandle)) { mError("retrieve:%p, qhandle:%p is invalid", pRetrieve, pRetrieve->qhandle); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_QHANDLE); - return; + return TSDB_CODE_INVALID_QHANDLE; } SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; @@ -192,41 +186,37 @@ static void mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) rowsRead = (*tsMnodeShowRetrieveFp[pShow->type])(pShow, pRsp->data, rowsToRead, pMsg->thandle); - if (rowsRead < 0) { // TSDB_CODE_ACTION_IN_PROGRESS; + if (rowsRead < 0) { rpcFreeCont(pRsp); - mgmtFreeQhandle(pShow, false); - return; + mnodeFreeQhandle(pShow, false); + assert(false); + return TSDB_CODE_ACTION_IN_PROGRESS; } pRsp->numOfRows = htonl(rowsRead); pRsp->precision = htonl(TSDB_TIME_PRECISION_MILLI); // millisecond time precision - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .pCont = pRsp, - .contLen = size, - .code = 0, - .msgType = 0 - }; - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pRsp; + pMsg->rpcRsp.len = size; if (rowsToRead == 0) { - mgmtFreeQhandle(pShow, true); + mnodeFreeQhandle(pShow, true); } else { - mgmtFreeQhandle(pShow, false); + mnodeFreeQhandle(pShow, false); } + + return TSDB_CODE_SUCCESS; } -static void mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) { SCMHeartBeatRsp *pHBRsp = (SCMHeartBeatRsp *) rpcMallocCont(sizeof(SCMHeartBeatRsp)); if (pHBRsp == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } - pHBRsp->onlineDnodes = htonl(mgmtGetOnlinDnodesNum()); - pHBRsp->totalDnodes = htonl(mgmtGetDnodesNum()); - mgmtGetMnodeIpSet(&pHBRsp->ipList); + pHBRsp->onlineDnodes = htonl(mnodeGetOnlinDnodesNum()); + pHBRsp->totalDnodes = htonl(mnodeGetDnodesNum()); + mnodeGetMnodeIpSetForShell(&pHBRsp->ipList); /* * TODO @@ -236,29 +226,20 @@ static void mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) { pHBRsp->streamId = 0; pHBRsp->killConnection = 0; - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .pCont = pHBRsp, - .contLen = sizeof(SCMHeartBeatRsp), - .code = 0, - .msgType = 0 - }; - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pHBRsp; + pMsg->rpcRsp.len = sizeof(SCMHeartBeatRsp); + + return TSDB_CODE_SUCCESS; } -static void mnodeProcessConnectMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; +static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) { SCMConnectMsg *pConnectMsg = pMsg->pCont; + int32_t code = TSDB_CODE_SUCCESS; SRpcConnInfo connInfo; if (rpcGetConnInfo(pMsg->thandle, &connInfo) != 0) { mError("thandle:%p is already released while process connect msg", pMsg->thandle); - return; - } - - int32_t code; - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - code = TSDB_CODE_GRANT_EXPIRED; + code = TSDB_CODE_INVALID_MSG_CONTENT; goto connect_over; } @@ -273,12 +254,12 @@ static void mnodeProcessConnectMsg(SMnodeMsg *pMsg) { if (pConnectMsg->db[0]) { char dbName[TSDB_TABLE_ID_LEN * 3] = {0}; sprintf(dbName, "%x%s%s", pAcct->acctId, TS_PATH_DELIMITER, pConnectMsg->db); - SDbObj *pDb = mgmtGetDb(dbName); + SDbObj *pDb = mnodeGetDb(dbName); if (pDb == NULL) { code = TSDB_CODE_INVALID_DB; goto connect_over; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); } SCMConnectRsp *pConnectRsp = rpcMallocCont(sizeof(SCMConnectRsp)); @@ -292,92 +273,33 @@ static void mnodeProcessConnectMsg(SMnodeMsg *pMsg) { pConnectRsp->writeAuth = pUser->writeAuth; pConnectRsp->superAuth = pUser->superAuth; - mgmtGetMnodeIpSet(&pConnectRsp->ipList); - + mnodeGetMnodeIpSetForShell(&pConnectRsp->ipList); + connect_over: - rpcRsp.code = code; if (code != TSDB_CODE_SUCCESS) { mLError("user:%s login from %s, result:%s", connInfo.user, taosIpStr(connInfo.clientIp), tstrerror(code)); } else { mLPrint("user:%s login from %s, result:%s", connInfo.user, taosIpStr(connInfo.clientIp), tstrerror(code)); - rpcRsp.pCont = pConnectRsp; - rpcRsp.contLen = sizeof(SCMConnectRsp); + pMsg->rpcRsp.rsp = pConnectRsp; + pMsg->rpcRsp.len = sizeof(SCMConnectRsp); } - rpcSendResponse(&rpcRsp); + + return code; } -static void mnodeProcessUseMsg(SMnodeMsg *pMsg) { - SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - +static int32_t mnodeProcessUseMsg(SMnodeMsg *pMsg) { SCMUseDbMsg *pUseDbMsg = pMsg->pCont; - - // todo check for priority of current user + int32_t code = TSDB_CODE_SUCCESS; - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDb(pUseDbMsg->db); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pUseDbMsg->db); if (pMsg->pDb == NULL) { code = TSDB_CODE_INVALID_DB; } - - rpcRsp.code = code; - rpcSendResponse(&rpcRsp); -} -/** - * check if we need to add mgmtProcessTableMetaMsg into tranQueue, which will be executed one-by-one. - */ -static bool mgmtCheckTableMetaMsgReadOnly(SMnodeMsg *pMsg) { - SCMTableInfoMsg *pInfo = pMsg->pCont; - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pInfo->tableId); - if (pMsg->pTable != NULL) return true; - - // If table does not exists and autoCreate flag is set, we add the handler into task queue - int16_t autoCreate = htons(pInfo->createFlag); - if (autoCreate == 1) { - mTrace("table:%s auto created task added", pInfo->tableId); - return false; - } - - return true; + return code; } -static bool mgmtCheckMsgReadOnly(SMnodeMsg *pMsg) { - if (pMsg->msgType == TSDB_MSG_TYPE_CM_TABLE_META) { - return mgmtCheckTableMetaMsgReadOnly(pMsg); - } - - if (pMsg->msgType == TSDB_MSG_TYPE_CM_STABLE_VGROUP || pMsg->msgType == TSDB_MSG_TYPE_CM_RETRIEVE || - pMsg->msgType == TSDB_MSG_TYPE_CM_SHOW || pMsg->msgType == TSDB_MSG_TYPE_CM_TABLES_META || - pMsg->msgType == TSDB_MSG_TYPE_CM_CONNECT) { - return true; - } - - return false; -} - -static void mgmtProcessUnSupportMsg(SRpcMsg *rpcMsg) { - mError("%s is not processed in mnode shell", taosMsg[rpcMsg->msgType]); - SRpcMsg rpcRsp = { - .msgType = 0, - .pCont = 0, - .contLen = 0, - .code = TSDB_CODE_OPS_NOT_SUPPORT, - .handle = rpcMsg->handle - }; - rpcSendResponse(&rpcRsp); -} - -void mgmtSendSimpleResp(void *thandle, int32_t code) { - SRpcMsg rpcRsp = { - .msgType = 0, - .pCont = 0, - .contLen = 0, - .code = code, - .handle = thandle - }; - rpcSendResponse(&rpcRsp); -} - -bool mgmtCheckQhandle(uint64_t qhandle) { +static bool mnodeCheckQhandle(uint64_t qhandle) { void *pSaved = taosCacheAcquireByData(tsQhandleCache, (void *)qhandle); if (pSaved == (void *)qhandle) { mTrace("show:%p, is retrieved", qhandle); @@ -388,17 +310,17 @@ bool mgmtCheckQhandle(uint64_t qhandle) { } } -void* mgmtSaveQhandle(void *qhandle, int32_t size) { +static void *mnodeSaveQhandle(void *qhandle, int32_t size) { if (tsQhandleCache != NULL) { char key[24]; sprintf(key, "show:%p", qhandle); void *newQhandle = taosCachePut(tsQhandleCache, key, qhandle, size, 60); free(qhandle); - + mTrace("show:%p, is saved", newQhandle); return newQhandle; } - + return NULL; } @@ -408,60 +330,7 @@ static void mnodeFreeShowObj(void *data) { mTrace("show:%p, is destroyed", pShow); } -void mgmtFreeQhandle(void *qhandle, bool forceRemove) { +static void mnodeFreeQhandle(void *qhandle, bool forceRemove) { mTrace("show:%p, is released, force:%s", qhandle, forceRemove ? "true" : "false"); taosCacheRelease(tsQhandleCache, &qhandle, forceRemove); } - -void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg, SRspRet *pRet) { - SUserObj *pUser = mgmtGetUserFromConn(rpcMsg->handle); - if (pUser == NULL) { - terrno = TSDB_CODE_INVALID_USER; - return NULL; - } - - SMnodeMsg *pMsg = calloc(1, sizeof(SMnodeMsg)); - if (pMsg == NULL) { - terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; - return NULL; - } - - pMsg->thandle = rpcMsg->handle; - pMsg->msgType = rpcMsg->msgType; - pMsg->contLen = rpcMsg->contLen; - pMsg->pCont = rpcMsg->pCont; - pMsg->pUser = pUser; - pMsg->pRet = pRet; - - return pMsg; -} - -void mgmtFreeQueuedMsg(SMnodeMsg *pMsg) { - if (pMsg != NULL) { - rpcFreeCont(pMsg->pCont); - if (pMsg->pUser) mgmtDecUserRef(pMsg->pUser); - if (pMsg->pDb) mgmtDecDbRef(pMsg->pDb); - if (pMsg->pVgroup) mgmtDecVgroupRef(pMsg->pVgroup); - if (pMsg->pTable) mgmtDecTableRef(pMsg->pTable); - if (pMsg->pAcct) mgmtDecAcctRef(pMsg->pAcct); - if (pMsg->pDnode) mgmtDecDnodeRef(pMsg->pDnode); - free(pMsg); - } -} - -void* mgmtCloneQueuedMsg(SMnodeMsg *pSrcMsg) { - SMnodeMsg *pDestMsg = calloc(1, sizeof(SMnodeMsg)); - - pDestMsg->thandle = pSrcMsg->thandle; - pDestMsg->msgType = pSrcMsg->msgType; - pDestMsg->pCont = pSrcMsg->pCont; - pDestMsg->contLen = pSrcMsg->contLen; - pDestMsg->retry = pSrcMsg->retry; - pDestMsg->maxRetry= pSrcMsg->maxRetry; - pDestMsg->pUser = pSrcMsg->pUser; - - pSrcMsg->pCont = NULL; - pSrcMsg->pUser = NULL; - - return pDestMsg; -} diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 51161372fb7..9399c29be88 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -24,64 +24,68 @@ #include "tname.h" #include "tidpool.h" #include "tglobal.h" +#include "tcompare.h" +#include "tdataformat.h" +#include "tgrant.h" #include "hash.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeAcct.h" #include "mnodeDb.h" #include "mnodeDnode.h" -#include "tgrant.h" #include "mnodeMnode.h" #include "mnodeProfile.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeTable.h" #include "mnodeUser.h" #include "mnodeVgroup.h" -#include "tcompare.h" -#include "tdataformat.h" +#include "mnodeWrite.h" +#include "mnodeRead.h" +#include "mnodePeer.h" static void * tsChildTableSdb; static void * tsSuperTableSdb; static int32_t tsChildTableUpdateSize; static int32_t tsSuperTableUpdateSize; -static void * mgmtGetChildTable(char *tableId); -static void * mgmtGetSuperTable(char *tableId); -static void * mgmtGetSuperTableByUid(uint64_t uid); -static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable); -static void mgmtAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCtable); -static void mgmtRemoveTableFromStable(SSuperTableObj *pStable, SChildTableObj *pCtable); - -static int32_t mgmtGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mgmtGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); - -static void mgmtProcessCreateTableMsg(SMnodeMsg *queueMsg); -static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg); -static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg); -static void mgmtProcessCreateChildTableRsp(SRpcMsg *rpcMsg); - -static void mgmtProcessDropTableMsg(SMnodeMsg *queueMsg); -static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg); -static void mgmtProcessDropSuperTableRsp(SRpcMsg *rpcMsg); -static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg); -static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg); - -static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *queueMsg); -static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *queueMsg); -static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg); - -static void mgmtProcessTableMetaMsg(SMnodeMsg *queueMsg); -static void mgmtGetSuperTableMeta(SMnodeMsg *pMsg); -static void mgmtGetChildTableMeta(SMnodeMsg *pMsg); -static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg); - -static void mgmtProcessAlterTableMsg(SMnodeMsg *queueMsg); -static void mgmtProcessAlterTableRsp(SRpcMsg *rpcMsg); - -static int32_t mgmtFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName); +static void * mnodeGetChildTable(char *tableId); +static void * mnodeGetSuperTable(char *tableId); +static void * mnodeGetSuperTableByUid(uint64_t uid); +static void mnodeDropAllChildTablesInStable(SSuperTableObj *pStable); +static void mnodeAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCtable); +static void mnodeRemoveTableFromStable(SSuperTableObj *pStable, SChildTableObj *pCtable); + +static int32_t mnodeGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); + +static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg); +static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg); + +static int32_t mnodeProcessDropTableMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessDropSuperTableMsg(SMnodeMsg *pMsg); +static void mnodeProcessDropSuperTableRsp(SRpcMsg *rpcMsg); +static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg); +static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg); + +static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *mnodeMsg); + +static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *mnodeMsg); +static int32_t mnodeGetSuperTableMeta(SMnodeMsg *pMsg); +static int32_t mnodeGetChildTableMeta(SMnodeMsg *pMsg); +static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg); + +static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *mnodeMsg); +static void mnodeProcessAlterTableRsp(SRpcMsg *rpcMsg); + +static int32_t mnodeFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName); static void mgmtDestroyChildTable(SChildTableObj *pTable) { tfree(pTable->info.tableId); @@ -90,39 +94,39 @@ static void mgmtDestroyChildTable(SChildTableObj *pTable) { tfree(pTable); } -static int32_t mgmtChildTableActionDestroy(SSdbOper *pOper) { +static int32_t mnodeChildTableActionDestroy(SSdbOper *pOper) { mgmtDestroyChildTable(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionInsert(SSdbOper *pOper) { +static int32_t mnodeChildTableActionInsert(SSdbOper *pOper) { SChildTableObj *pTable = pOper->pObj; - SVgObj *pVgroup = mgmtGetVgroup(pTable->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pTable->vgId); if (pVgroup == NULL) { mError("ctable:%s, not in vgId:%d", pTable->info.tableId, pTable->vgId); return TSDB_CODE_INVALID_VGROUP_ID; } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); - SDbObj *pDb = mgmtGetDb(pVgroup->dbName); + SDbObj *pDb = mnodeGetDb(pVgroup->dbName); if (pDb == NULL) { mError("ctable:%s, vgId:%d not in db:%s", pTable->info.tableId, pVgroup->vgId, pVgroup->dbName); return TSDB_CODE_INVALID_DB; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct == NULL) { mError("ctable:%s, acct:%s not exists", pTable->info.tableId, pDb->acct); return TSDB_CODE_INVALID_ACCT; } - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); if (pTable->info.type == TSDB_CHILD_TABLE) { // add ref - pTable->superTable = mgmtGetSuperTableByUid(pTable->suid); - mgmtAddTableIntoStable(pTable->superTable, pTable); + pTable->superTable = mnodeGetSuperTableByUid(pTable->suid); + mnodeAddTableIntoStable(pTable->superTable, pTable); grantAdd(TSDB_GRANT_TIMESERIES, pTable->superTable->numOfColumns - 1); pAcct->acctInfo.numOfTimeSeries += (pTable->superTable->numOfColumns - 1); } else { @@ -130,56 +134,56 @@ static int32_t mgmtChildTableActionInsert(SSdbOper *pOper) { pAcct->acctInfo.numOfTimeSeries += (pTable->numOfColumns - 1); } - mgmtAddTableIntoDb(pDb); - mgmtAddTableIntoVgroup(pVgroup, pTable); + mnodeAddTableIntoDb(pDb); + mnodeAddTableIntoVgroup(pVgroup, pTable); return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionDelete(SSdbOper *pOper) { +static int32_t mnodeChildTableActionDelete(SSdbOper *pOper) { SChildTableObj *pTable = pOper->pObj; if (pTable->vgId == 0) { return TSDB_CODE_INVALID_VGROUP_ID; } - SVgObj *pVgroup = mgmtGetVgroup(pTable->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pTable->vgId); if (pVgroup == NULL) { return TSDB_CODE_INVALID_VGROUP_ID; } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); - SDbObj *pDb = mgmtGetDb(pVgroup->dbName); + SDbObj *pDb = mnodeGetDb(pVgroup->dbName); if (pDb == NULL) { mError("ctable:%s, vgId:%d not in DB:%s", pTable->info.tableId, pVgroup->vgId, pVgroup->dbName); return TSDB_CODE_INVALID_DB; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct == NULL) { mError("ctable:%s, acct:%s not exists", pTable->info.tableId, pDb->acct); return TSDB_CODE_INVALID_ACCT; } - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); if (pTable->info.type == TSDB_CHILD_TABLE) { grantRestore(TSDB_GRANT_TIMESERIES, pTable->superTable->numOfColumns - 1); pAcct->acctInfo.numOfTimeSeries -= (pTable->superTable->numOfColumns - 1); - mgmtRemoveTableFromStable(pTable->superTable, pTable); - mgmtDecTableRef(pTable->superTable); + mnodeRemoveTableFromStable(pTable->superTable, pTable); + mnodeDecTableRef(pTable->superTable); } else { grantRestore(TSDB_GRANT_TIMESERIES, pTable->numOfColumns - 1); pAcct->acctInfo.numOfTimeSeries -= (pTable->numOfColumns - 1); } - mgmtRemoveTableFromDb(pDb); - mgmtRemoveTableFromVgroup(pVgroup, pTable); + mnodeRemoveTableFromDb(pDb); + mnodeRemoveTableFromVgroup(pVgroup, pTable); return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionUpdate(SSdbOper *pOper) { +static int32_t mnodeChildTableActionUpdate(SSdbOper *pOper) { SChildTableObj *pNew = pOper->pObj; - SChildTableObj *pTable = mgmtGetChildTable(pNew->info.tableId); + SChildTableObj *pTable = mnodeGetChildTable(pNew->info.tableId); if (pTable != pNew) { void *oldTableId = pTable->info.tableId; void *oldSql = pTable->sql; @@ -192,12 +196,12 @@ static int32_t mgmtChildTableActionUpdate(SSdbOper *pOper) { free(oldSchema); free(oldTableId); } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionEncode(SSdbOper *pOper) { +static int32_t mnodeChildTableActionEncode(SSdbOper *pOper) { SChildTableObj *pTable = pOper->pObj; assert(pTable != NULL && pOper->rowData != NULL); @@ -227,7 +231,7 @@ static int32_t mgmtChildTableActionEncode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionDecode(SSdbOper *pOper) { +static int32_t mnodeChildTableActionDecode(SSdbOper *pOper) { assert(pOper->rowData != NULL); SChildTableObj *pTable = calloc(1, sizeof(SChildTableObj)); if (pTable == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -264,34 +268,34 @@ static int32_t mgmtChildTableActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtChildTableActionRestored() { +static int32_t mnodeChildTableActionRestored() { void *pIter = NULL; SChildTableObj *pTable = NULL; while (1) { - pIter = mgmtGetNextChildTable(pIter, &pTable); + pIter = mnodeGetNextChildTable(pIter, &pTable); if (pTable == NULL) break; - SDbObj *pDb = mgmtGetDbByTableId(pTable->info.tableId); + SDbObj *pDb = mnodeGetDbByTableId(pTable->info.tableId); if (pDb == NULL) { mError("ctable:%s, failed to get db, discard it", pTable->info.tableId); SSdbOper desc = {.type = SDB_OPER_LOCAL, .pObj = pTable, .table = tsChildTableSdb}; sdbDeleteRow(&desc); - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); - SVgObj *pVgroup = mgmtGetVgroup(pTable->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pTable->vgId); if (pVgroup == NULL) { mError("ctable:%s, failed to get vgId:%d sid:%d, discard it", pTable->info.tableId, pTable->vgId, pTable->sid); pTable->vgId = 0; SSdbOper desc = {.type = SDB_OPER_LOCAL, .pObj = pTable, .table = tsChildTableSdb}; sdbDeleteRow(&desc); - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); if (strcmp(pVgroup->dbName, pDb->name) != 0) { mError("ctable:%s, db:%s not match with vgId:%d db:%s sid:%d, discard it", @@ -299,7 +303,7 @@ static int32_t mgmtChildTableActionRestored() { pTable->vgId = 0; SSdbOper desc = {.type = SDB_OPER_LOCAL, .pObj = pTable, .table = tsChildTableSdb}; sdbDeleteRow(&desc); - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -308,24 +312,24 @@ static int32_t mgmtChildTableActionRestored() { pTable->vgId = 0; SSdbOper desc = {.type = SDB_OPER_LOCAL, .pObj = pTable, .table = tsChildTableSdb}; sdbDeleteRow(&desc); - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } if (pTable->info.type == TSDB_CHILD_TABLE) { - SSuperTableObj *pSuperTable = mgmtGetSuperTableByUid(pTable->suid); + SSuperTableObj *pSuperTable = mnodeGetSuperTableByUid(pTable->suid); if (pSuperTable == NULL) { mError("ctable:%s, stable:%" PRIu64 " not exist", pTable->info.tableId, pTable->suid); pTable->vgId = 0; SSdbOper desc = {.type = SDB_OPER_LOCAL, .pObj = pTable, .table = tsChildTableSdb}; sdbDeleteRow(&desc); - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } - mgmtDecTableRef(pSuperTable); + mnodeDecTableRef(pSuperTable); } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } sdbFreeIter(pIter); @@ -333,7 +337,7 @@ static int32_t mgmtChildTableActionRestored() { return 0; } -static int32_t mgmtInitChildTables() { +static int32_t mnodeInitChildTables() { SChildTableObj tObj; tsChildTableUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj.info.type; @@ -344,13 +348,13 @@ static int32_t mgmtInitChildTables() { .maxRowSize = sizeof(SChildTableObj) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16) + TSDB_TABLE_ID_LEN + TSDB_CQ_SQL_SIZE, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_VAR_STRING, - .insertFp = mgmtChildTableActionInsert, - .deleteFp = mgmtChildTableActionDelete, - .updateFp = mgmtChildTableActionUpdate, - .encodeFp = mgmtChildTableActionEncode, - .decodeFp = mgmtChildTableActionDecode, - .destroyFp = mgmtChildTableActionDestroy, - .restoredFp = mgmtChildTableActionRestored + .insertFp = mnodeChildTableActionInsert, + .deleteFp = mnodeChildTableActionDelete, + .updateFp = mnodeChildTableActionUpdate, + .encodeFp = mnodeChildTableActionEncode, + .decodeFp = mnodeChildTableActionDecode, + .destroyFp = mnodeChildTableActionDestroy, + .restoredFp = mnodeChildTableActionRestored }; tsChildTableSdb = sdbOpenTable(&tableDesc); @@ -363,11 +367,11 @@ static int32_t mgmtInitChildTables() { return 0; } -static void mgmtCleanUpChildTables() { +static void mnodeCleanupChildTables() { sdbCloseTable(tsChildTableSdb); } -static void mgmtAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCtable) { +static void mnodeAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCtable) { pStable->numOfTables++; if (pStable->vgHash == NULL) { @@ -379,16 +383,16 @@ static void mgmtAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCta } } -static void mgmtRemoveTableFromStable(SSuperTableObj *pStable, SChildTableObj *pCtable) { +static void mnodeRemoveTableFromStable(SSuperTableObj *pStable, SChildTableObj *pCtable) { pStable->numOfTables--; if (pStable->vgHash == NULL) return; - SVgObj *pVgroup = mgmtGetVgroup(pCtable->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pCtable->vgId); if (pVgroup == NULL) { taosHashRemove(pStable->vgHash, (char *)&pCtable->vgId, sizeof(pCtable->vgId)); } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } static void mgmtDestroySuperTable(SSuperTableObj *pStable) { @@ -401,37 +405,37 @@ static void mgmtDestroySuperTable(SSuperTableObj *pStable) { tfree(pStable); } -static int32_t mgmtSuperTableActionDestroy(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionDestroy(SSdbOper *pOper) { mgmtDestroySuperTable(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionInsert(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionInsert(SSdbOper *pOper) { SSuperTableObj *pStable = pOper->pObj; - SDbObj *pDb = mgmtGetDbByTableId(pStable->info.tableId); + SDbObj *pDb = mnodeGetDbByTableId(pStable->info.tableId); if (pDb != NULL) { - mgmtAddSuperTableIntoDb(pDb); + mnodeAddSuperTableIntoDb(pDb); } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionDelete(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionDelete(SSdbOper *pOper) { SSuperTableObj *pStable = pOper->pObj; - SDbObj *pDb = mgmtGetDbByTableId(pStable->info.tableId); + SDbObj *pDb = mnodeGetDbByTableId(pStable->info.tableId); if (pDb != NULL) { - mgmtRemoveSuperTableFromDb(pDb); - mgmtDropAllChildTablesInStable((SSuperTableObj *)pStable); + mnodeRemoveSuperTableFromDb(pDb); + mnodeDropAllChildTablesInStable((SSuperTableObj *)pStable); } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionUpdate(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionUpdate(SSdbOper *pOper) { SSuperTableObj *pNew = pOper->pObj; - SSuperTableObj *pTable = mgmtGetSuperTable(pNew->info.tableId); + SSuperTableObj *pTable = mnodeGetSuperTable(pNew->info.tableId); if (pTable != pNew) { void *oldTableId = pTable->info.tableId; void *oldSchema = pTable->schema; @@ -442,11 +446,11 @@ static int32_t mgmtSuperTableActionUpdate(SSdbOper *pOper) { free(oldTableId); free(oldSchema); } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionEncode(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionEncode(SSdbOper *pOper) { SSuperTableObj *pStable = pOper->pObj; assert(pOper->pObj != NULL && pOper->rowData != NULL); @@ -469,7 +473,7 @@ static int32_t mgmtSuperTableActionEncode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionDecode(SSdbOper *pOper) { +static int32_t mnodeSuperTableActionDecode(SSdbOper *pOper) { assert(pOper->rowData != NULL); SSuperTableObj *pStable = (SSuperTableObj *) calloc(1, sizeof(SSuperTableObj)); if (pStable == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -496,11 +500,11 @@ static int32_t mgmtSuperTableActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtSuperTableActionRestored() { +static int32_t mnodeSuperTableActionRestored() { return 0; } -static int32_t mgmtInitSuperTables() { +static int32_t mnodeInitSuperTables() { SSuperTableObj tObj; tsSuperTableUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj.info.type; @@ -511,13 +515,13 @@ static int32_t mgmtInitSuperTables() { .maxRowSize = sizeof(SSuperTableObj) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16) + TSDB_TABLE_ID_LEN, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_VAR_STRING, - .insertFp = mgmtSuperTableActionInsert, - .deleteFp = mgmtSuperTableActionDelete, - .updateFp = mgmtSuperTableActionUpdate, - .encodeFp = mgmtSuperTableActionEncode, - .decodeFp = mgmtSuperTableActionDecode, - .destroyFp = mgmtSuperTableActionDestroy, - .restoredFp = mgmtSuperTableActionRestored + .insertFp = mnodeSuperTableActionInsert, + .deleteFp = mnodeSuperTableActionDelete, + .updateFp = mnodeSuperTableActionUpdate, + .encodeFp = mnodeSuperTableActionEncode, + .decodeFp = mnodeSuperTableActionDecode, + .destroyFp = mnodeSuperTableActionDestroy, + .restoredFp = mnodeSuperTableActionRestored }; tsSuperTableSdb = sdbOpenTable(&tableDesc); @@ -530,63 +534,63 @@ static int32_t mgmtInitSuperTables() { return 0; } -static void mgmtCleanUpSuperTables() { +static void mnodeCleanupSuperTables() { sdbCloseTable(tsSuperTableSdb); } -int32_t mgmtInitTables() { - int32_t code = mgmtInitSuperTables(); +int32_t mnodeInitTables() { + int32_t code = mnodeInitSuperTables(); if (code != TSDB_CODE_SUCCESS) { return code; } - code = mgmtInitChildTables(); + code = mnodeInitChildTables(); if (code != TSDB_CODE_SUCCESS) { return code; } - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_TABLES_META, mgmtProcessMultiTableMetaMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_TABLE, mgmtProcessCreateTableMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_TABLE, mgmtProcessDropTableMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_TABLE, mgmtProcessAlterTableMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_TABLE_META, mgmtProcessTableMetaMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_STABLE_VGROUP, mgmtProcessSuperTableVgroupMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_TABLES_META, mnodeProcessMultiTableMetaMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CREATE_TABLE, mnodeProcessCreateTableMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_DROP_TABLE, mnodeProcessDropTableMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_ALTER_TABLE, mnodeProcessAlterTableMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_TABLE_META, mnodeProcessTableMetaMsg); + mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_STABLE_VGROUP, mnodeProcessSuperTableVgroupMsg); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP, mgmtProcessCreateChildTableRsp); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_DROP_TABLE_RSP, mgmtProcessDropChildTableRsp); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_DROP_STABLE_RSP, mgmtProcessDropSuperTableRsp); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP, mgmtProcessAlterTableRsp); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP, mnodeProcessCreateChildTableRsp); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_DROP_TABLE_RSP, mnodeProcessDropChildTableRsp); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_DROP_STABLE_RSP, mnodeProcessDropSuperTableRsp); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP, mnodeProcessAlterTableRsp); - dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_TABLE, mgmtProcessTableCfgMsg); + mnodeAddPeerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_TABLE, mnodeProcessTableCfgMsg); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_TABLE, mgmtGetShowTableMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_TABLE, mgmtRetrieveShowTables); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_METRIC, mgmtGetShowSuperTableMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_METRIC, mgmtRetrieveShowSuperTables); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_TABLE, mnodeGetShowTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_TABLE, mnodeRetrieveShowTables); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_METRIC, mnodeGetShowSuperTableMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_METRIC, mnodeRetrieveShowSuperTables); return TSDB_CODE_SUCCESS; } -static void *mgmtGetChildTable(char *tableId) { +static void *mnodeGetChildTable(char *tableId) { return sdbGetRow(tsChildTableSdb, tableId); } -static void *mgmtGetSuperTable(char *tableId) { +static void *mnodeGetSuperTable(char *tableId) { return sdbGetRow(tsSuperTableSdb, tableId); } -static void *mgmtGetSuperTableByUid(uint64_t uid) { +static void *mnodeGetSuperTableByUid(uint64_t uid) { SSuperTableObj *pStable = NULL; void *pIter = NULL; while (1) { - pIter = mgmtGetNextSuperTable(pIter, &pStable); + pIter = mnodeGetNextSuperTable(pIter, &pStable); if (pStable == NULL) break; if (pStable->uid == uid) { sdbFreeIter(pIter); return pStable; } - mgmtDecTableRef(pStable); + mnodeDecTableRef(pStable); } sdbFreeIter(pIter); @@ -594,13 +598,13 @@ static void *mgmtGetSuperTableByUid(uint64_t uid) { return NULL; } -void *mgmtGetTable(char *tableId) { - void *pTable = mgmtGetSuperTable(tableId); +void *mnodeGetTable(char *tableId) { + void *pTable = mnodeGetSuperTable(tableId); if (pTable != NULL) { return pTable; } - pTable = mgmtGetChildTable(tableId); + pTable = mnodeGetChildTable(tableId); if (pTable != NULL) { return pTable; } @@ -608,15 +612,15 @@ void *mgmtGetTable(char *tableId) { return NULL; } -void *mgmtGetNextChildTable(void *pIter, SChildTableObj **pTable) { +void *mnodeGetNextChildTable(void *pIter, SChildTableObj **pTable) { return sdbFetchRow(tsChildTableSdb, pIter, (void **)pTable); } -void *mgmtGetNextSuperTable(void *pIter, SSuperTableObj **pTable) { +void *mnodeGetNextSuperTable(void *pIter, SSuperTableObj **pTable) { return sdbFetchRow(tsSuperTableSdb, pIter, (void **)pTable); } -void mgmtIncTableRef(void *p1) { +void mnodeIncTableRef(void *p1) { STableObj *pTable = (STableObj *)p1; if (pTable->type == TSDB_SUPER_TABLE) { sdbIncRef(tsSuperTableSdb, pTable); @@ -625,7 +629,7 @@ void mgmtIncTableRef(void *p1) { } } -void mgmtDecTableRef(void *p1) { +void mnodeDecTableRef(void *p1) { if (p1 == NULL) return; STableObj *pTable = (STableObj *)p1; @@ -636,9 +640,9 @@ void mgmtDecTableRef(void *p1) { } } -void mgmtCleanUpTables() { - mgmtCleanUpChildTables(); - mgmtCleanUpSuperTables(); +void mnodeCleanupTables() { + mnodeCleanupChildTables(); + mnodeCleanupSuperTables(); } // todo move to name.h, add length of table name @@ -655,113 +659,105 @@ static void mgmtExtractTableName(char* tableId, char* name) { } } -static void mgmtProcessCreateTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDb(pCreate->db); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCreate->db); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { mError("table:%s, failed to create, db not selected", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_DB_NOT_SELECTED); - return; + return TSDB_CODE_DB_NOT_SELECTED; } - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pCreate->tableId); + if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreate->tableId); if (pMsg->pTable != NULL && pMsg->retry == 0) { if (pCreate->getMeta) { mTrace("table:%s, continue to get meta", pCreate->tableId); - mgmtGetChildTableMeta(pMsg); + return mnodeGetChildTableMeta(pMsg); } else if (pCreate->igExists) { mTrace("table:%s, is already exist", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); + return TSDB_CODE_SUCCESS; } else { mError("table:%s, failed to create, table already exist", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_TABLE_ALREADY_EXIST); + return TSDB_CODE_TABLE_ALREADY_EXIST; } - return; } if (pCreate->numOfTags != 0) { mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->thandle); - mgmtProcessCreateSuperTableMsg(pMsg); + return mnodeProcessCreateSuperTableMsg(pMsg); } else { mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->thandle); - mgmtProcessCreateChildTableMsg(pMsg); + return mnodeProcessCreateChildTableMsg(pMsg); } } -static void mgmtProcessDropTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) { SCMDropTableMsg *pDrop = pMsg->pCont; - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDbByTableId(pDrop->tableId); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pDrop->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { mError("table:%s, failed to drop table, db not selected", pDrop->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_DB_NOT_SELECTED); - return; + return TSDB_CODE_DB_NOT_SELECTED; } - if (mgmtCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { + if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { mError("table:%s, failed to drop table, in monitor database", pDrop->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_MONITOR_DB_FORBIDDEN); - return; + return TSDB_CODE_MONITOR_DB_FORBIDDEN; } - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pDrop->tableId); + if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pDrop->tableId); if (pMsg->pTable == NULL) { if (pDrop->igNotExists) { mTrace("table:%s, table is not exist, think drop success", pDrop->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); - return; + return TSDB_CODE_SUCCESS; } else { mError("table:%s, failed to drop table, table not exist", pDrop->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_TABLE); - return; + return TSDB_CODE_INVALID_TABLE; } } if (pMsg->pTable->type == TSDB_SUPER_TABLE) { mPrint("table:%s, start to drop stable", pDrop->tableId); - mgmtProcessDropSuperTableMsg(pMsg); + return mnodeProcessDropSuperTableMsg(pMsg); } else { mPrint("table:%s, start to drop ctable", pDrop->tableId); - mgmtProcessDropChildTableMsg(pMsg); + return mnodeProcessDropChildTableMsg(pMsg); } } -static void mgmtProcessTableMetaMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->pCont; pInfo->createFlag = htons(pInfo->createFlag); mTrace("table:%s, table meta msg is received from thandle:%p, createFlag:%d", pInfo->tableId, pMsg->thandle, pInfo->createFlag); - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDbByTableId(pInfo->tableId); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pInfo->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { mError("table:%s, failed to get table meta, db not selected", pInfo->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_DB_NOT_SELECTED); - return; + return TSDB_CODE_DB_NOT_SELECTED; } - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pInfo->tableId); + if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pInfo->tableId); if (pMsg->pTable == NULL) { if (!pInfo->createFlag) { mError("table:%s, failed to get table meta, table not exist", pInfo->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_TABLE); + return TSDB_CODE_INVALID_TABLE; } else { - mgmtAutoCreateChildTable(pMsg); + return mgmtAutoCreateChildTable(pMsg); } } else { if (pMsg->pTable->type != TSDB_SUPER_TABLE) { - mgmtGetChildTableMeta(pMsg); + return mnodeGetChildTableMeta(pMsg); } else { - mgmtGetSuperTableMeta(pMsg); + return mnodeGetSuperTableMeta(pMsg); } } } -static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; SSuperTableObj *pStable = calloc(1, sizeof(SSuperTableObj)); if (pStable == NULL) { mError("table:%s, failed to create, no enough memory", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } pStable->info.tableId = strdup(pCreate->tableId); @@ -779,8 +775,7 @@ static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { if (pStable->schema == NULL) { free(pStable); mError("table:%s, failed to create, no schema input", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_TABLE); - return; + return TSDB_CODE_INVALID_TABLE; } memcpy(pStable->schema, pCreate->schema, numOfCols * sizeof(SSchema)); @@ -805,20 +800,20 @@ static void mgmtProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { if (code != TSDB_CODE_SUCCESS) { mgmtDestroySuperTable(pStable); mError("table:%s, failed to create, sdb error", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SDB_ERROR); + return TSDB_CODE_SDB_ERROR; } else { mLPrint("table:%s, is created, tags:%d fields:%d", pStable->info.tableId, pStable->numOfTags, pStable->numOfColumns); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SUCCESS); + return TSDB_CODE_SUCCESS; } } -static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessDropSuperTableMsg(SMnodeMsg *pMsg) { SSuperTableObj *pStable = (SSuperTableObj *)pMsg->pTable; if (pStable->numOfTables != 0) { SHashMutableIterator *pIter = taosHashCreateIter(pStable->vgHash); while (taosHashIterNext(pIter)) { int32_t *pVgId = taosHashIterGet(pIter); - SVgObj *pVgroup = mgmtGetVgroup(*pVgId); + SVgObj *pVgroup = mnodeGetVgroup(*pVgId); if (pVgroup == NULL) break; SMDDropSTableMsg *pDrop = rpcMallocCont(sizeof(SMDDropSTableMsg)); @@ -828,14 +823,14 @@ static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg) { mgmtExtractTableName(pStable->info.tableId, pDrop->tableId); mPrint("stable:%s, send drop stable msg to vgId:%d", pStable->info.tableId, pVgroup->vgId); - SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pVgroup); + SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pVgroup); SRpcMsg rpcMsg = {.pCont = pDrop, .contLen = sizeof(SMDDropSTableMsg), .msgType = TSDB_MSG_TYPE_MD_DROP_STABLE}; dnodeSendMsgToDnode(&ipSet, &rpcMsg); - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } taosHashDestroyIter(pIter); - mgmtDropAllChildTablesInStable(pStable); + mnodeDropAllChildTablesInStable(pStable); } SSdbOper oper = { @@ -846,10 +841,10 @@ static void mgmtProcessDropSuperTableMsg(SMnodeMsg *pMsg) { int32_t code = sdbDeleteRow(&oper); mLPrint("stable:%s, is dropped from sdb, result:%s", pStable->info.tableId, tstrerror(code)); - mgmtSendSimpleResp(pMsg->thandle, code); + return code; } -static int32_t mgmtFindSuperTableTagIndex(SSuperTableObj *pStable, const char *tagName) { +static int32_t mnodeFindSuperTableTagIndex(SSuperTableObj *pStable, const char *tagName) { SSchema *schema = (SSchema *) pStable->schema; for (int32_t tag = 0; tag < pStable->numOfTags; tag++) { if (strcasecmp(schema[pStable->numOfColumns + tag].name, tagName) == 0) { @@ -860,19 +855,19 @@ static int32_t mgmtFindSuperTableTagIndex(SSuperTableObj *pStable, const char *t return -1; } -static int32_t mgmtAddSuperTableTag(SSuperTableObj *pStable, SSchema schema[], int32_t ntags) { +static int32_t mnodeAddSuperTableTag(SSuperTableObj *pStable, SSchema schema[], int32_t ntags) { if (pStable->numOfTags + ntags > TSDB_MAX_TAGS) { mError("stable:%s, add tag, too many tags", pStable->info.tableId); return TSDB_CODE_TOO_MANY_TAGS; } for (int32_t i = 0; i < ntags; i++) { - if (mgmtFindSuperTableColumnIndex(pStable, schema[i].name) > 0) { + if (mnodeFindSuperTableColumnIndex(pStable, schema[i].name) > 0) { mError("stable:%s, add tag, column:%s already exist", pStable->info.tableId, schema[i].name); return TSDB_CODE_TAG_ALREAY_EXIST; } - if (mgmtFindSuperTableTagIndex(pStable, schema[i].name) > 0) { + if (mnodeFindSuperTableTagIndex(pStable, schema[i].name) > 0) { mError("stable:%s, add tag, tag:%s already exist", pStable->info.tableId, schema[i].name); return TSDB_CODE_FIELD_ALREAY_EXIST; } @@ -906,8 +901,8 @@ static int32_t mgmtAddSuperTableTag(SSuperTableObj *pStable, SSchema schema[], i return TSDB_CODE_SUCCESS; } -static int32_t mgmtDropSuperTableTag(SSuperTableObj *pStable, char *tagName) { - int32_t col = mgmtFindSuperTableTagIndex(pStable, tagName); +static int32_t mnodeDropSuperTableTag(SSuperTableObj *pStable, char *tagName) { + int32_t col = mnodeFindSuperTableTagIndex(pStable, tagName); if (col < 0) { mError("stable:%s, drop tag, tag:%s not exist", pStable->info.tableId, tagName); return TSDB_CODE_TAG_NOT_EXIST; @@ -933,8 +928,8 @@ static int32_t mgmtDropSuperTableTag(SSuperTableObj *pStable, char *tagName) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtModifySuperTableTagName(SSuperTableObj *pStable, char *oldTagName, char *newTagName) { - int32_t col = mgmtFindSuperTableTagIndex(pStable, oldTagName); +static int32_t mnodeModifySuperTableTagName(SSuperTableObj *pStable, char *oldTagName, char *newTagName) { + int32_t col = mnodeFindSuperTableTagIndex(pStable, oldTagName); if (col < 0) { mError("stable:%s, failed to modify table tag, oldName: %s, newName: %s", pStable->info.tableId, oldTagName, newTagName); return TSDB_CODE_TAG_NOT_EXIST; @@ -946,7 +941,7 @@ static int32_t mgmtModifySuperTableTagName(SSuperTableObj *pStable, char *oldTag return TSDB_CODE_COL_NAME_TOO_LONG; } - if (mgmtFindSuperTableTagIndex(pStable, newTagName) >= 0) { + if (mnodeFindSuperTableTagIndex(pStable, newTagName) >= 0) { return TSDB_CODE_TAG_ALREAY_EXIST; } @@ -969,7 +964,7 @@ static int32_t mgmtModifySuperTableTagName(SSuperTableObj *pStable, char *oldTag return TSDB_CODE_SUCCESS; } -static int32_t mgmtFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName) { +static int32_t mnodeFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName) { SSchema *schema = (SSchema *) pStable->schema; for (int32_t col = 0; col < pStable->numOfColumns; col++) { if (strcasecmp(schema[col].name, colName) == 0) { @@ -980,19 +975,19 @@ static int32_t mgmtFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colN return -1; } -static int32_t mgmtAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SSchema schema[], int32_t ncols) { +static int32_t mnodeAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SSchema schema[], int32_t ncols) { if (ncols <= 0) { mError("stable:%s, add column, ncols:%d <= 0", pStable->info.tableId); return TSDB_CODE_APP_ERROR; } for (int32_t i = 0; i < ncols; i++) { - if (mgmtFindSuperTableColumnIndex(pStable, schema[i].name) > 0) { + if (mnodeFindSuperTableColumnIndex(pStable, schema[i].name) > 0) { mError("stable:%s, add column, column:%s already exist", pStable->info.tableId, schema[i].name); return TSDB_CODE_FIELD_ALREAY_EXIST; } - if (mgmtFindSuperTableTagIndex(pStable, schema[i].name) > 0) { + if (mnodeFindSuperTableTagIndex(pStable, schema[i].name) > 0) { mError("stable:%s, add column, tag:%s already exist", pStable->info.tableId, schema[i].name); return TSDB_CODE_TAG_ALREAY_EXIST; } @@ -1013,10 +1008,10 @@ static int32_t mgmtAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SSc pStable->numOfColumns += ncols; pStable->sversion++; - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct != NULL) { pAcct->acctInfo.numOfTimeSeries += (ncols * pStable->numOfTables); - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } SSdbOper oper = { @@ -1034,8 +1029,8 @@ static int32_t mgmtAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SSc return TSDB_CODE_SUCCESS; } -static int32_t mgmtDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, char *colName) { - int32_t col = mgmtFindSuperTableColumnIndex(pStable, colName); +static int32_t mnodeDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, char *colName) { + int32_t col = mnodeFindSuperTableColumnIndex(pStable, colName); if (col <= 0) { mError("stable:%s, drop column, column:%s not exist", pStable->info.tableId, colName); return TSDB_CODE_FIELD_NOT_EXIST; @@ -1050,10 +1045,10 @@ static int32_t mgmtDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, ch int32_t schemaSize = sizeof(SSchema) * (pStable->numOfTags + pStable->numOfColumns); pStable->schema = realloc(pStable->schema, schemaSize); - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct != NULL) { pAcct->acctInfo.numOfTimeSeries -= pStable->numOfTables; - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } SSdbOper oper = { @@ -1072,8 +1067,8 @@ static int32_t mgmtDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, ch } // show super tables -static int32_t mgmtGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - SDbObj *pDb = mgmtGetDb(pShow->db); +static int32_t mnodeGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) return TSDB_CODE_DB_NOT_SELECTED; int32_t cols = 0; @@ -1118,12 +1113,12 @@ static int32_t mgmtGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, pShow->numOfRows = pDb->numOfSuperTables; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return 0; } // retrieve super tables -int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; char * pWrite; int32_t cols = 0; @@ -1131,7 +1126,7 @@ int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, v char prefix[20] = {0}; int32_t prefixLen; - SDbObj *pDb = mgmtGetDb(pShow->db); + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) return 0; strcpy(prefix, pDb->name); @@ -1142,10 +1137,10 @@ int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, v char stableName[TSDB_TABLE_NAME_LEN + 1] = {0}; while (numOfRows < rows) { - pShow->pIter = mgmtGetNextSuperTable(pShow->pIter, &pTable); + pShow->pIter = mnodeGetNextSuperTable(pShow->pIter, &pTable); if (pTable == NULL) break; if (strncmp(pTable->info.tableId, prefix, prefixLen)) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -1153,7 +1148,7 @@ int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, v mgmtExtractTableName(pTable->info.tableId, stableName); if (pShow->payloadLen > 0 && patternMatch(pShow->payload, stableName, TSDB_TABLE_NAME_LEN, &info) != TSDB_PATTERN_MATCH) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -1185,16 +1180,16 @@ int32_t mgmtRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, v cols++; numOfRows++; - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } pShow->numOfReads += numOfRows; - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return numOfRows; } -void mgmtDropAllSuperTables(SDbObj *pDropDb) { +void mnodeDropAllSuperTables(SDbObj *pDropDb) { void * pIter= NULL; int32_t numOfTables = 0; int32_t dbNameLen = strlen(pDropDb->name); @@ -1203,7 +1198,7 @@ void mgmtDropAllSuperTables(SDbObj *pDropDb) { mPrint("db:%s, all super tables will be dropped from sdb", pDropDb->name); while (1) { - pIter = mgmtGetNextSuperTable(pIter, &pTable); + pIter = mnodeGetNextSuperTable(pIter, &pTable); if (pTable == NULL) break; if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) { @@ -1216,7 +1211,7 @@ void mgmtDropAllSuperTables(SDbObj *pDropDb) { numOfTables ++; } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } sdbFreeIter(pIter); @@ -1224,7 +1219,7 @@ void mgmtDropAllSuperTables(SDbObj *pDropDb) { mPrint("db:%s, all super tables:%d is dropped from sdb", pDropDb->name, numOfTables); } -static int32_t mgmtSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTable) { +static int32_t mnodeSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTable) { int32_t numOfCols = pTable->numOfColumns + pTable->numOfTags; assert(numOfCols <= TSDB_MAX_COLUMNS); @@ -1239,7 +1234,7 @@ static int32_t mgmtSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTa return (pTable->numOfColumns + pTable->numOfTags) * sizeof(SSchema); } -static void mgmtGetSuperTableMeta(SMnodeMsg *pMsg) { +static int32_t mnodeGetSuperTableMeta(SMnodeMsg *pMsg) { SSuperTableObj *pTable = (SSuperTableObj *)pMsg->pTable; STableMetaMsg *pMeta = rpcMallocCont(sizeof(STableMetaMsg) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16)); pMeta->uid = htobe64(pTable->uid); @@ -1249,21 +1244,19 @@ static void mgmtGetSuperTableMeta(SMnodeMsg *pMsg) { pMeta->numOfTags = (uint8_t)pTable->numOfTags; pMeta->numOfColumns = htons((int16_t)pTable->numOfColumns); pMeta->tableType = pTable->info.type; - pMeta->contLen = sizeof(STableMetaMsg) + mgmtSetSchemaFromSuperTable(pMeta->schema, pTable); + pMeta->contLen = sizeof(STableMetaMsg) + mnodeSetSchemaFromSuperTable(pMeta->schema, pTable); strncpy(pMeta->tableId, pTable->info.tableId, TSDB_TABLE_ID_LEN); - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .pCont = pMeta, - .contLen = pMeta->contLen, - }; pMeta->contLen = htons(pMeta->contLen); - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pMeta; + pMsg->rpcRsp.len = pMeta->contLen; + mTrace("stable:%s, uid:%" PRIu64 " table meta is retrieved", pTable->info.tableId, pTable->uid); + return TSDB_CODE_SUCCESS; } -static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { SCMSTableVgroupMsg *pInfo = pMsg->pCont; int32_t numOfTable = htonl(pInfo->numOfTables); @@ -1271,17 +1264,16 @@ static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { int32_t contLen = sizeof(SCMSTableVgroupRspMsg) + 32 * sizeof(SCMVgroupInfo) + sizeof(SVgroupsInfo); for (int32_t i = 0; i < numOfTable; ++i) { char *stableName = (char*)pInfo + sizeof(SCMSTableVgroupMsg) + (TSDB_TABLE_ID_LEN) * i; - SSuperTableObj *pTable = mgmtGetSuperTable(stableName); + SSuperTableObj *pTable = mnodeGetSuperTable(stableName); if (pTable->vgHash != NULL) { contLen += (taosHashGetSize(pTable->vgHash) * sizeof(SCMVgroupInfo) + sizeof(SVgroupsInfo)); } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } SCMSTableVgroupRspMsg *pRsp = rpcMallocCont(contLen); if (pRsp == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } pRsp->numOfTables = htonl(numOfTable); @@ -1289,14 +1281,14 @@ static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { for (int32_t i = 0; i < numOfTable; ++i) { char *stableName = (char*)pInfo + sizeof(SCMSTableVgroupMsg) + (TSDB_TABLE_ID_LEN) * i; - SSuperTableObj *pTable = mgmtGetSuperTable(stableName); + SSuperTableObj *pTable = mnodeGetSuperTable(stableName); SVgroupsInfo *pVgroupInfo = (SVgroupsInfo *)msg; SHashMutableIterator *pIter = taosHashCreateIter(pTable->vgHash); int32_t vgSize = 0; while (taosHashIterNext(pIter)) { int32_t *pVgId = taosHashIterGet(pIter); - SVgObj * pVgroup = mgmtGetVgroup(*pVgId); + SVgObj * pVgroup = mnodeGetVgroup(*pVgId); if (pVgroup == NULL) continue; pVgroupInfo->vgroups[vgSize].vgId = htonl(pVgroup->vgId); @@ -1311,7 +1303,7 @@ static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { } vgSize++; - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } taosHashDestroyIter(pIter); @@ -1322,14 +1314,13 @@ static void mgmtProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { msg += sizeof(SVgroupsInfo) + vgSize * sizeof(SCMVgroupInfo); } - SRpcMsg rpcRsp = {0}; - rpcRsp.handle = pMsg->thandle; - rpcRsp.pCont = pRsp; - rpcRsp.contLen = msg - (char*) pRsp; - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pRsp; + pMsg->rpcRsp.len = msg - (char *)pRsp; + + return TSDB_CODE_SUCCESS; } -static void mgmtProcessDropSuperTableRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessDropSuperTableRsp(SRpcMsg *rpcMsg) { mPrint("drop stable rsp received, result:%s", tstrerror(rpcMsg->code)); } @@ -1400,7 +1391,7 @@ static void *mgmtBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableOb return pCreate; } -static SChildTableObj* mgmtDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgObj *pVgroup, int32_t tid) { +static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgObj *pVgroup, int32_t tid) { SChildTableObj *pTable = calloc(1, sizeof(SChildTableObj)); if (pTable == NULL) { mError("table:%s, failed to alloc memory", pCreate->tableId); @@ -1421,14 +1412,14 @@ static SChildTableObj* mgmtDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgObj if (pTable->info.type == TSDB_CHILD_TABLE) { STagData *pTagData = (STagData *) pCreate->schema; // it is a tag key - SSuperTableObj *pSuperTable = mgmtGetSuperTable(pTagData->name); + SSuperTableObj *pSuperTable = mnodeGetSuperTable(pTagData->name); if (pSuperTable == NULL) { mError("table:%s, corresponding super table:%s does not exist", pCreate->tableId, pTagData->name); free(pTable); terrno = TSDB_CODE_INVALID_TABLE; return NULL; } - mgmtDecTableRef(pSuperTable); + mnodeDecTableRef(pSuperTable); pTable->suid = pSuperTable->uid; pTable->uid = (((uint64_t)pTable->vgId) << 40) + ((((uint64_t)pTable->sid) & ((1ul << 24) - 1ul)) << 16) + @@ -1487,20 +1478,18 @@ static SChildTableObj* mgmtDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgObj return pTable; } -static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreate = pMsg->pCont; int32_t code = grantCheck(TSDB_GRANT_TIMESERIES); if (code != TSDB_CODE_SUCCESS) { mError("table:%s, failed to create, grant timeseries failed", pCreate->tableId); - mgmtSendSimpleResp(pMsg->thandle, code); - return; + return code; } - SVgObj *pVgroup = mgmtGetAvailableVgroup(pMsg->pDb); + SVgObj *pVgroup = mnodeGetAvailableVgroup(pMsg->pDb); if (pVgroup == NULL) { mTrace("table:%s, start to create a new vgroup", pCreate->tableId); - mgmtCreateVgroup(mgmtCloneQueuedMsg(pMsg), pMsg->pDb); - return; + return mnodeCreateVgroup(pMsg, pMsg->pDb); } if (pMsg->retry == 0) { @@ -1508,39 +1497,34 @@ static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg) { int32_t sid = taosAllocateId(pVgroup->idPool); if (sid <= 0) { mTrace("tables:%s, no enough sid in vgId:%d", pCreate->tableId, pVgroup->vgId); - mgmtCreateVgroup(mgmtCloneQueuedMsg(pMsg), pMsg->pDb); - return; + return mnodeCreateVgroup(pMsg, pMsg->pDb); } - pMsg->pTable = (STableObj *)mgmtDoCreateChildTable(pCreate, pVgroup, sid); + pMsg->pTable = (STableObj *)mnodeDoCreateChildTable(pCreate, pVgroup, sid); if (pMsg->pTable == NULL) { - mgmtSendSimpleResp(pMsg->thandle, terrno); - return; + return terrno; } - mgmtIncTableRef(pMsg->pTable); + mnodeIncTableRef(pMsg->pTable); } } else { - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pCreate->tableId); + if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreate->tableId); } if (pMsg->pTable == NULL) { - mgmtSendSimpleResp(pMsg->thandle, terrno); - return; + return terrno; } SMDCreateTableMsg *pMDCreate = mgmtBuildCreateChildTableMsg(pCreate, (SChildTableObj *) pMsg->pTable); if (pMDCreate == NULL) { - mgmtSendSimpleResp(pMsg->thandle, terrno); - return; + return terrno; } - SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pVgroup); - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); - newMsg->ahandle = pMsg->pTable; - newMsg->maxRetry = 10; + SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pVgroup); + pMsg->ahandle = pMsg->pTable; + pMsg->maxRetry = 10; SRpcMsg rpcMsg = { - .handle = newMsg, + .handle = pMsg, .pCont = pMDCreate, .contLen = htonl(pMDCreate->contLen), .code = 0, @@ -1548,22 +1532,22 @@ static void mgmtProcessCreateChildTableMsg(SMnodeMsg *pMsg) { }; dnodeSendMsgToDnode(&ipSet, &rpcMsg); + + return TSDB_CODE_ACTION_IN_PROGRESS; } -static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg) { SChildTableObj *pTable = (SChildTableObj *)pMsg->pTable; - if (pMsg->pVgroup == NULL) pMsg->pVgroup = mgmtGetVgroup(pTable->vgId); + if (pMsg->pVgroup == NULL) pMsg->pVgroup = mnodeGetVgroup(pTable->vgId); if (pMsg->pVgroup == NULL) { mError("table:%s, failed to drop ctable, vgroup not exist", pTable->info.tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_OTHERS); - return; + return TSDB_CODE_OTHERS; } SMDDropTableMsg *pDrop = rpcMallocCont(sizeof(SMDDropTableMsg)); if (pDrop == NULL) { mError("table:%s, failed to drop ctable, no enough memory", pTable->info.tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } strcpy(pDrop->tableId, pTable->info.tableId); @@ -1572,13 +1556,12 @@ static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg) { pDrop->sid = htonl(pTable->sid); pDrop->uid = htobe64(pTable->uid); - SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pMsg->pVgroup); + SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pMsg->pVgroup); mPrint("table:%s, send drop ctable msg", pDrop->tableId); - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); - newMsg->ahandle = pMsg->pTable; + pMsg->ahandle = pMsg->pTable; SRpcMsg rpcMsg = { - .handle = newMsg, + .handle = pMsg, .pCont = pDrop, .contLen = sizeof(SMDDropTableMsg), .code = 0, @@ -1586,13 +1569,15 @@ static void mgmtProcessDropChildTableMsg(SMnodeMsg *pMsg) { }; dnodeSendMsgToDnode(&ipSet, &rpcMsg); + + return TSDB_CODE_ACTION_IN_PROGRESS; } -static int32_t mgmtModifyChildTableTagValue(SChildTableObj *pTable, char *tagName, char *nContent) { +static int32_t mnodeModifyChildTableTagValue(SChildTableObj *pTable, char *tagName, char *nContent) { return TSDB_CODE_OPS_NOT_SUPPORT; } -static int32_t mgmtFindNormalTableColumnIndex(SChildTableObj *pTable, char *colName) { +static int32_t mnodeFindNormalTableColumnIndex(SChildTableObj *pTable, char *colName) { SSchema *schema = (SSchema *) pTable->schema; for (int32_t col = 0; col < pTable->numOfColumns; col++) { if (strcasecmp(schema[col].name, colName) == 0) { @@ -1603,14 +1588,14 @@ static int32_t mgmtFindNormalTableColumnIndex(SChildTableObj *pTable, char *colN return -1; } -static int32_t mgmtAddNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, SSchema schema[], int32_t ncols) { +static int32_t mnodeAddNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, SSchema schema[], int32_t ncols) { if (ncols <= 0) { mError("table:%s, add column, ncols:%d <= 0", pTable->info.tableId); return TSDB_CODE_APP_ERROR; } for (int32_t i = 0; i < ncols; i++) { - if (mgmtFindNormalTableColumnIndex(pTable, schema[i].name) > 0) { + if (mnodeFindNormalTableColumnIndex(pTable, schema[i].name) > 0) { mError("table:%s, add column, column:%s already exist", pTable->info.tableId, schema[i].name); return TSDB_CODE_FIELD_ALREAY_EXIST; } @@ -1629,10 +1614,10 @@ static int32_t mgmtAddNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, SSc pTable->numOfColumns += ncols; pTable->sversion++; - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct != NULL) { pAcct->acctInfo.numOfTimeSeries += ncols; - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } SSdbOper oper = { @@ -1650,8 +1635,8 @@ static int32_t mgmtAddNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, SSc return TSDB_CODE_SUCCESS; } -static int32_t mgmtDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, char *colName) { - int32_t col = mgmtFindNormalTableColumnIndex(pTable, colName); +static int32_t mnodeDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, char *colName) { + int32_t col = mnodeFindNormalTableColumnIndex(pTable, colName); if (col <= 0) { mError("table:%s, drop column, column:%s not exist", pTable->info.tableId, colName); return TSDB_CODE_FIELD_NOT_EXIST; @@ -1661,10 +1646,10 @@ static int32_t mgmtDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, ch pTable->numOfColumns--; pTable->sversion++; - SAcctObj *pAcct = mgmtGetAcct(pDb->acct); + SAcctObj *pAcct = mnodeGetAcct(pDb->acct); if (pAcct != NULL) { pAcct->acctInfo.numOfTimeSeries--; - mgmtDecAcctRef(pAcct); + mnodeDecAcctRef(pAcct); } SSdbOper oper = { @@ -1682,7 +1667,7 @@ static int32_t mgmtDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, ch return TSDB_CODE_SUCCESS; } -static int32_t mgmtSetSchemaFromNormalTable(SSchema *pSchema, SChildTableObj *pTable) { +static int32_t mnodeSetSchemaFromNormalTable(SSchema *pSchema, SChildTableObj *pTable) { int32_t numOfCols = pTable->numOfColumns; for (int32_t i = 0; i < numOfCols; ++i) { strcpy(pSchema->name, pTable->schema[i].name); @@ -1695,7 +1680,7 @@ static int32_t mgmtSetSchemaFromNormalTable(SSchema *pSchema, SChildTableObj *pT return numOfCols * sizeof(SSchema); } -static int32_t mgmtDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { +static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { SDbObj *pDb = pMsg->pDb; SChildTableObj *pTable = (SChildTableObj *)pMsg->pTable; @@ -1710,28 +1695,28 @@ static int32_t mgmtDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { pMeta->tversion = htons(pTable->superTable->tversion); pMeta->numOfTags = (int8_t)pTable->superTable->numOfTags; pMeta->numOfColumns = htons((int16_t)pTable->superTable->numOfColumns); - pMeta->contLen = sizeof(STableMetaMsg) + mgmtSetSchemaFromSuperTable(pMeta->schema, pTable->superTable); + pMeta->contLen = sizeof(STableMetaMsg) + mnodeSetSchemaFromSuperTable(pMeta->schema, pTable->superTable); } else { pMeta->sversion = htons(pTable->sversion); pMeta->tversion = 0; pMeta->numOfTags = 0; pMeta->numOfColumns = htons((int16_t)pTable->numOfColumns); - pMeta->contLen = sizeof(STableMetaMsg) + mgmtSetSchemaFromNormalTable(pMeta->schema, pTable); + pMeta->contLen = sizeof(STableMetaMsg) + mnodeSetSchemaFromNormalTable(pMeta->schema, pTable); } - if (pMsg->pVgroup == NULL) pMsg->pVgroup = mgmtGetVgroup(pTable->vgId); + if (pMsg->pVgroup == NULL) pMsg->pVgroup = mnodeGetVgroup(pTable->vgId); if (pMsg->pVgroup == NULL) { mError("table:%s, failed to get table meta, db not selected", pTable->info.tableId); return TSDB_CODE_INVALID_VGROUP_ID; } for (int32_t i = 0; i < pMsg->pVgroup->numOfVnodes; ++i) { - SDnodeObj *pDnode = mgmtGetDnode(pMsg->pVgroup->vnodeGid[i].dnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pMsg->pVgroup->vnodeGid[i].dnodeId); if (pDnode == NULL) break; strcpy(pMeta->vgroup.ipAddr[i].fqdn, pDnode->dnodeFqdn); pMeta->vgroup.ipAddr[i].port = htons(pDnode->dnodePort + TSDB_PORT_DNODESHELL); pMeta->vgroup.numOfIps++; - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } pMeta->vgroup.vgId = htonl(pMsg->pVgroup->vgId); @@ -1740,7 +1725,7 @@ static int32_t mgmtDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { return TSDB_CODE_SUCCESS; } -static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { +static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->pCont; STagData* pTag = (STagData*)pInfo->tags; @@ -1748,8 +1733,7 @@ static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { SCMCreateTableMsg *pCreateMsg = rpcMallocCont(contLen); if (pCreateMsg == NULL) { mError("table:%s, failed to create table while get meta info, no enough memory", pInfo->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } strncpy(pCreateMsg->tableId, pInfo->tableId, tListLen(pInfo->tableId)); @@ -1760,34 +1744,33 @@ static void mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { memcpy(pCreateMsg->schema, pInfo->tags, contLen - sizeof(SCMCreateTableMsg)); - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(pMsg); - newMsg->msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; - newMsg->pCont = pCreateMsg; + pMsg->msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; + rpcFreeCont(pMsg->pCont); + pMsg->pCont = pCreateMsg; + pMsg->contLen = contLen; mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, pInfo->tags); - mgmtAddToShellQueue(newMsg); + + return TSDB_CODE_ACTION_NEED_REPROCESSED; } -static void mgmtGetChildTableMeta(SMnodeMsg *pMsg) { +static int32_t mnodeGetChildTableMeta(SMnodeMsg *pMsg) { STableMetaMsg *pMeta = rpcMallocCont(sizeof(STableMetaMsg) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16)); if (pMeta == NULL) { mError("table:%s, failed to get table meta, no enough memory", pMsg->pTable->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } - mgmtDoGetChildTableMeta(pMsg, pMeta); + mnodeDoGetChildTableMeta(pMsg, pMeta); - SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .pCont = pMeta, - .contLen = pMeta->contLen, - }; + pMsg->rpcRsp.len = pMeta->contLen; + pMsg->rpcRsp.rsp = pMeta; pMeta->contLen = htons(pMeta->contLen); - rpcSendResponse(&rpcRsp); + + return TSDB_CODE_SUCCESS; } -void mgmtDropAllChildTablesInVgroups(SVgObj *pVgroup) { +void mnodeDropAllChildTablesInVgroups(SVgObj *pVgroup) { void * pIter = NULL; int32_t numOfTables = 0; SChildTableObj *pTable = NULL; @@ -1795,7 +1778,7 @@ void mgmtDropAllChildTablesInVgroups(SVgObj *pVgroup) { mPrint("vgId:%d, all child tables will be dropped from sdb", pVgroup->vgId); while (1) { - pIter = mgmtGetNextChildTable(pIter, &pTable); + pIter = mnodeGetNextChildTable(pIter, &pTable); if (pTable == NULL) break; if (pTable->vgId == pVgroup->vgId) { @@ -1807,7 +1790,7 @@ void mgmtDropAllChildTablesInVgroups(SVgObj *pVgroup) { sdbDeleteRow(&oper); numOfTables++; } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } sdbFreeIter(pIter); @@ -1815,7 +1798,7 @@ void mgmtDropAllChildTablesInVgroups(SVgObj *pVgroup) { mPrint("vgId:%d, all child tables is dropped from sdb", pVgroup->vgId); } -void mgmtDropAllChildTables(SDbObj *pDropDb) { +void mnodeDropAllChildTables(SDbObj *pDropDb) { void * pIter = NULL; int32_t numOfTables = 0; int32_t dbNameLen = strlen(pDropDb->name); @@ -1824,7 +1807,7 @@ void mgmtDropAllChildTables(SDbObj *pDropDb) { mPrint("db:%s, all child tables will be dropped from sdb", pDropDb->name); while (1) { - pIter = mgmtGetNextChildTable(pIter, &pTable); + pIter = mnodeGetNextChildTable(pIter, &pTable); if (pTable == NULL) break; if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) { @@ -1836,7 +1819,7 @@ void mgmtDropAllChildTables(SDbObj *pDropDb) { sdbDeleteRow(&oper); numOfTables++; } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } sdbFreeIter(pIter); @@ -1844,7 +1827,7 @@ void mgmtDropAllChildTables(SDbObj *pDropDb) { mPrint("db:%s, all child tables:%d is dropped from sdb", pDropDb->name, numOfTables); } -static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) { +static void mnodeDropAllChildTablesInStable(SSuperTableObj *pStable) { void * pIter = NULL; int32_t numOfTables = 0; SChildTableObj *pTable = NULL; @@ -1852,7 +1835,7 @@ static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) { mPrint("stable:%s, all child tables will dropped from sdb", pStable->info.tableId, numOfTables); while (1) { - pIter = mgmtGetNextChildTable(pIter, &pTable); + pIter = mnodeGetNextChildTable(pIter, &pTable); if (pTable == NULL) break; if (pTable->superTable == pStable) { @@ -1865,7 +1848,7 @@ static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) { numOfTables++; } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } sdbFreeIter(pIter); @@ -1873,42 +1856,39 @@ static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) { mPrint("stable:%s, all child tables:%d is dropped from sdb", pStable->info.tableId, numOfTables); } -static SChildTableObj* mgmtGetTableByPos(int32_t vnode, int32_t sid) { - SVgObj *pVgroup = mgmtGetVgroup(vnode); +static SChildTableObj* mnodeGetTableByPos(int32_t vnode, int32_t sid) { + SVgObj *pVgroup = mnodeGetVgroup(vnode); if (pVgroup == NULL) return NULL; SChildTableObj *pTable = pVgroup->tableList[sid - 1]; - mgmtIncTableRef((STableObj *)pTable); + mnodeIncTableRef((STableObj *)pTable); - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); return pTable; } -static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg) { - SDMConfigTableMsg *pCfg = (SDMConfigTableMsg *) rpcMsg->pCont; +static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { + SDMConfigTableMsg *pCfg = (SDMConfigTableMsg *) pMsg->pCont; pCfg->dnode = htonl(pCfg->dnode); pCfg->vnode = htonl(pCfg->vnode); pCfg->sid = htonl(pCfg->sid); mTrace("dnode:%s, vnode:%d, sid:%d, receive table config msg", taosIpStr(pCfg->dnode), pCfg->vnode, pCfg->sid); - SChildTableObj *pTable = mgmtGetTableByPos(pCfg->vnode, pCfg->sid); + SChildTableObj *pTable = mnodeGetTableByPos(pCfg->vnode, pCfg->sid); if (pTable == NULL) { mError("dnode:%s, vnode:%d, sid:%d, table not found", taosIpStr(pCfg->dnode), pCfg->vnode, pCfg->sid); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_NOT_ACTIVE_TABLE); - return; + return TSDB_CODE_NOT_ACTIVE_TABLE; } - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_SUCCESS); - SMDCreateTableMsg *pMDCreate = NULL; pMDCreate = mgmtBuildCreateChildTableMsg(NULL, (SChildTableObj *) pTable); if (pMDCreate == NULL) { - mgmtDecTableRef(pTable); - return; + mnodeDecTableRef(pTable); + return terrno; } - SDnodeObj *pDnode = mgmtGetDnode(pCfg->dnode); - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pDnode->dnodeEp); + SDnodeObj *pDnode = mnodeGetDnode(pCfg->dnode); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pDnode->dnodeEp); SRpcMsg rpcRsp = { .handle = NULL, .pCont = pMDCreate, @@ -1918,32 +1898,33 @@ static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg) { }; dnodeSendMsgToDnode(&ipSet, &rpcRsp); - mgmtDecTableRef(pTable); - mgmtDecDnodeRef(pDnode); + mnodeDecTableRef(pTable); + mnodeDecDnodeRef(pDnode); + + return TSDB_CODE_SUCCESS; } // handle drop child response -static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SMnodeMsg *queueMsg = rpcMsg->handle; - queueMsg->received++; + SMnodeMsg *mnodeMsg = rpcMsg->handle; + mnodeMsg->received++; - SChildTableObj *pTable = queueMsg->ahandle; - mPrint("table:%s, drop table rsp received, thandle:%p result:%s", pTable->info.tableId, queueMsg->thandle, tstrerror(rpcMsg->code)); + SChildTableObj *pTable = mnodeMsg->ahandle; + mPrint("table:%s, drop table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, tstrerror(rpcMsg->code)); if (rpcMsg->code != TSDB_CODE_SUCCESS) { mError("table:%s, failed to drop in dnode, reason:%s", pTable->info.tableId, tstrerror(rpcMsg->code)); - mgmtSendSimpleResp(queueMsg->thandle, rpcMsg->code); - free(queueMsg); - mgmtDecTableRef(pTable); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, rpcMsg->code); + mnodeDecTableRef(pTable); return; } - if (queueMsg->pVgroup == NULL) queueMsg->pVgroup = mgmtGetVgroup(pTable->vgId); - if (queueMsg->pVgroup == NULL) { + if (mnodeMsg->pVgroup == NULL) mnodeMsg->pVgroup = mnodeGetVgroup(pTable->vgId); + if (mnodeMsg->pVgroup == NULL) { mError("table:%s, failed to get vgroup", pTable->info.tableId); - mgmtSendSimpleResp(queueMsg->thandle, TSDB_CODE_INVALID_VGROUP_ID); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, TSDB_CODE_INVALID_VGROUP_ID); return; } @@ -1956,39 +1937,38 @@ static void mgmtProcessDropChildTableRsp(SRpcMsg *rpcMsg) { int32_t code = sdbDeleteRow(&oper); if (code != TSDB_CODE_SUCCESS) { mError("table:%s, update ctables sdb error", pTable->info.tableId); - mgmtSendSimpleResp(queueMsg->thandle, TSDB_CODE_SDB_ERROR); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, TSDB_CODE_SDB_ERROR); return; } - if (queueMsg->pVgroup->numOfTables <= 0) { - mPrint("vgId:%d, all tables is dropped, drop vgroup", queueMsg->pVgroup->vgId); - mgmtDropVgroup(queueMsg->pVgroup, NULL); + if (mnodeMsg->pVgroup->numOfTables <= 0) { + mPrint("vgId:%d, all tables is dropped, drop vgroup", mnodeMsg->pVgroup->vgId); + mnodeDropVgroup(mnodeMsg->pVgroup, NULL); } - mgmtSendSimpleResp(queueMsg->thandle, TSDB_CODE_SUCCESS); - mgmtFreeQueuedMsg(queueMsg); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, TSDB_CODE_SUCCESS); } // handle create table response from dnode // if failed, drop the table cached -static void mgmtProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SMnodeMsg *queueMsg = rpcMsg->handle; - queueMsg->received++; + SMnodeMsg *mnodeMsg = rpcMsg->handle; + mnodeMsg->received++; - SChildTableObj *pTable = queueMsg->ahandle; - mTrace("table:%s, create table rsp received, thandle:%p result:%s", pTable->info.tableId, queueMsg->thandle, + SChildTableObj *pTable = mnodeMsg->ahandle; + mTrace("table:%s, create table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, tstrerror(rpcMsg->code)); if (rpcMsg->code != TSDB_CODE_SUCCESS) { - if (queueMsg->retry++ < queueMsg->maxRetry) { + if (mnodeMsg->retry++ < mnodeMsg->maxRetry) { mTrace("table:%s, create table rsp received, retry:%d thandle:%p result:%s", pTable->info.tableId, - queueMsg->retry, queueMsg->thandle, tstrerror(rpcMsg->code)); - mgmtDealyedAddToShellQueue(queueMsg); + mnodeMsg->retry, mnodeMsg->thandle, tstrerror(rpcMsg->code)); + dnodeDelayReprocessMnodeWriteMsg(mnodeMsg); } else { mError("table:%s, failed to create in dnode, thandle:%p result:%s", pTable->info.tableId, - queueMsg->thandle, tstrerror(rpcMsg->code)); + mnodeMsg->thandle, tstrerror(rpcMsg->code)); SSdbOper oper = { .type = SDB_OPER_GLOBAL, @@ -1997,38 +1977,35 @@ static void mgmtProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { }; sdbDeleteRow(&oper); - mgmtSendSimpleResp(queueMsg->thandle, rpcMsg->code); - mgmtFreeQueuedMsg(queueMsg); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, rpcMsg->code); } } else { - mTrace("table:%s, created in dnode, thandle:%p result:%s", pTable->info.tableId, queueMsg->thandle, + mTrace("table:%s, created in dnode, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, tstrerror(rpcMsg->code)); - SCMCreateTableMsg *pCreate = queueMsg->pCont; + SCMCreateTableMsg *pCreate = mnodeMsg->pCont; if (pCreate->getMeta) { mTrace("table:%s, continue to get meta", pTable->info.tableId); - queueMsg->retry = 0; - mgmtAddToShellQueue(queueMsg); + mnodeMsg->retry = 0; + dnodeReprocessMnodeWriteMsg(mnodeMsg); } else { - mgmtSendSimpleResp(queueMsg->thandle, rpcMsg->code); - mgmtFreeQueuedMsg(queueMsg); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, rpcMsg->code); } } } // not implemented yet -static void mgmtProcessAlterTableRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessAlterTableRsp(SRpcMsg *rpcMsg) { mTrace("alter table rsp received, handle:%p code:%s", rpcMsg->handle, tstrerror(rpcMsg->code)); } -static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { SCMMultiTableInfoMsg *pInfo = pMsg->pCont; pInfo->numOfTables = htonl(pInfo->numOfTables); int32_t totalMallocLen = 4 * 1024 * 1024; // first malloc 4 MB, subsequent reallocation as twice SMultiTableMeta *pMultiMeta = rpcMallocCont(totalMallocLen); if (pMultiMeta == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - return; + return TSDB_CODE_SERV_OUT_OF_MEMORY; } pMultiMeta->contLen = sizeof(SMultiTableMeta); @@ -2036,12 +2013,12 @@ static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { for (int32_t t = 0; t < pInfo->numOfTables; ++t) { char * tableId = (char *)(pInfo->tableIds + t * TSDB_TABLE_ID_LEN + 1); - SChildTableObj *pTable = mgmtGetChildTable(tableId); + SChildTableObj *pTable = mnodeGetChildTable(tableId); if (pTable == NULL) continue; - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDbByTableId(tableId); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(tableId); if (pMsg->pDb == NULL) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -2050,35 +2027,33 @@ static void mgmtProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { totalMallocLen *= 2; pMultiMeta = rpcReallocCont(pMultiMeta, totalMallocLen); if (pMultiMeta == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SERV_OUT_OF_MEMORY); - mgmtDecTableRef(pTable); - return; + mnodeDecTableRef(pTable); + return TSDB_CODE_SERV_OUT_OF_MEMORY; } else { t--; - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } } STableMetaMsg *pMeta = (STableMetaMsg *)(pMultiMeta->metas + pMultiMeta->contLen); - int32_t code = mgmtDoGetChildTableMeta(pMsg, pMeta); + int32_t code = mnodeDoGetChildTableMeta(pMsg, pMeta); if (code == TSDB_CODE_SUCCESS) { pMultiMeta->numOfTables ++; pMultiMeta->contLen += pMeta->contLen; } - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } - SRpcMsg rpcRsp = {0}; - rpcRsp.handle = pMsg->thandle; - rpcRsp.pCont = pMultiMeta; - rpcRsp.contLen = pMultiMeta->contLen; - rpcSendResponse(&rpcRsp); + pMsg->rpcRsp.rsp = pMultiMeta; + pMsg->rpcRsp.len = pMultiMeta->contLen; + + return TSDB_CODE_SUCCESS; } -static int32_t mgmtGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - SDbObj *pDb = mgmtGetDb(pShow->db); +static int32_t mnodeGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) return TSDB_CODE_DB_NOT_SELECTED; int32_t cols = 0; @@ -2119,7 +2094,7 @@ static int32_t mgmtGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void pShow->numOfRows = pDb->numOfTables; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return 0; } @@ -2131,8 +2106,8 @@ static void mgmtVacuumResult(char *data, int32_t numOfCols, int32_t rows, int32_ } } -static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, void *pConn) { - SDbObj *pDb = mgmtGetDb(pShow->db); +static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) return 0; int32_t numOfRows = 0; @@ -2145,12 +2120,12 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, int32_t prefixLen = strlen(prefix); while (numOfRows < rows) { - pShow->pIter = mgmtGetNextChildTable(pShow->pIter, &pTable); + pShow->pIter = mnodeGetNextChildTable(pShow->pIter, &pTable); if (pTable == NULL) break; // not belong to current db if (strncmp(pTable->info.tableId, prefix, prefixLen)) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -2160,7 +2135,7 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, mgmtExtractTableName(pTable->info.tableId, tableName); if (pShow->payloadLen > 0 && patternMatch(pShow->payload, tableName, TSDB_TABLE_NAME_LEN, &info) != TSDB_PATTERN_MATCH) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); continue; } @@ -2195,40 +2170,37 @@ static int32_t mgmtRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, cols++; numOfRows++; - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); } pShow->numOfReads += numOfRows; const int32_t NUM_OF_COLUMNS = 4; mgmtVacuumResult(data, NUM_OF_COLUMNS, numOfRows, rows, pShow); - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return numOfRows; } -static void mgmtProcessAlterTableMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) { SCMAlterTableMsg *pAlter = pMsg->pCont; mTrace("table:%s, alter table msg is received from thandle:%p", pAlter->tableId, pMsg->thandle); - if (pMsg->pDb == NULL) pMsg->pDb = mgmtGetDbByTableId(pAlter->tableId); + if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pAlter->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { mError("table:%s, failed to alter table, db not selected", pAlter->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_DB_NOT_SELECTED); - return; + return TSDB_CODE_DB_NOT_SELECTED; } - if (mgmtCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { + if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) { mError("table:%s, failed to alter table, its log db", pAlter->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_MONITOR_DB_FORBIDDEN); - return; + return TSDB_CODE_MONITOR_DB_FORBIDDEN; } - if (pMsg->pTable == NULL) pMsg->pTable = mgmtGetTable(pAlter->tableId); + if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pAlter->tableId); if (pMsg->pTable == NULL) { mError("table:%s, failed to alter table, table not exist", pMsg->pTable->tableId); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_TABLE); - return; + return TSDB_CODE_INVALID_TABLE; } pAlter->type = htons(pAlter->type); @@ -2237,8 +2209,7 @@ static void mgmtProcessAlterTableMsg(SMnodeMsg *pMsg) { if (pAlter->numOfCols > 2) { mError("table:%s, error numOfCols:%d in alter table", pAlter->tableId, pAlter->numOfCols); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_APP_ERROR); - return; + return TSDB_CODE_APP_ERROR; } for (int32_t i = 0; i < pAlter->numOfCols; ++i) { @@ -2250,15 +2221,15 @@ static void mgmtProcessAlterTableMsg(SMnodeMsg *pMsg) { SSuperTableObj *pTable = (SSuperTableObj *)pMsg->pTable; mTrace("table:%s, start to alter stable", pAlter->tableId); if (pAlter->type == TSDB_ALTER_TABLE_ADD_TAG_COLUMN) { - code = mgmtAddSuperTableTag(pTable, pAlter->schema, 1); + code = mnodeAddSuperTableTag(pTable, pAlter->schema, 1); } else if (pAlter->type == TSDB_ALTER_TABLE_DROP_TAG_COLUMN) { - code = mgmtDropSuperTableTag(pTable, pAlter->schema[0].name); + code = mnodeDropSuperTableTag(pTable, pAlter->schema[0].name); } else if (pAlter->type == TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN) { - code = mgmtModifySuperTableTagName(pTable, pAlter->schema[0].name, pAlter->schema[1].name); + code = mnodeModifySuperTableTagName(pTable, pAlter->schema[0].name, pAlter->schema[1].name); } else if (pAlter->type == TSDB_ALTER_TABLE_ADD_COLUMN) { - code = mgmtAddSuperTableColumn(pMsg->pDb, pTable, pAlter->schema, 1); + code = mnodeAddSuperTableColumn(pMsg->pDb, pTable, pAlter->schema, 1); } else if (pAlter->type == TSDB_ALTER_TABLE_DROP_COLUMN) { - code = mgmtDropSuperTableColumn(pMsg->pDb, pTable, pAlter->schema[0].name); + code = mnodeDropSuperTableColumn(pMsg->pDb, pTable, pAlter->schema[0].name); } else { } } else { @@ -2266,14 +2237,14 @@ static void mgmtProcessAlterTableMsg(SMnodeMsg *pMsg) { SChildTableObj *pTable = (SChildTableObj *)pMsg->pTable; if (pAlter->type == TSDB_ALTER_TABLE_UPDATE_TAG_VAL) { char *tagVal = (char*)(pAlter->schema + pAlter->numOfCols); - code = mgmtModifyChildTableTagValue(pTable, pAlter->schema[0].name, tagVal); + code = mnodeModifyChildTableTagValue(pTable, pAlter->schema[0].name, tagVal); } else if (pAlter->type == TSDB_ALTER_TABLE_ADD_COLUMN) { - code = mgmtAddNormalTableColumn(pMsg->pDb, pTable, pAlter->schema, 1); + code = mnodeAddNormalTableColumn(pMsg->pDb, pTable, pAlter->schema, 1); } else if (pAlter->type == TSDB_ALTER_TABLE_DROP_COLUMN) { - code = mgmtDropNormalTableColumn(pMsg->pDb, pTable, pAlter->schema[0].name); + code = mnodeDropNormalTableColumn(pMsg->pDb, pTable, pAlter->schema[0].name); } else { } } - mgmtSendSimpleResp(pMsg->thandle, code); + return code; } diff --git a/src/mnode/src/mnodeUser.c b/src/mnode/src/mnodeUser.c index 2a686d05ee1..ad6370302ab 100644 --- a/src/mnode/src/mnodeUser.c +++ b/src/mnode/src/mnodeUser.c @@ -21,36 +21,39 @@ #include "tglobal.h" #include "tgrant.h" #include "tdataformat.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeAcct.h" #include "mnodeMnode.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeUser.h" +#include "mnodeWrite.h" +#include "mnodePeer.h" static void * tsUserSdb = NULL; static int32_t tsUserUpdateSize = 0; -static int32_t mgmtGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessCreateUserMsg(SMnodeMsg *pMsg); -static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg); -static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg); -static void mgmtProcessAuthMsg(SRpcMsg *rpcMsg); - -static int32_t mgmtUserActionDestroy(SSdbOper *pOper) { +static int32_t mnodeGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeProcessCreateUserMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg); +static int32_t mnodeProcessAuthMsg(SMnodeMsg *pMsg); + +static int32_t mnodeUserActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionInsert(SSdbOper *pOper) { +static int32_t mnodeUserActionInsert(SSdbOper *pOper) { SUserObj *pUser = pOper->pObj; - SAcctObj *pAcct = mgmtGetAcct(pUser->acct); + SAcctObj *pAcct = mnodeGetAcct(pUser->acct); if (pAcct != NULL) { - mgmtAddUserToAcct(pAcct, pUser); - mgmtDecAcctRef(pAcct); + mnodeAddUserToAcct(pAcct, pUser); + mnodeDecAcctRef(pAcct); } else { mError("user:%s, acct:%s info not exist in sdb", pUser->user, pUser->acct); return TSDB_CODE_INVALID_ACCT; @@ -59,37 +62,37 @@ static int32_t mgmtUserActionInsert(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionDelete(SSdbOper *pOper) { +static int32_t mnodeUserActionDelete(SSdbOper *pOper) { SUserObj *pUser = pOper->pObj; - SAcctObj *pAcct = mgmtGetAcct(pUser->acct); + SAcctObj *pAcct = mnodeGetAcct(pUser->acct); if (pAcct != NULL) { - mgmtDropUserFromAcct(pAcct, pUser); - mgmtDecAcctRef(pAcct); + mnodeDropUserFromAcct(pAcct, pUser); + mnodeDecAcctRef(pAcct); } return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionUpdate(SSdbOper *pOper) { +static int32_t mnodeUserActionUpdate(SSdbOper *pOper) { SUserObj *pUser = pOper->pObj; - SUserObj *pSaved = mgmtGetUser(pUser->user); + SUserObj *pSaved = mnodeGetUser(pUser->user); if (pUser != pSaved) { memcpy(pSaved, pUser, tsUserUpdateSize); free(pUser); } - mgmtDecUserRef(pSaved); + mnodeDecUserRef(pSaved); return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionEncode(SSdbOper *pOper) { +static int32_t mnodeUserActionEncode(SSdbOper *pOper) { SUserObj *pUser = pOper->pObj; memcpy(pOper->rowData, pUser, tsUserUpdateSize); pOper->rowSize = tsUserUpdateSize; return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionDecode(SSdbOper *pOper) { +static int32_t mnodeUserActionDecode(SSdbOper *pOper) { SUserObj *pUser = (SUserObj *)calloc(1, sizeof(SUserObj)); if (pUser == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -98,19 +101,19 @@ static int32_t mgmtUserActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtUserActionRestored() { +static int32_t mnodeUserActionRestored() { if (dnodeIsFirstDeploy()) { - SAcctObj *pAcct = mgmtGetAcct("root"); - mgmtCreateUser(pAcct, "root", "taosdata"); - mgmtCreateUser(pAcct, "monitor", tsInternalPass); - mgmtCreateUser(pAcct, "_root", tsInternalPass); - mgmtDecAcctRef(pAcct); + SAcctObj *pAcct = mnodeGetAcct("root"); + mnodeCreateUser(pAcct, "root", "taosdata"); + mnodeCreateUser(pAcct, "monitor", tsInternalPass); + mnodeCreateUser(pAcct, "_root", tsInternalPass); + mnodeDecAcctRef(pAcct); } return TSDB_CODE_SUCCESS; } -int32_t mgmtInitUsers() { +int32_t mnodeInitUsers() { SUserObj tObj; tsUserUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -121,13 +124,13 @@ int32_t mgmtInitUsers() { .maxRowSize = tsUserUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, - .insertFp = mgmtUserActionInsert, - .deleteFp = mgmtUserActionDelete, - .updateFp = mgmtUserActionUpdate, - .encodeFp = mgmtUserActionEncode, - .decodeFp = mgmtUserActionDecode, - .destroyFp = mgmtUserActionDestroy, - .restoredFp = mgmtUserActionRestored + .insertFp = mnodeUserActionInsert, + .deleteFp = mnodeUserActionDelete, + .updateFp = mnodeUserActionUpdate, + .encodeFp = mnodeUserActionEncode, + .decodeFp = mnodeUserActionDecode, + .destroyFp = mnodeUserActionDestroy, + .restoredFp = mnodeUserActionRestored }; tsUserSdb = sdbOpenTable(&tableDesc); @@ -136,38 +139,38 @@ int32_t mgmtInitUsers() { return -1; } - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CREATE_USER, mgmtProcessCreateUserMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_ALTER_USER, mgmtProcessAlterUserMsg); - mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mgmtProcessDropUserMsg); - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_USER, mgmtGetUserMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_USER, mgmtRetrieveUsers); - dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_AUTH, mgmtProcessAuthMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_CREATE_USER, mnodeProcessCreateUserMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_ALTER_USER, mnodeProcessAlterUserMsg); + mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mnodeProcessDropUserMsg); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_USER, mnodeGetUserMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mnodeRetrieveUsers); + mnodeAddPeerMsgHandle(TSDB_MSG_TYPE_DM_AUTH, mnodeProcessAuthMsg); mTrace("table:%s, hash is created", tableDesc.tableName); return 0; } -void mgmtCleanUpUsers() { +void mnodeCleanupUsers() { sdbCloseTable(tsUserSdb); } -SUserObj *mgmtGetUser(char *name) { +SUserObj *mnodeGetUser(char *name) { return (SUserObj *)sdbGetRow(tsUserSdb, name); } -void *mgmtGetNextUser(void *pIter, SUserObj **pUser) { +void *mnodeGetNextUser(void *pIter, SUserObj **pUser) { return sdbFetchRow(tsUserSdb, pIter, (void **)pUser); } -void mgmtIncUserRef(SUserObj *pUser) { +void mnodeIncUserRef(SUserObj *pUser) { return sdbIncRef(tsUserSdb, pUser); } -void mgmtDecUserRef(SUserObj *pUser) { +void mnodeDecUserRef(SUserObj *pUser) { return sdbDecRef(tsUserSdb, pUser); } -static int32_t mgmtUpdateUser(SUserObj *pUser) { +static int32_t mnodeUpdateUser(SUserObj *pUser) { SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsUserSdb, @@ -182,7 +185,7 @@ static int32_t mgmtUpdateUser(SUserObj *pUser) { return code; } -int32_t mgmtCreateUser(SAcctObj *pAcct, char *name, char *pass) { +int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass) { int32_t code = acctCheck(pAcct, ACCT_GRANT_USER); if (code != TSDB_CODE_SUCCESS) { return code; @@ -196,10 +199,10 @@ int32_t mgmtCreateUser(SAcctObj *pAcct, char *name, char *pass) { return TSDB_CODE_INVALID_PASS_FORMAT; } - SUserObj *pUser = mgmtGetUser(name); + SUserObj *pUser = mnodeGetUser(name); if (pUser != NULL) { mTrace("user:%s, is already there", name); - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return TSDB_CODE_USER_ALREADY_EXIST; } @@ -235,7 +238,7 @@ int32_t mgmtCreateUser(SAcctObj *pAcct, char *name, char *pass) { return code; } -static int32_t mgmtDropUser(SUserObj *pUser) { +static int32_t mnodeDropUser(SUserObj *pUser) { SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsUserSdb, @@ -250,8 +253,8 @@ static int32_t mgmtDropUser(SUserObj *pUser) { return code; } -static int32_t mgmtGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - SUserObj *pUser = mgmtGetUserFromConn(pConn); +static int32_t mnodeGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SUserObj *pUser = mnodeGetUserFromConn(pConn); if (pUser == NULL) { return TSDB_CODE_NO_USER_FROM_CONN; } @@ -289,18 +292,18 @@ static int32_t mgmtGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCon pShow->numOfRows = pUser->pAcct->acctInfo.numOfUsers; pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); return 0; } -static int32_t mgmtRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; SUserObj *pUser = NULL; int32_t cols = 0; char *pWrite; while (numOfRows < rows) { - pShow->pIter = mgmtGetNextUser(pShow->pIter, &pUser); + pShow->pIter = mnodeGetNextUser(pShow->pIter, &pUser); if (pUser == NULL) break; cols = 0; @@ -327,30 +330,30 @@ static int32_t mgmtRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void cols++; numOfRows++; - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); } pShow->numOfReads += numOfRows; return numOfRows; } -SUserObj *mgmtGetUserFromConn(void *pConn) { +SUserObj *mnodeGetUserFromConn(void *pConn) { SRpcConnInfo connInfo; if (rpcGetConnInfo(pConn, &connInfo) == 0) { - return mgmtGetUser(connInfo.user); + return mnodeGetUser(connInfo.user); } else { mError("can not get user from conn:%p", pConn); return NULL; } } -static void mgmtProcessCreateUserMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessCreateUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; if (pOperUser->superAuth) { SCMCreateUserMsg *pCreate = pMsg->pCont; - code = mgmtCreateUser(pOperUser->pAcct, pCreate->user, pCreate->pass); + code = mnodeCreateUser(pOperUser->pAcct, pCreate->user, pCreate->pass); if (code == TSDB_CODE_SUCCESS) { mLPrint("user:%s, is created by %s", pCreate->user, pOperUser->user); } @@ -359,24 +362,22 @@ static void mgmtProcessCreateUserMsg(SMnodeMsg *pMsg) { code = TSDB_CODE_NO_RIGHTS; } - mgmtSendSimpleResp(pMsg->thandle, code); + return code; } -static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; SCMAlterUserMsg *pAlter = pMsg->pCont; - SUserObj *pUser = mgmtGetUser(pAlter->user); + SUserObj *pUser = mnodeGetUser(pAlter->user); if (pUser == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_USER); - return; + return TSDB_CODE_INVALID_USER; } if (strcmp(pUser->user, "monitor") == 0 || (strcmp(pUser->user + 1, pUser->acct) == 0 && pUser->user[0] == '_')) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); - mgmtDecUserRef(pUser); - return; + mnodeDecUserRef(pUser); + return TSDB_CODE_NO_RIGHTS; } if ((pAlter->flag & TSDB_ALTER_USER_PASSWD) != 0) { @@ -398,14 +399,12 @@ static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg) { if (hasRight) { memset(pUser->pass, 0, sizeof(pUser->pass)); taosEncryptPass((uint8_t*)pAlter->pass, strlen(pAlter->pass), pUser->pass); - code = mgmtUpdateUser(pUser); + code = mnodeUpdateUser(pUser); mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } - - mgmtSendSimpleResp(pMsg->thandle, code); } else if ((pAlter->flag & TSDB_ALTER_USER_PRIVILEGES) != 0) { bool hasRight = false; @@ -441,38 +440,35 @@ static void mgmtProcessAlterUserMsg(SMnodeMsg *pMsg) { pUser->writeAuth = 1; } - code = mgmtUpdateUser(pUser); + code = mnodeUpdateUser(pUser); mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } - - mgmtSendSimpleResp(pMsg->thandle, code); } else { mError("user:%s, no rights to alter user", pOperUser->user); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); + code = TSDB_CODE_NO_RIGHTS; } - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); + return code; } -static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg) { +static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; SCMDropUserMsg *pDrop = pMsg->pCont; - SUserObj *pUser = mgmtGetUser(pDrop->user); + SUserObj *pUser = mnodeGetUser(pDrop->user); if (pUser == NULL) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_INVALID_USER); - return; + return TSDB_CODE_INVALID_USER; } if (strcmp(pUser->user, "monitor") == 0 || strcmp(pUser->user, pUser->acct) == 0 || (strcmp(pUser->user + 1, pUser->acct) == 0 && pUser->user[0] == '_')) { - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); - mgmtDecUserRef(pUser); - return ; + mnodeDecUserRef(pUser); + return TSDB_CODE_NO_RIGHTS; } bool hasRight = false; @@ -491,7 +487,7 @@ static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg) { } if (hasRight) { - code = mgmtDropUser(pUser); + code = mnodeDropUser(pUser); if (code == TSDB_CODE_SUCCESS) { mLPrint("user:%s, is dropped by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } @@ -499,18 +495,18 @@ static void mgmtProcessDropUserMsg(SMnodeMsg *pMsg) { code = TSDB_CODE_NO_RIGHTS; } - mgmtSendSimpleResp(pMsg->thandle, code); - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); + return code; } -void mgmtDropAllUsers(SAcctObj *pAcct) { +void mnodeDropAllUsers(SAcctObj *pAcct) { void * pIter = NULL; int32_t numOfUsers = 0; int32_t acctNameLen = strlen(pAcct->user); SUserObj *pUser = NULL; while (1) { - pIter = mgmtGetNextUser(pIter, &pUser); + pIter = mnodeGetNextUser(pIter, &pUser); if (pUser == NULL) break; if (strncmp(pUser->acct, pAcct->user, acctNameLen) == 0) { @@ -523,7 +519,7 @@ void mgmtDropAllUsers(SAcctObj *pAcct) { numOfUsers++; } - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); } sdbFreeIter(pIter); @@ -531,14 +527,14 @@ void mgmtDropAllUsers(SAcctObj *pAcct) { mTrace("acct:%s, all users:%d is dropped from sdb", pAcct->user, numOfUsers); } -int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey) { +int32_t mnodeRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey) { if (!sdbIsMaster()) { *secret = 0; mTrace("user:%s, failed to auth user, reason:%s", user, tstrerror(TSDB_CODE_NOT_READY)); return TSDB_CODE_NOT_READY; } - SUserObj *pUser = mgmtGetUser(user); + SUserObj *pUser = mnodeGetUser(user); if (pUser == NULL) { *secret = 0; mError("user:%s, failed to auth user, reason:%s", user, tstrerror(TSDB_CODE_INVALID_USER)); @@ -549,21 +545,18 @@ int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey = 0; memcpy(secret, pUser->pass, TSDB_KEY_LEN); - mgmtDecUserRef(pUser); + mnodeDecUserRef(pUser); mTrace("user:%s, auth info is returned", user); return TSDB_CODE_SUCCESS; } } -static void mgmtProcessAuthMsg(SRpcMsg *rpcMsg) { - SRpcMsg rpcRsp = {.handle = rpcMsg->handle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0}; - - SDMAuthMsg *pAuthMsg = rpcMsg->pCont; +static int32_t mnodeProcessAuthMsg(SMnodeMsg *pMsg) { + SDMAuthMsg *pAuthMsg = pMsg->pCont; SDMAuthRsp *pAuthRsp = rpcMallocCont(sizeof(SDMAuthRsp)); - rpcRsp.code = mgmtRetriveAuth(pAuthMsg->user, &pAuthRsp->spi, &pAuthRsp->encrypt, pAuthRsp->secret, pAuthRsp->ckey); - rpcRsp.pCont = pAuthRsp; - rpcRsp.contLen = sizeof(SDMAuthRsp); + pMsg->rpcRsp.rsp = pAuthRsp; + pMsg->rpcRsp.len = sizeof(SDMAuthRsp); - rpcSendResponse(&rpcRsp); + return mnodeRetriveAuth(pAuthMsg->user, &pAuthRsp->spi, &pAuthRsp->encrypt, pAuthRsp->secret, pAuthRsp->ckey); } diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 74753142aab..69baa09c950 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -23,8 +23,9 @@ #include "ttime.h" #include "tbalance.h" #include "tglobal.h" -#include "dnode.h" #include "tdataformat.h" +#include "dnode.h" +#include "mnode.h" #include "mnodeDef.h" #include "mnodeInt.h" #include "mnodeDb.h" @@ -32,21 +33,22 @@ #include "mnodeMnode.h" #include "mnodeProfile.h" #include "mnodeSdb.h" -#include "mnodeShell.h" +#include "mnodeShow.h" #include "mnodeTable.h" #include "mnodeVgroup.h" +#include "mnodePeer.h" static void *tsVgroupSdb = NULL; static int32_t tsVgUpdateSize = 0; -static int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); -static int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static void mgmtProcessCreateVnodeRsp(SRpcMsg *rpcMsg); -static void mgmtProcessDropVnodeRsp(SRpcMsg *rpcMsg); -static void mgmtProcessVnodeCfgMsg(SRpcMsg *rpcMsg) ; -static void mgmtSendDropVgroupMsg(SVgObj *pVgroup, void *ahandle); +static int32_t mnodeGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg); +static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg); +static int32_t mnodeProcessVnodeCfgMsg(SMnodeMsg *pMsg) ; +static void mnodeSendDropVgroupMsg(SVgObj *pVgroup, void *ahandle); -static int32_t mgmtVgroupActionDestroy(SSdbOper *pOper) { +static int32_t mnodeVgroupActionDestroy(SSdbOper *pOper) { SVgObj *pVgroup = pOper->pObj; if (pVgroup->idPool) { taosIdPoolCleanUp(pVgroup->idPool); @@ -60,11 +62,11 @@ static int32_t mgmtVgroupActionDestroy(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtVgroupActionInsert(SSdbOper *pOper) { +static int32_t mnodeVgroupActionInsert(SSdbOper *pOper) { SVgObj *pVgroup = pOper->pObj; // refer to db - SDbObj *pDb = mgmtGetDb(pVgroup->dbName); + SDbObj *pDb = mnodeGetDb(pVgroup->dbName); if (pDb == NULL) { return TSDB_CODE_INVALID_DB; } @@ -88,40 +90,40 @@ static int32_t mgmtVgroupActionInsert(SSdbOper *pOper) { } for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { - SDnodeObj *pDnode = mgmtGetDnode(pVgroup->vnodeGid[i].dnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pVgroup->vnodeGid[i].dnodeId); if (pDnode != NULL) { pVgroup->vnodeGid[i].pDnode = pDnode; atomic_add_fetch_32(&pDnode->openVnodes, 1); - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } } - mgmtAddVgroupIntoDb(pVgroup); + mnodeAddVgroupIntoDb(pVgroup); return TSDB_CODE_SUCCESS; } -static int32_t mgmtVgroupActionDelete(SSdbOper *pOper) { +static int32_t mnodeVgroupActionDelete(SSdbOper *pOper) { SVgObj *pVgroup = pOper->pObj; if (pVgroup->pDb != NULL) { - mgmtRemoveVgroupFromDb(pVgroup); + mnodeRemoveVgroupFromDb(pVgroup); } - mgmtDecDbRef(pVgroup->pDb); + mnodeDecDbRef(pVgroup->pDb); for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { - SDnodeObj *pDnode = mgmtGetDnode(pVgroup->vnodeGid[i].dnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pVgroup->vnodeGid[i].dnodeId); if (pDnode != NULL) { atomic_sub_fetch_32(&pDnode->openVnodes, 1); } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } return TSDB_CODE_SUCCESS; } -static void mgmtVgroupUpdateIdPool(SVgObj *pVgroup) { +static void mnodeVgroupUpdateIdPool(SVgObj *pVgroup) { int32_t oldTables = taosIdPoolMaxSize(pVgroup->idPool); SDbObj *pDb = pVgroup->pDb; if (pDb != NULL) { @@ -135,9 +137,9 @@ static void mgmtVgroupUpdateIdPool(SVgObj *pVgroup) { } } -static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { +static int32_t mnodeVgroupActionUpdate(SSdbOper *pOper) { SVgObj *pNew = pOper->pObj; - SVgObj *pVgroup = mgmtGetVgroup(pNew->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pNew->vgId); if (pVgroup != pNew) { for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { @@ -151,24 +153,24 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { free(pNew); for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { - SDnodeObj *pDnode = mgmtGetDnode(pVgroup->vnodeGid[i].dnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pVgroup->vnodeGid[i].dnodeId); pVgroup->vnodeGid[i].pDnode = pDnode; if (pDnode != NULL) { atomic_add_fetch_32(&pDnode->openVnodes, 1); } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); } } - mgmtVgroupUpdateIdPool(pVgroup); + mnodeVgroupUpdateIdPool(pVgroup); - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); return TSDB_CODE_SUCCESS; } -static int32_t mgmtVgroupActionEncode(SSdbOper *pOper) { +static int32_t mnodeVgroupActionEncode(SSdbOper *pOper) { SVgObj *pVgroup = pOper->pObj; memcpy(pOper->rowData, pVgroup, tsVgUpdateSize); SVgObj *pTmpVgroup = pOper->rowData; @@ -181,7 +183,7 @@ static int32_t mgmtVgroupActionEncode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtVgroupActionDecode(SSdbOper *pOper) { +static int32_t mnodeVgroupActionDecode(SSdbOper *pOper) { SVgObj *pVgroup = (SVgObj *) calloc(1, sizeof(SVgObj)); if (pVgroup == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -190,11 +192,11 @@ static int32_t mgmtVgroupActionDecode(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtVgroupActionRestored() { +static int32_t mnodeVgroupActionRestored() { return 0; } -int32_t mgmtInitVgroups() { +int32_t mnodeInitVgroups() { SVgObj tObj; tsVgUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; @@ -205,13 +207,13 @@ int32_t mgmtInitVgroups() { .maxRowSize = tsVgUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_AUTO, - .insertFp = mgmtVgroupActionInsert, - .deleteFp = mgmtVgroupActionDelete, - .updateFp = mgmtVgroupActionUpdate, - .encodeFp = mgmtVgroupActionEncode, - .decodeFp = mgmtVgroupActionDecode, - .destroyFp = mgmtVgroupActionDestroy, - .restoredFp = mgmtVgroupActionRestored, + .insertFp = mnodeVgroupActionInsert, + .deleteFp = mnodeVgroupActionDelete, + .updateFp = mnodeVgroupActionUpdate, + .encodeFp = mnodeVgroupActionEncode, + .decodeFp = mnodeVgroupActionDecode, + .destroyFp = mnodeVgroupActionDestroy, + .restoredFp = mnodeVgroupActionRestored, }; tsVgroupSdb = sdbOpenTable(&tableDesc); @@ -220,30 +222,30 @@ int32_t mgmtInitVgroups() { return -1; } - mnodeAddShowMetaHandle(TSDB_MNODE_TABLE_VGROUP, mgmtGetVgroupMeta); - mnodeAddShowRetrieveHandle(TSDB_MNODE_TABLE_VGROUP, mgmtRetrieveVgroups); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP, mgmtProcessCreateVnodeRsp); - dnodeAddClientRspHandle(TSDB_MSG_TYPE_MD_DROP_VNODE_RSP, mgmtProcessDropVnodeRsp); - dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_VNODE, mgmtProcessVnodeCfgMsg); + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_VGROUP, mnodeGetVgroupMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_VGROUP, mnodeRetrieveVgroups); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP, mnodeProcessCreateVnodeRsp); + mnodeAddPeerRspHandle(TSDB_MSG_TYPE_MD_DROP_VNODE_RSP, mnodeProcessDropVnodeRsp); + mnodeAddPeerMsgHandle(TSDB_MSG_TYPE_DM_CONFIG_VNODE, mnodeProcessVnodeCfgMsg); mTrace("table:vgroups is created"); return 0; } -void mgmtIncVgroupRef(SVgObj *pVgroup) { +void mnodeIncVgroupRef(SVgObj *pVgroup) { return sdbIncRef(tsVgroupSdb, pVgroup); } -void mgmtDecVgroupRef(SVgObj *pVgroup) { +void mnodeDecVgroupRef(SVgObj *pVgroup) { return sdbDecRef(tsVgroupSdb, pVgroup); } -SVgObj *mgmtGetVgroup(int32_t vgId) { +SVgObj *mnodeGetVgroup(int32_t vgId) { return (SVgObj *)sdbGetRow(tsVgroupSdb, &vgId); } -void mgmtUpdateVgroup(SVgObj *pVgroup) { +void mnodeUpdateVgroup(SVgObj *pVgroup) { SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsVgroupSdb, @@ -251,10 +253,10 @@ void mgmtUpdateVgroup(SVgObj *pVgroup) { }; sdbUpdateRow(&oper); - mgmtSendCreateVgroupMsg(pVgroup, NULL); + mnodeSendCreateVgroupMsg(pVgroup, NULL); } -void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVload) { +void mnodeUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVload) { bool dnodeExist = false; for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { SVnodeGid *pVgid = &pVgroup->vnodeGid[i]; @@ -269,9 +271,9 @@ void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVlo } if (!dnodeExist) { - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pDnode->dnodeEp); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pDnode->dnodeEp); mError("vgId:%d, dnode:%d not exist in mnode, drop it", pVload->vgId, pDnode->dnodeId); - mgmtSendDropVnodeMsg(pVload->vgId, &ipSet, NULL); + mnodeSendDropVnodeMsg(pVload->vgId, &ipSet, NULL); return; } @@ -285,19 +287,19 @@ void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVlo mError("dnode:%d, vgId:%d, vnode cfgVersion:%d repica:%d not match with mgmt cfgVersion:%d replica:%d", pDnode->dnodeId, pVload->vgId, pVload->cfgVersion, pVload->replica, pVgroup->pDb->cfgVersion, pVgroup->numOfVnodes); - mgmtSendCreateVgroupMsg(pVgroup, NULL); + mnodeSendCreateVgroupMsg(pVgroup, NULL); } } -SVgObj *mgmtGetAvailableVgroup(SDbObj *pDb) { +SVgObj *mnodeGetAvailableVgroup(SDbObj *pDb) { return pDb->pHead; } -void *mgmtGetNextVgroup(void *pIter, SVgObj **pVgroup) { +void *mnodeGetNextVgroup(void *pIter, SVgObj **pVgroup) { return sdbFetchRow(tsVgroupSdb, pIter, (void **)pVgroup); } -void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { +int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { SVgObj *pVgroup = (SVgObj *)calloc(1, sizeof(SVgObj)); strcpy(pVgroup->dbName, pDb->name); pVgroup->numOfVnodes = pDb->cfg.replications; @@ -305,9 +307,8 @@ void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { if (balanceAllocVnodes(pVgroup) != 0) { mError("db:%s, no enough dnode to alloc %d vnodes to vgroup", pDb->name, pVgroup->numOfVnodes); free(pVgroup); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_ENOUGH_DNODES); - mgmtFreeQueuedMsg(pMsg); - return; + mnodeCleanupMsg(pMsg); + return TSDB_CODE_NO_ENOUGH_DNODES; } SSdbOper oper = { @@ -321,9 +322,8 @@ void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { if (code != TSDB_CODE_SUCCESS) { tfree(pVgroup); code = TSDB_CODE_SDB_ERROR; - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_SDB_ERROR); - mgmtFreeQueuedMsg(pMsg); - return; + mnodeCleanupMsg(pMsg); + return TSDB_CODE_SDB_ERROR; } mPrint("vgId:%d, is created in mnode, db:%s replica:%d", pVgroup->vgId, pDb->name, pVgroup->numOfVnodes); @@ -333,15 +333,17 @@ void mgmtCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { pMsg->ahandle = pVgroup; pMsg->expected = pVgroup->numOfVnodes; - mgmtSendCreateVgroupMsg(pVgroup, pMsg); + mnodeSendCreateVgroupMsg(pVgroup, pMsg); + + return TSDB_CODE_ACTION_IN_PROGRESS; } -void mgmtDropVgroup(SVgObj *pVgroup, void *ahandle) { +void mnodeDropVgroup(SVgObj *pVgroup, void *ahandle) { if (ahandle != NULL) { - mgmtSendDropVgroupMsg(pVgroup, ahandle); + mnodeSendDropVgroupMsg(pVgroup, ahandle); } else { mTrace("vgId:%d, replica:%d is deleting from sdb", pVgroup->vgId, pVgroup->numOfVnodes); - mgmtSendDropVgroupMsg(pVgroup, NULL); + mnodeSendDropVgroupMsg(pVgroup, NULL); SSdbOper oper = { .type = SDB_OPER_GLOBAL, .table = tsVgroupSdb, @@ -351,12 +353,12 @@ void mgmtDropVgroup(SVgObj *pVgroup, void *ahandle) { } } -void mgmtCleanUpVgroups() { +void mnodeCleanupVgroups() { sdbCloseTable(tsVgroupSdb); } -int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - SDbObj *pDb = mgmtGetDb(pShow->db); +int32_t mnodeGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) { return TSDB_CODE_DB_NOT_SELECTED; } @@ -380,15 +382,15 @@ int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { SVgObj *pVgroup = NULL; STableObj *pTable = NULL; if (pShow->payloadLen > 0 ) { - pTable = mgmtGetTable(pShow->payload); + pTable = mnodeGetTable(pShow->payload); if (NULL == pTable || pTable->type == TSDB_SUPER_TABLE) { - mgmtDecTableRef(pTable); + mnodeDecTableRef(pTable); return TSDB_CODE_INVALID_TABLE_ID; } - mgmtDecTableRef(pTable); - pVgroup = mgmtGetVgroup(((SChildTableObj*)pTable)->vgId); + mnodeDecTableRef(pTable); + pVgroup = mnodeGetVgroup(((SChildTableObj*)pTable)->vgId); if (NULL == pVgroup) return TSDB_CODE_INVALID_TABLE_ID; - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); maxReplica = pVgroup->numOfVnodes > maxReplica ? pVgroup->numOfVnodes : maxReplica; } else { SVgObj *pVgroup = pDb->pHead; @@ -434,19 +436,19 @@ int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { pShow->pIter = pVgroup; } - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return 0; } -int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pConn) { +int32_t mnodeRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pConn) { int32_t numOfRows = 0; SVgObj *pVgroup = NULL; int32_t maxReplica = 0; int32_t cols = 0; char * pWrite; - SDbObj *pDb = mgmtGetDb(pShow->db); + SDbObj *pDb = mnodeGetDb(pShow->db); if (pDb == NULL) return 0; pVgroup = pDb->pHead; @@ -483,7 +485,7 @@ int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pCo cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - char *role = mgmtGetMnodeRoleStr(pVgroup->vnodeGid[i].role); + char *role = mnodeGetMnodeRoleStr(pVgroup->vnodeGid[i].role); STR_TO_VARSTR(pWrite, role); cols++; } else { @@ -502,12 +504,12 @@ int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pCo } pShow->numOfReads += numOfRows; - mgmtDecDbRef(pDb); + mnodeDecDbRef(pDb); return numOfRows; } -void mgmtAddTableIntoVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { +void mnodeAddTableIntoVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { if (pTable->sid >= 1 && pVgroup->tableList[pTable->sid - 1] == NULL) { pVgroup->tableList[pTable->sid - 1] = pTable; taosIdPoolMarkStatus(pVgroup->idPool, pTable->sid); @@ -515,21 +517,21 @@ void mgmtAddTableIntoVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { } if (pVgroup->numOfTables >= pVgroup->pDb->cfg.maxTables) { - mgmtMoveVgroupToTail(pVgroup); + mnodeMoveVgroupToTail(pVgroup); } - mgmtIncVgroupRef(pVgroup); + mnodeIncVgroupRef(pVgroup); } -void mgmtRemoveTableFromVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { +void mnodeRemoveTableFromVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { if (pTable->sid >= 1 && pVgroup->tableList[pTable->sid - 1] != NULL) { pVgroup->tableList[pTable->sid - 1] = NULL; taosFreeId(pVgroup->idPool, pTable->sid); pVgroup->numOfTables--; } - mgmtMoveVgroupToHead(pVgroup); - mgmtDecVgroupRef(pVgroup); + mnodeMoveVgroupToHead(pVgroup); + mnodeDecVgroupRef(pVgroup); } SMDCreateVnodeMsg *mgmtBuildCreateVnodeMsg(SVgObj *pVgroup) { @@ -571,7 +573,7 @@ SMDCreateVnodeMsg *mgmtBuildCreateVnodeMsg(SVgObj *pVgroup) { return pVnode; } -SRpcIpSet mgmtGetIpSetFromVgroup(SVgObj *pVgroup) { +SRpcIpSet mnodeGetIpSetFromVgroup(SVgObj *pVgroup) { SRpcIpSet ipSet = { .numOfIps = pVgroup->numOfVnodes, .inUse = 0, @@ -583,7 +585,7 @@ SRpcIpSet mgmtGetIpSetFromVgroup(SVgObj *pVgroup) { return ipSet; } -SRpcIpSet mgmtGetIpSetFromIp(char *ep) { +SRpcIpSet mnodeGetIpSetFromIp(char *ep) { SRpcIpSet ipSet; ipSet.numOfIps = 1; @@ -593,7 +595,7 @@ SRpcIpSet mgmtGetIpSetFromIp(char *ep) { return ipSet; } -void mgmtSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle) { +void mnodeSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle) { mTrace("vgId:%d, send create vnode:%d msg, ahandle:%p", pVgroup->vgId, pVgroup->vgId, ahandle); SMDCreateVnodeMsg *pCreate = mgmtBuildCreateVnodeMsg(pVgroup); SRpcMsg rpcMsg = { @@ -606,34 +608,33 @@ void mgmtSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle) { dnodeSendMsgToDnode(ipSet, &rpcMsg); } -void mgmtSendCreateVgroupMsg(SVgObj *pVgroup, void *ahandle) { +void mnodeSendCreateVgroupMsg(SVgObj *pVgroup, void *ahandle) { mTrace("vgId:%d, send create all vnodes msg, ahandle:%p", pVgroup->vgId, ahandle); for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pVgroup->vnodeGid[i].pDnode->dnodeEp); - mgmtSendCreateVnodeMsg(pVgroup, &ipSet, ahandle); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pVgroup->vnodeGid[i].pDnode->dnodeEp); + mnodeSendCreateVnodeMsg(pVgroup, &ipSet, ahandle); } } -static void mgmtProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { if (rpcMsg->handle == NULL) return; - SMnodeMsg *queueMsg = rpcMsg->handle; - queueMsg->received++; + SMnodeMsg *mnodeMsg = rpcMsg->handle; + mnodeMsg->received++; if (rpcMsg->code == TSDB_CODE_SUCCESS) { - queueMsg->code = rpcMsg->code; - queueMsg->successed++; + mnodeMsg->code = rpcMsg->code; + mnodeMsg->successed++; } - SVgObj *pVgroup = queueMsg->ahandle; + SVgObj *pVgroup = mnodeMsg->ahandle; mTrace("vgId:%d, create vnode rsp received, result:%s received:%d successed:%d expected:%d, thandle:%p ahandle:%p", - pVgroup->vgId, tstrerror(rpcMsg->code), queueMsg->received, queueMsg->successed, queueMsg->expected, - queueMsg->thandle, rpcMsg->handle); + pVgroup->vgId, tstrerror(rpcMsg->code), mnodeMsg->received, mnodeMsg->successed, mnodeMsg->expected, + mnodeMsg->thandle, rpcMsg->handle); - if (queueMsg->received != queueMsg->expected) return; + if (mnodeMsg->received != mnodeMsg->expected) return; - if (queueMsg->received == queueMsg->successed) { - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); - mgmtAddToShellQueue(newMsg); + if (mnodeMsg->received == mnodeMsg->successed) { + dnodeReprocessMnodeWriteMsg(mnodeMsg); } else { SSdbOper oper = { .type = SDB_OPER_GLOBAL, @@ -644,11 +645,9 @@ static void mgmtProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { if (code != 0) { code = TSDB_CODE_SDB_ERROR; } - - mgmtSendSimpleResp(queueMsg->thandle, rpcMsg->code); - } - mgmtFreeQueuedMsg(queueMsg); + dnodeSendRpcMnodeWriteRsp(mnodeMsg, code); + } } static SMDDropVnodeMsg *mgmtBuildDropVnodeMsg(int32_t vgId) { @@ -659,7 +658,7 @@ static SMDDropVnodeMsg *mgmtBuildDropVnodeMsg(int32_t vgId) { return pDrop; } -void mgmtSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle) { +void mnodeSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle) { SMDDropVnodeMsg *pDrop = mgmtBuildDropVnodeMsg(vgId); SRpcMsg rpcMsg = { .handle = ahandle, @@ -671,32 +670,32 @@ void mgmtSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle) { dnodeSendMsgToDnode(ipSet, &rpcMsg); } -static void mgmtSendDropVgroupMsg(SVgObj *pVgroup, void *ahandle) { +static void mnodeSendDropVgroupMsg(SVgObj *pVgroup, void *ahandle) { mTrace("vgId:%d, send drop all vnodes msg, ahandle:%p", pVgroup->vgId, ahandle); for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pVgroup->vnodeGid[i].pDnode->dnodeEp); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pVgroup->vnodeGid[i].pDnode->dnodeEp); mTrace("vgId:%d, send drop vnode msg to dnode:%d, ahandle:%p", pVgroup->vgId, pVgroup->vnodeGid[i].dnodeId, ahandle); - mgmtSendDropVnodeMsg(pVgroup->vgId, &ipSet, ahandle); + mnodeSendDropVnodeMsg(pVgroup->vgId, &ipSet, ahandle); } } -static void mgmtProcessDropVnodeRsp(SRpcMsg *rpcMsg) { +static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg) { mTrace("drop vnode rsp is received, handle:%p", rpcMsg->handle); if (rpcMsg->handle == NULL) return; - SMnodeMsg *queueMsg = rpcMsg->handle; - queueMsg->received++; + SMnodeMsg *mnodeMsg = rpcMsg->handle; + mnodeMsg->received++; if (rpcMsg->code == TSDB_CODE_SUCCESS) { - queueMsg->code = rpcMsg->code; - queueMsg->successed++; + mnodeMsg->code = rpcMsg->code; + mnodeMsg->successed++; } - SVgObj *pVgroup = queueMsg->ahandle; + SVgObj *pVgroup = mnodeMsg->ahandle; mTrace("vgId:%d, drop vnode rsp received, result:%s received:%d successed:%d expected:%d, thandle:%p ahandle:%p", - pVgroup->vgId, tstrerror(rpcMsg->code), queueMsg->received, queueMsg->successed, queueMsg->expected, - queueMsg->thandle, rpcMsg->handle); + pVgroup->vgId, tstrerror(rpcMsg->code), mnodeMsg->received, mnodeMsg->successed, mnodeMsg->expected, + mnodeMsg->thandle, rpcMsg->handle); - if (queueMsg->received != queueMsg->expected) return; + if (mnodeMsg->received != mnodeMsg->expected) return; SSdbOper oper = { .type = SDB_OPER_GLOBAL, @@ -708,41 +707,35 @@ static void mgmtProcessDropVnodeRsp(SRpcMsg *rpcMsg) { code = TSDB_CODE_SDB_ERROR; } - SMnodeMsg *newMsg = mgmtCloneQueuedMsg(queueMsg); - mgmtAddToShellQueue(newMsg); - - queueMsg->pCont = NULL; - mgmtFreeQueuedMsg(queueMsg); + dnodeReprocessMnodeWriteMsg(mnodeMsg); } -static void mgmtProcessVnodeCfgMsg(SRpcMsg *rpcMsg) { - SDMConfigVnodeMsg *pCfg = (SDMConfigVnodeMsg *) rpcMsg->pCont; +static int32_t mnodeProcessVnodeCfgMsg(SMnodeMsg *pMsg) { + SDMConfigVnodeMsg *pCfg = (SDMConfigVnodeMsg *) pMsg->pCont; pCfg->dnodeId = htonl(pCfg->dnodeId); pCfg->vgId = htonl(pCfg->vgId); - SDnodeObj *pDnode = mgmtGetDnode(pCfg->dnodeId); + SDnodeObj *pDnode = mnodeGetDnode(pCfg->dnodeId); if (pDnode == NULL) { mTrace("dnode:%s, invalid dnode", taosIpStr(pCfg->dnodeId), pCfg->vgId); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_NOT_ACTIVE_VNODE); - return; + return TSDB_CODE_NOT_ACTIVE_VNODE; } - mgmtDecDnodeRef(pDnode); + mnodeDecDnodeRef(pDnode); - SVgObj *pVgroup = mgmtGetVgroup(pCfg->vgId); + SVgObj *pVgroup = mnodeGetVgroup(pCfg->vgId); if (pVgroup == NULL) { mTrace("dnode:%s, vgId:%d, no vgroup info", taosIpStr(pCfg->dnodeId), pCfg->vgId); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_NOT_ACTIVE_VNODE); - return; + return TSDB_CODE_NOT_ACTIVE_VNODE; } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); - mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_SUCCESS); + SRpcIpSet ipSet = mnodeGetIpSetFromIp(pDnode->dnodeEp); + mnodeSendCreateVnodeMsg(pVgroup, &ipSet, NULL); - SRpcIpSet ipSet = mgmtGetIpSetFromIp(pDnode->dnodeEp); - mgmtSendCreateVnodeMsg(pVgroup, &ipSet, NULL); + return TSDB_CODE_SUCCESS; } -void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode) { +void mnodeDropAllDnodeVgroups(SDnodeObj *pDropDnode) { void * pIter = NULL; SVgObj *pVgroup = NULL; int32_t numOfVgroups = 0; @@ -750,11 +743,11 @@ void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode) { mPrint("dnode:%d, all vgroups will be dropped from sdb", pDropDnode->dnodeId); while (1) { - pIter = mgmtGetNextVgroup(pIter, &pVgroup); + pIter = mnodeGetNextVgroup(pIter, &pVgroup); if (pVgroup == NULL) break; if (pVgroup->vnodeGid[0].dnodeId == pDropDnode->dnodeId) { - mgmtDropAllChildTablesInVgroups(pVgroup); + mnodeDropAllChildTablesInVgroups(pVgroup); SSdbOper oper = { .type = SDB_OPER_LOCAL, .table = tsVgroupSdb, @@ -763,7 +756,7 @@ void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode) { sdbDeleteRow(&oper); numOfVgroups++; } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } sdbFreeIter(pIter); @@ -771,21 +764,21 @@ void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode) { mPrint("dnode:%d, all vgroups is dropped from sdb", pDropDnode->dnodeId); } -void mgmtUpdateAllDbVgroups(SDbObj *pAlterDb) { +void mnodeUpdateAllDbVgroups(SDbObj *pAlterDb) { void * pIter = NULL; SVgObj *pVgroup = NULL; mPrint("db:%s, all vgroups will be update in sdb", pAlterDb->name); while (1) { - pIter = mgmtGetNextVgroup(pIter, &pVgroup); + pIter = mnodeGetNextVgroup(pIter, &pVgroup); if (pVgroup == NULL) break; if (pVgroup->pDb == pAlterDb) { - mgmtVgroupUpdateIdPool(pVgroup); + mnodeVgroupUpdateIdPool(pVgroup); } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } sdbFreeIter(pIter); @@ -793,14 +786,14 @@ void mgmtUpdateAllDbVgroups(SDbObj *pAlterDb) { mPrint("db:%s, all vgroups is updated in sdb", pAlterDb->name); } -void mgmtDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { +void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { void * pIter = NULL; int32_t numOfVgroups = 0; SVgObj *pVgroup = NULL; mPrint("db:%s, all vgroups will be dropped from sdb", pDropDb->name); while (1) { - pIter = mgmtGetNextVgroup(pIter, &pVgroup); + pIter = mnodeGetNextVgroup(pIter, &pVgroup); if (pVgroup == NULL) break; if (pVgroup->pDb == pDropDb) { @@ -813,11 +806,11 @@ void mgmtDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { numOfVgroups++; if (sendMsg) { - mgmtSendDropVgroupMsg(pVgroup, NULL); + mnodeSendDropVgroupMsg(pVgroup, NULL); } } - mgmtDecVgroupRef(pVgroup); + mnodeDecVgroupRef(pVgroup); } sdbFreeIter(pIter); diff --git a/src/mnode/src/mnodeWrite.c b/src/mnode/src/mnodeWrite.c index 69a4a530773..33a5399fe26 100644 --- a/src/mnode/src/mnodeWrite.c +++ b/src/mnode/src/mnodeWrite.c @@ -19,12 +19,11 @@ #include "tsched.h" #include "tbalance.h" #include "tgrant.h" -#include "ttimer.h" #include "tglobal.h" +#include "mnode.h" #include "dnode.h" #include "mnodeDef.h" #include "mnodeInt.h" -#include "mnodeServer.h" #include "mnodeAcct.h" #include "mnodeDnode.h" #include "mnodeMnode.h" @@ -33,29 +32,28 @@ #include "mnodeVgroup.h" #include "mnodeUser.h" #include "mnodeTable.h" -#include "mnodeShell.h" +#include "mnodeShow.h" -static void (*tsMnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); +static int32_t (*tsMnodeProcessWriteMsgFp[TSDB_MSG_TYPE_MAX])(SMnodeMsg *); -void mnodeAddWriteMsgHandle(uint8_t msgType, void (*fp)(SMnodeMsg *pMsg)) { +void mnodeAddWriteMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)) { tsMnodeProcessWriteMsgFp[msgType] = fp; } int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { - SRpcMsg *rpcMsg = &pMsg->rpcMsg; - if (rpcMsg->pCont == NULL) { - mError("%p, msg:%s content is null", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + if (pMsg->pCont == NULL) { + mError("msg:%s content is null", taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } if (!sdbIsMaster()) { SMnodeRsp *rpcRsp = &pMsg->rpcRsp; SRpcIpSet *ipSet = rpcMallocCont(sizeof(SRpcIpSet)); - mgmtGetMnodeIpSetForShell(ipSet); + mnodeGetMnodeIpSetForShell(ipSet); rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s will be redireced, inUse:%d", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], ipSet->inUse); + mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -63,34 +61,20 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (grantCheck(TSDB_GRANT_TIME) != TSDB_CODE_SUCCESS) { - mError("%p, msg:%s not processed, grant time expired", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); - return TSDB_CODE_GRANT_EXPIRED; - } - - if (tsMnodeProcessReadMsgFp[rpcMsg->msgType] == NULL) { - mError("%p, msg:%s not processed, no handle exist", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + if (tsMnodeProcessWriteMsgFp[pMsg->msgType] == NULL) { + mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } if (!mnodeInitMsg(pMsg)) { - mError("%p, msg:%s not processed, reason:%s", rpcMsg->ahandle, taosMsg[rpcMsg->msgType], tstrerror(terrno)); + mError("msg:%s not processed, reason:%s", taosMsg[pMsg->msgType], tstrerror(terrno)); return terrno; } if (!pMsg->pUser->writeAuth) { - mError("%p, msg:%s not processed, no rights", rpcMsg->ahandle, taosMsg[rpcMsg->msgType]); + mError("%p, msg:%s not processed, no rights", taosMsg[pMsg->msgType]); return TSDB_CODE_NO_RIGHTS; } - return (*tsMnodeProcessWriteMsgFp[rpcMsg->msgType])(pMsg); + return (*tsMnodeProcessWriteMsgFp[pMsg->msgType])(pMsg); } - -static void mgmtDoDealyedAddToShellQueue(void *param, void *tmrId) { - mgmtAddToShellQueue(param); -} - -void mgmtDealyedAddToShellQueue(SMnodeMsg *queuedMsg) { - void *unUsed = NULL; - taosTmrReset(mgmtDoDealyedAddToShellQueue, 300, queuedMsg, tsMgmtTmr, &unUsed); -} \ No newline at end of file From 160725945f5bdb8d5582ade19d9eafba78a7c5ef Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 27 May 2020 10:40:08 +0000 Subject: [PATCH 29/85] fix name bug --- src/tsdb/src/tsdbMeta.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 427e15de378..8345dc5f8ba 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -296,13 +296,6 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { } pTable->type = pCfg->type; - tsize = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN); - pTable->name = calloc(1, tsize + VARSTR_HEADER_SIZE + 1); - if (pTable->name == NULL) { - terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; - goto _err; - } - STR_WITH_SIZE_TO_VARSTR(pTable->name, pCfg->sname, tsize); if (isSuper) { pTable->type = TSDB_SUPER_TABLE; @@ -312,8 +305,16 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { pTable->schema = tdDupSchema(pCfg->schema); pTable->tagSchema = tdDupSchema(pCfg->tagSchema); + tsize = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN); + pTable->name = calloc(1, tsize + VARSTR_HEADER_SIZE + 1); + if (pTable->name == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; + goto _err; + } + STR_WITH_SIZE_TO_VARSTR(pTable->name, pCfg->sname, tsize); + STColumn *pColSchema = schemaColAt(pTable->tagSchema, 0); - pTable->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, 1, 0, 1, + pTable->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, 1, 0, 0, getTagIndexKey); // Allow duplicate key, no lock if (pTable->pIndex == NULL) { terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; @@ -325,6 +326,14 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { pTable->tableId.tid = pCfg->tableId.tid; pTable->lastKey = TSKEY_INITIAL_VAL; + tsize = strnlen(pCfg->name, TSDB_TABLE_NAME_LEN); + pTable->name = calloc(1, tsize + VARSTR_HEADER_SIZE + 1); + if (pTable->name == NULL) { + terrno = TSDB_CODE_SERV_OUT_OF_MEMORY; + goto _err; + } + STR_WITH_SIZE_TO_VARSTR(pTable->name, pCfg->name, tsize); + if (pCfg->type == TSDB_CHILD_TABLE) { pTable->superUid = pCfg->superUid; pTable->tagVal = tdDataRowDup(pCfg->tagValues); From d1003fedff1983e5165e931e03ebb994b0b9d68d Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Wed, 27 May 2020 10:57:38 +0000 Subject: [PATCH 30/85] [TD-335] message put into peer queue --- src/dnode/inc/dnodeMPeer.h | 2 ++ src/dnode/inc/dnodeMRead.h | 2 ++ src/dnode/inc/dnodeMWrite.h | 2 ++ src/dnode/src/dnodePeer.c | 30 ++++++++++++++---------------- src/dnode/src/dnodeShell.c | 6 +++--- src/mnode/inc/mnodePeer.h | 1 + src/mnode/src/mnodePeer.c | 2 -- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/dnode/inc/dnodeMPeer.h b/src/dnode/inc/dnodeMPeer.h index 0015532f152..cdbb4a210c9 100644 --- a/src/dnode/inc/dnodeMPeer.h +++ b/src/dnode/inc/dnodeMPeer.h @@ -22,6 +22,8 @@ extern "C" { int32_t dnodeInitMnodePeer(); void dnodeCleanupMnodePeer(); +int32_t dnodeAllocateMnodePqueue(); +void dnodeFreeMnodePqueue(); void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg); #ifdef __cplusplus diff --git a/src/dnode/inc/dnodeMRead.h b/src/dnode/inc/dnodeMRead.h index 0b340a865f1..4e93838b799 100644 --- a/src/dnode/inc/dnodeMRead.h +++ b/src/dnode/inc/dnodeMRead.h @@ -22,6 +22,8 @@ extern "C" { int32_t dnodeInitMnodeRead(); void dnodeCleanupMnodeRead(); +int32_t dnodeAllocateMnodeRqueue(); +void dnodeFreeMnodeRqueue(); void dnodeDispatchToMnodeReadQueue(SRpcMsg *rpcMsg); #ifdef __cplusplus diff --git a/src/dnode/inc/dnodeMWrite.h b/src/dnode/inc/dnodeMWrite.h index 7a3ec93446d..498fea81c59 100644 --- a/src/dnode/inc/dnodeMWrite.h +++ b/src/dnode/inc/dnodeMWrite.h @@ -22,6 +22,8 @@ extern "C" { int32_t dnodeInitMnodeWrite(); void dnodeCleanupMnodeWrite(); +int32_t dnodeAllocateMnodeWqueue(); +void dnodeFreeMnodeWqueue(); void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg); #ifdef __cplusplus diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c index 53e664b58b6..bde6cd2aa74 100644 --- a/src/dnode/src/dnodePeer.c +++ b/src/dnode/src/dnodePeer.c @@ -28,8 +28,7 @@ #include "dnodeInt.h" #include "dnodeMgmt.h" #include "dnodeVWrite.h" -#include "dnodeMRead.h" -#include "dnodeMWrite.h" +#include "dnodeMPeer.h" extern void dnodeUpdateMnodeIpSetForPeer(SRpcIpSet *pIpSet); static void (*dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *); @@ -50,11 +49,11 @@ int32_t dnodeInitServer() { dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_ALTER_STREAM] = dnodeDispatchToDnodeMgmt; dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CONFIG_DNODE] = dnodeDispatchToDnodeMgmt; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_TABLE] = dnodeDispatchToMnodeReadQueue; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = dnodeDispatchToMnodeReadQueue; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_AUTH] = dnodeDispatchToMnodeReadQueue; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = dnodeDispatchToMnodeWriteQueue; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = dnodeDispatchToMnodeWriteQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_TABLE] = dnodeDispatchToMnodePeerQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = dnodeDispatchToMnodePeerQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_AUTH] = dnodeDispatchToMnodePeerQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = dnodeDispatchToMnodePeerQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = dnodeDispatchToMnodePeerQueue; SRpcInit rpcInit; memset(&rpcInit, 0, sizeof(rpcInit)); @@ -103,16 +102,14 @@ static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) { rpcSendResponse(&rspMsg); return; } - + if (dnodeProcessReqMsgFp[pMsg->msgType]) { (*dnodeProcessReqMsgFp[pMsg->msgType])(pMsg); } else { + dTrace("RPC %p, message:%s not processed", pMsg->handle, taosMsg[pMsg->msgType]); rspMsg.code = TSDB_CODE_MSG_NOT_PROCESSED; rpcSendResponse(&rspMsg); rpcFreeCont(pMsg->pCont); - dTrace("RPC %p, message:%s not processed", pMsg->handle, taosMsg[pMsg->msgType]); - return; - } } @@ -148,13 +145,14 @@ void dnodeCleanupClient() { } static void dnodeProcessRspFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) { - if (dnodeProcessRspMsgFp[pMsg->msgType]) { - if (pMsg->msgType == TSDB_MSG_TYPE_DM_STATUS_RSP && pIpSet) { - dnodeUpdateMnodeIpSetForPeer(pIpSet); - } + if (pMsg->msgType == TSDB_MSG_TYPE_DM_STATUS_RSP && pIpSet) { + dnodeUpdateMnodeIpSetForPeer(pIpSet); + } + + if (dnodeProcessRspMsgFp[pMsg->msgType]) { (*dnodeProcessRspMsgFp[pMsg->msgType])(pMsg); } else { - dError("RPC %p, msg:%s is not processed", pMsg->handle, taosMsg[pMsg->msgType]); + mnodeProcessPeerRsp(pMsg); } rpcFreeCont(pMsg->pCont); diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index 68dfaef4084..bf40dd43260 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -61,9 +61,10 @@ int32_t dnodeInitShell() { dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_QUERY] = dnodeDispatchToMnodeWriteQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_STREAM] = dnodeDispatchToMnodeWriteQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_CONN] = dnodeDispatchToMnodeWriteQueue; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = dnodeDispatchToMnodeWriteQueue; - + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= dnodeDispatchToMnodeWriteQueue; + // the following message shall be treated as mnode query + dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = dnodeDispatchToMnodeReadQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONNECT] = dnodeDispatchToMnodeReadQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_USE_DB] = dnodeDispatchToMnodeReadQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLE_META] = dnodeDispatchToMnodeReadQueue; @@ -71,7 +72,6 @@ int32_t dnodeInitShell() { dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_TABLES_META] = dnodeDispatchToMnodeReadQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_SHOW] = dnodeDispatchToMnodeReadQueue; dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_RETRIEVE] = dnodeDispatchToMnodeReadQueue; - dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= dnodeDispatchToMnodeReadQueue; int32_t numOfThreads = tsNumOfCores * tsNumOfThreadsPerCore; numOfThreads = (int32_t) ((1.0 - tsRatioOfQueryThreads) * numOfThreads / 2.0); diff --git a/src/mnode/inc/mnodePeer.h b/src/mnode/inc/mnodePeer.h index c81617266d7..e409d90de96 100644 --- a/src/mnode/inc/mnodePeer.h +++ b/src/mnode/inc/mnodePeer.h @@ -24,6 +24,7 @@ extern "C" { void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); void mnodeAddPeerMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)); int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg); +void mnodeProcessPeerRsp(SRpcMsg *pMsg); #ifdef __cplusplus } diff --git a/src/mnode/src/mnodePeer.c b/src/mnode/src/mnodePeer.c index a4bb28b02ce..e17c52a0b1c 100644 --- a/src/mnode/src/mnodePeer.c +++ b/src/mnode/src/mnodePeer.c @@ -81,6 +81,4 @@ void mnodeProcessPeerRsp(SRpcMsg *pMsg) { } else { mError("msg:%s is not processed", pMsg->handle, taosMsg[pMsg->msgType]); } - - rpcFreeCont(pMsg->pCont); } From 82a3dcab888f29736427b78e688a2745df4c0ecd Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 28 May 2020 01:33:38 +0800 Subject: [PATCH 31/85] [td-430] fix bug while client does not retrieve or paritally retrieve result from vnode. --- src/client/src/tscServer.c | 8 +++++--- src/client/src/tscSql.c | 26 +++++++++++--------------- src/client/src/tscUtil.c | 2 ++ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 7d0ac09e66c..a1c50b15185 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -217,10 +217,12 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) { STscObj *pObj = pSql->pTscObj; // tscTrace("%p msg:%s is received from server", pSql, taosMsg[rpcMsg->msgType]); - if (pSql->freed || pObj->signature != pObj) { + if (pObj->signature != pObj) { tscTrace("%p sql is already released or DB connection is closed, freed:%d pObj:%p signature:%p", pSql, pSql->freed, pObj, pObj->signature); - tscFreeSqlObj(pSql); + if (pSql != pObj->pSql) { + tscFreeSqlObj(pSql); + } rpcFreeCont(rpcMsg->pCont); return; } @@ -1867,8 +1869,8 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) { return TSDB_CODE_CLI_OUT_OF_MEMORY; } - free(pTableMeta); tscTrace("%p recv table meta: %"PRId64 ", tid:%d, name:%s", pSql, pTableMeta->uid, pTableMeta->sid, pTableMetaInfo->name); + free(pTableMeta); return TSDB_CODE_SUCCESS; } diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 14605a571de..7a6cce4d7f7 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -576,26 +576,22 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) { * for each subquery. Because the failure of execution tsProcessSql may trigger the callback function * be executed, and the retry efforts may result in double free the resources, e.g.,SRetrieveSupport */ - if ((pCmd->command == TSDB_SQL_SELECT || pCmd->command == TSDB_SQL_SHOW || pCmd->command == TSDB_SQL_RETRIEVE || - pCmd->command == TSDB_SQL_FETCH) && - (pRes->code != TSDB_CODE_QUERY_CANCELLED && ((pRes->numOfRows > 0 && pCmd->command < TSDB_SQL_LOCAL && pRes->completed == false) || - (pRes->code == TSDB_CODE_SUCCESS && pRes->numOfRows == 0 && pCmd->command == TSDB_SQL_SELECT && - pSql->pStream == NULL && pTableMetaInfo->pTableMeta != NULL)))) { + if ((pCmd->command == TSDB_SQL_SELECT || + pCmd->command == TSDB_SQL_SHOW || + pCmd->command == TSDB_SQL_RETRIEVE || + pCmd->command == TSDB_SQL_FETCH) && + (pRes->code != TSDB_CODE_QUERY_CANCELLED && ((pCmd->command < TSDB_SQL_LOCAL && pRes->completed == false) || + (pRes->code == TSDB_CODE_SUCCESS && pCmd->command == TSDB_SQL_SELECT && pSql->pStream == NULL && pTableMetaInfo->pTableMeta != NULL)))) { pCmd->command = (pCmd->command > TSDB_SQL_MGMT) ? TSDB_SQL_RETRIEVE : TSDB_SQL_FETCH; - tscTrace("%p code:%d, numOfRows:%d, command:%d", pSql, pRes->code, pRes->numOfRows, pCmd->command); + tscTrace("%p send msg to free qhandle in vnode, code:%d, numOfRows:%d, command:%s", pSql, pRes->code, pRes->numOfRows, + sqlCmd[pCmd->command]); pSql->freed = 1; tscProcessSql(pSql); - - /* - * If release connection msg is sent to vnode, the corresponding SqlObj for async query can not be freed instantly, - * since its free operation is delegated to callback function, which is tscProcessMsgFromServer. - */ - STscObj* pObj = pSql->pTscObj; - if (pObj->pSql == pSql) { - pObj->pSql = NULL; - } + + // waits for response and then goes on + sem_wait(&pSql->rspSem); } else { // if no free resource msg is sent to vnode, we free this object immediately. STscObj* pTscObj = pSql->pTscObj; diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index ec9908ae969..4c8722ecea4 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -423,6 +423,8 @@ void tscFreeSqlObj(SSqlObj* pSql) { tfree(pCmd->payload); pCmd->allocSize = 0; + + tfree(pSql->sqlstr); free(pSql); } From c0a5f61f78910af5f0d82a281f56316d3a5ea5e0 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Wed, 27 May 2020 16:08:21 -0700 Subject: [PATCH 32/85] Found server crash bug TD-437 --- tests/pytest/crash_gen.py | 62 ++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 8a0a043fb02..43e03c4c344 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -74,7 +74,7 @@ def __init__(self, pool: ThreadPool, tid, self._dbConn = DbConn() def logDebug(self, msg): - logger.info(" TRD[{}] {}".format(self._tid, msg)) + logger.debug(" TRD[{}] {}".format(self._tid, msg)) def logInfo(self, msg): logger.info(" TRD[{}] {}".format(self._tid, msg)) @@ -222,7 +222,7 @@ def run(self): self.resetExecutedTasks() # clear the tasks after we are done # Get ready for next step - logger.info("<-- Step {} finished".format(self._curStep)) + logger.debug("<-- Step {} finished".format(self._curStep)) self._curStep += 1 # we are about to get into next step. TODO: race condition here! logger.debug("\r\n--> Step {} starts with main thread waking up".format(self._curStep)) # Now not all threads had time to go to sleep @@ -244,7 +244,7 @@ def run(self): logger.debug("Main thread joining all threads") self._pool.joinAll() # Get all threads to finish - logger.info("All threads finished") + logger.info("All worker thread finished") self._execStats.endExec() def logStats(self): @@ -257,7 +257,7 @@ def tapAllThreads(self): # in a deterministic manner wakeSeq.append(i) else: wakeSeq.insert(0, i) - logger.info("[TRD] Main thread waking up worker thread: {}".format(str(wakeSeq))) + logger.debug("[TRD] Main thread waking up worker thread: {}".format(str(wakeSeq))) # TODO: set dice seed to a deterministic value for i in wakeSeq: self._pool.threadList[i].tapStepGate() # TODO: maybe a bit too deep?! @@ -482,6 +482,14 @@ def __str__(self): def getInfo(self): raise RuntimeError("Must be overriden by child classes") + def equals(self, other): + if isinstance(other, int): + return self.getValIndex() == other + elif isinstance(other, AnyState): + return self.getValIndex() == other.getValIndex() + else: + raise RuntimeError("Unexpected comparison, type = {}".format(type(other))) + def verifyTasksToState(self, tasks, newState): raise RuntimeError("Must be overriden by child classes") @@ -623,8 +631,9 @@ def verifyTasksToState(self, tasks, newState): self.assertNoTask(tasks, DropFixedTableTask) self.assertNoTask(tasks, AddFixedDataTask) # self._state = self.STATE_TABLE_ONLY # no change - else: # did not drop table, did not insert data, did not read successfully, that is impossible - raise RuntimeError("Unexpected no-success scenarios") + # else: # did not drop table, did not insert data, did not read successfully, that is impossible + # raise RuntimeError("Unexpected no-success scenarios") + # TODO: need to revamp!! class StateHasData(AnyState): def getInfo(self): @@ -636,21 +645,23 @@ def getInfo(self): ] def verifyTasksToState(self, tasks, newState): - if ( self.hasSuccess(tasks, DropFixedTableTask) ): - self.assertAtMostOneSuccess(tasks, DropFixedTableTask) - # self._state = self.STATE_DB_ONLY - else: # no success dropping the table, table remains intact in this step - self.assertNoTask(tasks, DropFixedTableTask) # we should not have had such a task - - if ( not self.hasSuccess(tasks, AddFixedDataTask) ): # added data - # self._state = self.STATE_HAS_DATA - # else: - self.assertNoTask(tasks, AddFixedDataTask) - if ( not self.hasSuccess(tasks, ReadFixedDataTask) ): # simple able to read some data - # which is ok, then no state change - # self._state = self.STATE_HAS_DATA # no change - # else: # did not drop table, did not insert data, that is impossible? yeah, we might only had ReadData task - raise RuntimeError("Unexpected no-success scenarios") + if ( newState.equals(AnyState.STATE_EMPTY) ): + self.hasSuccess(tasks, DropDbTask) + self.assertAtMostOneSuccess(tasks, DropDbTask) # TODO: dicy + elif ( newState.equals(AnyState.STATE_DB_ONLY) ): + self.assertNoTask(tasks, DropDbTask) + self.hasSuccess(tasks, DropFixedTableTask) + self.assertAtMostOneSuccess(tasks, DropFixedTableTask) # TODO: dicy + elif ( newState.equals(AnyState.STATE_TABLE_ONLY) ): # data deleted + self.assertNoTask(tasks, DropDbTask) + self.assertNoTask(tasks, DropFixedTableTask) + self.assertNoTask(tasks, AddFixedDataTask) + # self.hasSuccess(tasks, DeleteDataTasks) + else: + self.assertNoTask(tasks, DropDbTask) + self.assertNoTask(tasks, DropFixedTableTask) + self.assertIfExistThenSuccess(tasks, ReadFixedDataTask) + # State of the database as we believe it to be class DbState(): @@ -1190,6 +1201,9 @@ def throwRange(cls, start, stop): # up to stop-1 class LoggingFilter(logging.Filter): def filter(self, record: logging.LogRecord): + if ( record.levelno >= logging.INFO ) : + return True # info or above always log + msg = record.msg # print("type = {}, value={}".format(type(msg), msg)) # sys.exit() @@ -1227,9 +1241,11 @@ def main(): global logger logger = logging.getLogger('CrashGen') - logger.addFilter(LoggingFilter()) + # logger.addFilter(LoggingFilter()) if ( gConfig.debug ): logger.setLevel(logging.DEBUG) # default seems to be INFO + else: + logger.setLevel(logging.INFO) ch = logging.StreamHandler() logger.addHandler(ch) @@ -1245,7 +1261,7 @@ def main(): tc.logStats() dbState.cleanUp() - logger.info("Finished running thread pool") + # logger.info("Crash_Gen execution finished") if __name__ == "__main__": main() From 5a601c83f137c982f0a265d6558acfa4f6180729 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 01:35:26 +0000 Subject: [PATCH 33/85] [TD-335] optimize mnode queue --- src/dnode/src/dnodeMPeer.c | 2 +- src/dnode/src/dnodeMRead.c | 2 +- src/dnode/src/dnodeMWrite.c | 2 +- src/inc/dnode.h | 8 +++++++- src/mnode/src/mnodeDnode.c | 2 +- src/mnode/src/mnodeMain.c | 9 ++++++++- src/mnode/src/mnodePeer.c | 6 +++--- src/mnode/src/mnodeRead.c | 13 +++++++------ src/mnode/src/mnodeShow.c | 3 +++ src/mnode/src/mnodeWrite.c | 15 ++++++++------- 10 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c index 400215472d2..dec4f5ef593 100644 --- a/src/dnode/src/dnodeMPeer.c +++ b/src/dnode/src/dnodeMPeer.c @@ -145,7 +145,7 @@ static void *dnodeProcessMnodePeerQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed", pPeerMsg->ahandle, taosMsg[pPeerMsg->msgType]); + dTrace("%p, msg:%s will be processed in mpeer queue", pPeerMsg->ahandle, taosMsg[pPeerMsg->msgType]); int32_t code = mnodeProcessPeerReq(pPeerMsg); dnodeSendRpcMnodePeerRsp(pPeerMsg, code); taosFreeQitem(pPeerMsg); diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c index 64375a3d7b8..2ab5f48a9ab 100644 --- a/src/dnode/src/dnodeMRead.c +++ b/src/dnode/src/dnodeMRead.c @@ -150,7 +150,7 @@ static void *dnodeProcessMnodeReadQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed", pReadMsg->ahandle, taosMsg[pReadMsg->msgType]); + dTrace("%p, msg:%s will be processed in mread queue", pReadMsg->ahandle, taosMsg[pReadMsg->msgType]); int32_t code = mnodeProcessRead(pReadMsg); dnodeSendRpcMnodeReadRsp(pReadMsg, code); taosFreeQitem(pReadMsg); diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c index 56022b4bf62..89c44d829b4 100644 --- a/src/dnode/src/dnodeMWrite.c +++ b/src/dnode/src/dnodeMWrite.c @@ -148,7 +148,7 @@ static void *dnodeProcessMnodeWriteQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed", pWriteMsg->ahandle, taosMsg[pWriteMsg->msgType]); + dTrace("%p, msg:%s will be processed in mwrite queue", pWriteMsg->ahandle, taosMsg[pWriteMsg->msgType]); int32_t code = mnodeProcessWrite(pWriteMsg); dnodeSendRpcMnodeWriteRsp(pWriteMsg, code); taosFreeQitem(pWriteMsg); diff --git a/src/inc/dnode.h b/src/inc/dnode.h index 54108af4b93..ff4cc7f81fd 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -51,10 +51,16 @@ void * dnodeGetMnodeInfos(); int32_t dnodeGetDnodeId(); void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); -void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); +int32_t dnodeAllocateMnodeWqueue(); +void dnodeFreeMnodeWqueue(); +int32_t dnodeAllocateMnodeRqueue(); +void dnodeFreeMnodeRqueue(); +int32_t dnodeAllocateMnodePqueue(); +void dnodeFreeMnodePqueue(); + void dnodeSendRpcMnodeWriteRsp(void *pMsg, int32_t code); void dnodeReprocessMnodeWriteMsg(void *pMsg); void dnodeDelayReprocessMnodeWriteMsg(void *pMsg); diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 57ce07dbcff..5872081d67b 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -314,7 +314,7 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) { if (pStatus->dnodeId == 0) { mTrace("dnode:%d %s, first access", pDnode->dnodeId, pDnode->dnodeEp); } else { - //mTrace("dnode:%d, status received, access times %d", pDnode->dnodeId, pDnode->lastAccess); + mTrace("dnode:%d, status received, access times %d", pDnode->dnodeId, pDnode->lastAccess); } int32_t openVnodes = htons(pStatus->openVnodes); diff --git a/src/mnode/src/mnodeMain.c b/src/mnode/src/mnodeMain.c index 6e3b3d24e97..f1be6a8a87d 100644 --- a/src/mnode/src/mnodeMain.c +++ b/src/mnode/src/mnodeMain.c @@ -53,6 +53,10 @@ int32_t mnodeStartSystem() { mkdir(tsMnodeDir, 0755); } + dnodeAllocateMnodeWqueue(); + dnodeAllocateMnodeRqueue(); + dnodeAllocateMnodePqueue(); + if (mnodeInitAccts() < 0) { mError("failed to init accts"); return -1; @@ -125,6 +129,9 @@ void mnodeCleanupSystem() { mPrint("starting to clean up mgmt"); tsMgmtIsRunning = false; + dnodeFreeMnodeWqueue(); + dnodeFreeMnodeRqueue(); + dnodeFreeMnodePqueue(); mnodeCleanupTimer(); mnodeCleanUpShow(); grantCleanUp(); @@ -152,7 +159,7 @@ void mgmtStopSystem() { } static void mnodeInitTimer() { - if (tsMnodeTmr != NULL) { + if (tsMnodeTmr == NULL) { tsMnodeTmr = taosTmrInit((tsMaxShellConns)*3, 200, 3600000, "MND"); } } diff --git a/src/mnode/src/mnodePeer.c b/src/mnode/src/mnodePeer.c index e17c52a0b1c..8acd12dce30 100644 --- a/src/mnode/src/mnodePeer.c +++ b/src/mnode/src/mnodePeer.c @@ -48,7 +48,7 @@ void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) { int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { if (pMsg->pCont == NULL) { - mError("msg:%s content is null", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mpeer queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -59,7 +59,7 @@ int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mpeer queue, will be redireced inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -68,7 +68,7 @@ int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { } if (tsMnodeProcessPeerMsgFp[pMsg->msgType] == NULL) { - mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mpeer queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c index 32790af03f3..172a27a52f7 100644 --- a/src/mnode/src/mnodeRead.c +++ b/src/mnode/src/mnodeRead.c @@ -43,7 +43,7 @@ void mnodeAddReadMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *pMsg)) { int32_t mnodeProcessRead(SMnodeMsg *pMsg) { if (pMsg->pCont == NULL) { - mError("msg:%s content is null", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mread queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -54,7 +54,7 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mread queue, will be redireced, inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -63,13 +63,14 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) { } if (tsMnodeProcessReadMsgFp[pMsg->msgType] == NULL) { - mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mread queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } - if (!mnodeInitMsg(pMsg)) { - mError("msg:%s not processed, reason:%s", taosMsg[pMsg->msgType], tstrerror(terrno)); - return terrno; + int32_t code = mnodeInitMsg(pMsg); + if (code != TSDB_CODE_SUCCESS) { + mError("%p, msg:%s in mread queue, not processed reason:%s", pMsg->ahandle, taosMsg[pMsg->msgType], tstrerror(code)); + return code; } return (*tsMnodeProcessReadMsgFp[pMsg->msgType])(pMsg); diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 37bcd075a52..2a42ad869e3 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -131,6 +131,9 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); pShow = mnodeSaveQhandle(pShow, showObjSize); + if (pShow == NULL) { + return TSDB_CODE_SERV_OUT_OF_MEMORY; + } pShowRsp->qhandle = htobe64((uint64_t) pShow); mTrace("show:%p, type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); diff --git a/src/mnode/src/mnodeWrite.c b/src/mnode/src/mnodeWrite.c index 33a5399fe26..1741d04fc67 100644 --- a/src/mnode/src/mnodeWrite.c +++ b/src/mnode/src/mnodeWrite.c @@ -42,7 +42,7 @@ void mnodeAddWriteMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)) int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { if (pMsg->pCont == NULL) { - mError("msg:%s content is null", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mwrite queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -53,7 +53,7 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("msg:%s will be redireced, inUse:%d", taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mwrite queue, will be redireced inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -62,17 +62,18 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { } if (tsMnodeProcessWriteMsgFp[pMsg->msgType] == NULL) { - mError("msg:%s not processed, no handle exist", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mwrite queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } - if (!mnodeInitMsg(pMsg)) { - mError("msg:%s not processed, reason:%s", taosMsg[pMsg->msgType], tstrerror(terrno)); - return terrno; + int32_t code = mnodeInitMsg(pMsg); + if (code != TSDB_CODE_SUCCESS) { + mError("%p, msg:%s in mwrite queue, not processed reason:%s", pMsg->ahandle, taosMsg[pMsg->msgType], tstrerror(code)); + return code; } if (!pMsg->pUser->writeAuth) { - mError("%p, msg:%s not processed, no rights", taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mwrite queue, not processed, no write auth", pMsg->ahandle, taosMsg[pMsg->msgType]); return TSDB_CODE_NO_RIGHTS; } From 1da4fa6aefb765f3219605dea5c799e48eca6306 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 28 May 2020 01:36:35 +0000 Subject: [PATCH 34/85] fix table encode and decode bug --- src/tsdb/src/tsdbMeta.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 8345dc5f8ba..15de4df3fd9 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -48,6 +48,7 @@ void tsdbEncodeTable(STable *pTable, char *buf, int *contLen) { ptr = tdEncodeSchema(ptr, pTable->tagSchema); } else if (pTable->type == TSDB_CHILD_TABLE) { dataRowCpy(ptr, pTable->tagVal); + ptr = POINTER_SHIFT(ptr, dataRowLen(pTable->tagVal)); } else { ptr = tdEncodeSchema(ptr, pTable->schema); } From 5c889fff5481b9433ede1af2b05696d2e412612f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 02:13:38 +0000 Subject: [PATCH 35/85] [TD-335] refact SMnodeMsg --- src/inc/mnode.h | 11 ++----- src/mnode/src/mnodeDb.c | 11 ++++--- src/mnode/src/mnodeDnode.c | 9 +++--- src/mnode/src/mnodeInt.c | 9 ++---- src/mnode/src/mnodePeer.c | 14 ++++----- src/mnode/src/mnodeRead.c | 15 +++++----- src/mnode/src/mnodeShow.c | 16 +++++----- src/mnode/src/mnodeTable.c | 59 ++++++++++++++++++------------------- src/mnode/src/mnodeUser.c | 8 ++--- src/mnode/src/mnodeVgroup.c | 12 ++++---- src/mnode/src/mnodeWrite.c | 17 ++++++----- 11 files changed, 87 insertions(+), 94 deletions(-) diff --git a/src/inc/mnode.h b/src/inc/mnode.h index da0a899f37e..513e81a4614 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -29,23 +29,18 @@ struct STableObj; struct SRpcMsg; typedef struct { - int len; - void *rsp; + int32_t len; + void * rsp; } SMnodeRsp; typedef struct SMnodeMsg { SMnodeRsp rpcRsp; - uint8_t msgType; int8_t received; int8_t successed; int8_t expected; int8_t retry; - int8_t maxRetry; - int32_t contLen; int32_t code; - void * ahandle; - void * thandle; - void * pCont; + struct SRpcMsg rpcMsg; struct SAcctObj * pAcct; struct SDnodeObj *pDnode; struct SUserObj * pUser; diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index 09fd7f5b3e1..12209882214 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -750,8 +750,7 @@ static int32_t mnodeSetDbDropping(SDbObj *pDb) { } static int32_t mnodeProcessCreateDbMsg(SMnodeMsg *pMsg) { - SCMCreateDbMsg *pCreate = pMsg->pCont; - + SCMCreateDbMsg *pCreate = pMsg->rpcMsg.pCont; pCreate->maxTables = htonl(pCreate->maxTables); pCreate->cacheBlockSize = htonl(pCreate->cacheBlockSize); pCreate->totalBlocks = htonl(pCreate->totalBlocks); @@ -937,8 +936,8 @@ static int32_t mnodeAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) { } static int32_t mnodeProcessAlterDbMsg(SMnodeMsg *pMsg) { - SCMAlterDbMsg *pAlter = pMsg->pCont; - mTrace("db:%s, alter db msg is received from thandle:%p", pAlter->db, pMsg->thandle); + SCMAlterDbMsg *pAlter = pMsg->rpcMsg.pCont; + mTrace("db:%s, alter db msg is received from thandle:%p", pAlter->db, pMsg->rpcMsg.handle); if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pAlter->db); if (pMsg->pDb == NULL) { @@ -974,8 +973,8 @@ static int32_t mnodeDropDb(SMnodeMsg *pMsg) { } static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg) { - SCMDropDbMsg *pDrop = pMsg->pCont; - mTrace("db:%s, drop db msg is received from thandle:%p", pDrop->db, pMsg->thandle); + SCMDropDbMsg *pDrop = pMsg->rpcMsg.pCont; + mTrace("db:%s, drop db msg is received from thandle:%p", pDrop->db, pMsg->rpcMsg.handle); if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pDrop->db); if (pMsg->pDb == NULL) { diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 5872081d67b..8ce710110ea 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -15,6 +15,7 @@ #define _DEFAULT_SOURCE #include "os.h" +#include "trpc.h" #include "tgrant.h" #include "tbalance.h" #include "tglobal.h" @@ -240,7 +241,7 @@ void mnodeUpdateDnode(SDnodeObj *pDnode) { } static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg) { - SCMCfgDnodeMsg *pCmCfgDnode = pMsg->pCont; + SCMCfgDnodeMsg *pCmCfgDnode = pMsg->rpcMsg.pCont; if (pCmCfgDnode->ep[0] == 0) { strcpy(pCmCfgDnode->ep, tsLocalEp); } else { @@ -275,7 +276,7 @@ static void mnodeProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) { } static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) { - SDMStatusMsg *pStatus = pMsg->pCont; + SDMStatusMsg *pStatus = pMsg->rpcMsg.pCont; pStatus->dnodeId = htonl(pStatus->dnodeId); pStatus->moduleStatus = htonl(pStatus->moduleStatus); pStatus->lastReboot = htonl(pStatus->lastReboot); @@ -442,7 +443,7 @@ static int32_t mnodeDropDnodeByEp(char *ep) { } static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) { - SCMCreateDnodeMsg *pCreate = pMsg->pCont; + SCMCreateDnodeMsg *pCreate = pMsg->rpcMsg.pCont; if (strcmp(pMsg->pUser->user, "root") != 0) { return TSDB_CODE_NO_RIGHTS; @@ -462,7 +463,7 @@ static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) { } static int32_t mnodeProcessDropDnodeMsg(SMnodeMsg *pMsg) { - SCMDropDnodeMsg *pDrop = pMsg->pCont; + SCMDropDnodeMsg *pDrop = pMsg->rpcMsg.pCont; if (strcmp(pMsg->pUser->user, "root") != 0) { return TSDB_CODE_NO_RIGHTS; diff --git a/src/mnode/src/mnodeInt.c b/src/mnode/src/mnodeInt.c index a701f1e1f4b..1cb421bef72 100644 --- a/src/mnode/src/mnodeInt.c +++ b/src/mnode/src/mnodeInt.c @@ -35,14 +35,11 @@ #include "mnodeVgroup.h" void mnodeCreateMsg(SMnodeMsg *pMsg, SRpcMsg *rpcMsg) { - pMsg->thandle = rpcMsg->handle; - pMsg->msgType = rpcMsg->msgType; - pMsg->contLen = rpcMsg->contLen; - pMsg->pCont = rpcMsg->pCont; + pMsg->rpcMsg = *rpcMsg; } int32_t mnodeInitMsg(SMnodeMsg *pMsg) { - pMsg->pUser = mnodeGetUserFromConn(pMsg->thandle); + pMsg->pUser = mnodeGetUserFromConn(pMsg->rpcMsg.handle); if (pMsg->pUser == NULL) { return TSDB_CODE_INVALID_USER; } @@ -52,7 +49,7 @@ int32_t mnodeInitMsg(SMnodeMsg *pMsg) { void mnodeCleanupMsg(SMnodeMsg *pMsg) { if (pMsg != NULL) { - if (pMsg->pCont) rpcFreeCont(pMsg->pCont); + if (pMsg->rpcMsg.pCont) rpcFreeCont(pMsg->rpcMsg.pCont); if (pMsg->pUser) mnodeDecUserRef(pMsg->pUser); if (pMsg->pDb) mnodeDecDbRef(pMsg->pDb); if (pMsg->pVgroup) mnodeDecVgroupRef(pMsg->pVgroup); diff --git a/src/mnode/src/mnodePeer.c b/src/mnode/src/mnodePeer.c index 8acd12dce30..3594b60cf18 100644 --- a/src/mnode/src/mnodePeer.c +++ b/src/mnode/src/mnodePeer.c @@ -47,8 +47,8 @@ void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) { } int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { - if (pMsg->pCont == NULL) { - mError("%p, msg:%s in mpeer queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (pMsg->rpcMsg.pCont == NULL) { + mError("%p, msg:%s in mpeer queue, content is null", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -59,7 +59,7 @@ int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s in mpeer queue, will be redireced inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mpeer queue, will be redireced inUse:%d", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -67,18 +67,18 @@ int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (tsMnodeProcessPeerMsgFp[pMsg->msgType] == NULL) { - mError("%p, msg:%s in mpeer queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (tsMnodeProcessPeerMsgFp[pMsg->rpcMsg.msgType] == NULL) { + mError("%p, msg:%s in mpeer queue, not processed", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } - return (*tsMnodeProcessPeerMsgFp[pMsg->msgType])(pMsg); + return (*tsMnodeProcessPeerMsgFp[pMsg->rpcMsg.msgType])(pMsg); } void mnodeProcessPeerRsp(SRpcMsg *pMsg) { if (tsMnodeProcessPeerRspFp[pMsg->msgType]) { (*tsMnodeProcessPeerRspFp[pMsg->msgType])(pMsg); } else { - mError("msg:%s is not processed", pMsg->handle, taosMsg[pMsg->msgType]); + mError("%p, msg:%s is not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); } } diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c index 172a27a52f7..cc58f890413 100644 --- a/src/mnode/src/mnodeRead.c +++ b/src/mnode/src/mnodeRead.c @@ -15,6 +15,7 @@ #define _DEFAULT_SOURCE #include "os.h" +#include "trpc.h" #include "taosdef.h" #include "tsched.h" #include "tbalance.h" @@ -42,8 +43,8 @@ void mnodeAddReadMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *pMsg)) { } int32_t mnodeProcessRead(SMnodeMsg *pMsg) { - if (pMsg->pCont == NULL) { - mError("%p, msg:%s in mread queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (pMsg->rpcMsg.pCont == NULL) { + mError("%p, msg:%s in mread queue, content is null", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -54,7 +55,7 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s in mread queue, will be redireced, inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mread queue, will be redireced, inUse:%d", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -62,16 +63,16 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (tsMnodeProcessReadMsgFp[pMsg->msgType] == NULL) { - mError("%p, msg:%s in mread queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (tsMnodeProcessReadMsgFp[pMsg->rpcMsg.msgType] == NULL) { + mError("%p, msg:%s in mread queue, not processed", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } int32_t code = mnodeInitMsg(pMsg); if (code != TSDB_CODE_SUCCESS) { - mError("%p, msg:%s in mread queue, not processed reason:%s", pMsg->ahandle, taosMsg[pMsg->msgType], tstrerror(code)); + mError("%p, msg:%s in mread queue, not processed reason:%s", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType], tstrerror(code)); return code; } - return (*tsMnodeProcessReadMsgFp[pMsg->msgType])(pMsg); + return (*tsMnodeProcessReadMsgFp[pMsg->rpcMsg.msgType])(pMsg); } diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 2a42ad869e3..c29c3dab684 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -106,7 +106,7 @@ static char *mnodeGetShowType(int32_t showType) { } static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { - SCMShowMsg *pShowMsg = pMsg->pCont; + SCMShowMsg *pShowMsg = pMsg->rpcMsg.pCont; if (pShowMsg->type >= TSDB_MGMT_TABLE_MAX) { return TSDB_CODE_INVALID_MSG_TYPE; } @@ -137,7 +137,7 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { pShowRsp->qhandle = htobe64((uint64_t) pShow); mTrace("show:%p, type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); - int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->thandle); + int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->rpcMsg.handle); if (code == 0) { pMsg->rpcRsp.rsp = pShowRsp; pMsg->rpcRsp.len = sizeof(SCMShowRsp) + sizeof(SSchema) * pShow->numOfColumns; @@ -153,7 +153,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { int32_t rowsToRead = 0; int32_t size = 0; int32_t rowsRead = 0; - SRetrieveTableMsg *pRetrieve = pMsg->pCont; + SRetrieveTableMsg *pRetrieve = pMsg->rpcMsg.pCont; pRetrieve->qhandle = htobe64(pRetrieve->qhandle); /* @@ -187,7 +187,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { // if free flag is set, client wants to clean the resources if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) - rowsRead = (*tsMnodeShowRetrieveFp[pShow->type])(pShow, pRsp->data, rowsToRead, pMsg->thandle); + rowsRead = (*tsMnodeShowRetrieveFp[pShow->type])(pShow, pRsp->data, rowsToRead, pMsg->rpcMsg.handle); if (rowsRead < 0) { rpcFreeCont(pRsp); @@ -236,12 +236,12 @@ static int32_t mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) { } static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) { - SCMConnectMsg *pConnectMsg = pMsg->pCont; + SCMConnectMsg *pConnectMsg = pMsg->rpcMsg.pCont; int32_t code = TSDB_CODE_SUCCESS; SRpcConnInfo connInfo; - if (rpcGetConnInfo(pMsg->thandle, &connInfo) != 0) { - mError("thandle:%p is already released while process connect msg", pMsg->thandle); + if (rpcGetConnInfo(pMsg->rpcMsg.handle, &connInfo) != 0) { + mError("thandle:%p is already released while process connect msg", pMsg->rpcMsg.handle); code = TSDB_CODE_INVALID_MSG_CONTENT; goto connect_over; } @@ -291,7 +291,7 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) { } static int32_t mnodeProcessUseMsg(SMnodeMsg *pMsg) { - SCMUseDbMsg *pUseDbMsg = pMsg->pCont; + SCMUseDbMsg *pUseDbMsg = pMsg->rpcMsg.pCont; int32_t code = TSDB_CODE_SUCCESS; if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pUseDbMsg->db); diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 9399c29be88..7eb63207637 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -660,7 +660,7 @@ static void mgmtExtractTableName(char* tableId, char* name) { } static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) { - SCMCreateTableMsg *pCreate = pMsg->pCont; + SCMCreateTableMsg *pCreate = pMsg->rpcMsg.pCont; if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCreate->db); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { @@ -683,16 +683,16 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) { } if (pCreate->numOfTags != 0) { - mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->thandle); + mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); return mnodeProcessCreateSuperTableMsg(pMsg); } else { - mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->thandle); + mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); return mnodeProcessCreateChildTableMsg(pMsg); } } static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) { - SCMDropTableMsg *pDrop = pMsg->pCont; + SCMDropTableMsg *pDrop = pMsg->rpcMsg.pCont; if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pDrop->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { mError("table:%s, failed to drop table, db not selected", pDrop->tableId); @@ -725,9 +725,9 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) { } static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { - SCMTableInfoMsg *pInfo = pMsg->pCont; + SCMTableInfoMsg *pInfo = pMsg->rpcMsg.pCont; pInfo->createFlag = htons(pInfo->createFlag); - mTrace("table:%s, table meta msg is received from thandle:%p, createFlag:%d", pInfo->tableId, pMsg->thandle, pInfo->createFlag); + mTrace("table:%s, table meta msg is received from thandle:%p, createFlag:%d", pInfo->tableId, pMsg->rpcMsg.handle, pInfo->createFlag); if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pInfo->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { @@ -753,7 +753,7 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { } static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { - SCMCreateTableMsg *pCreate = pMsg->pCont; + SCMCreateTableMsg *pCreate = pMsg->rpcMsg.pCont; SSuperTableObj *pStable = calloc(1, sizeof(SSuperTableObj)); if (pStable == NULL) { mError("table:%s, failed to create, no enough memory", pCreate->tableId); @@ -1257,7 +1257,7 @@ static int32_t mnodeGetSuperTableMeta(SMnodeMsg *pMsg) { } static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { - SCMSTableVgroupMsg *pInfo = pMsg->pCont; + SCMSTableVgroupMsg *pInfo = pMsg->rpcMsg.pCont; int32_t numOfTable = htonl(pInfo->numOfTables); // reserve space @@ -1479,7 +1479,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb } static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) { - SCMCreateTableMsg *pCreate = pMsg->pCont; + SCMCreateTableMsg *pCreate = pMsg->rpcMsg.pCont; int32_t code = grantCheck(TSDB_GRANT_TIMESERIES); if (code != TSDB_CODE_SUCCESS) { mError("table:%s, failed to create, grant timeseries failed", pCreate->tableId); @@ -1521,8 +1521,6 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) { } SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pVgroup); - pMsg->ahandle = pMsg->pTable; - pMsg->maxRetry = 10; SRpcMsg rpcMsg = { .handle = pMsg, .pCont = pMDCreate, @@ -1559,7 +1557,6 @@ static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg) { SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pMsg->pVgroup); mPrint("table:%s, send drop ctable msg", pDrop->tableId); - pMsg->ahandle = pMsg->pTable; SRpcMsg rpcMsg = { .handle = pMsg, .pCont = pDrop, @@ -1726,7 +1723,7 @@ static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { } static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { - SCMTableInfoMsg *pInfo = pMsg->pCont; + SCMTableInfoMsg *pInfo = pMsg->rpcMsg.pCont; STagData* pTag = (STagData*)pInfo->tags; int32_t contLen = sizeof(SCMCreateTableMsg) + offsetof(STagData, data) + ntohl(pTag->dataLen); @@ -1744,10 +1741,10 @@ static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { memcpy(pCreateMsg->schema, pInfo->tags, contLen - sizeof(SCMCreateTableMsg)); - pMsg->msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; - rpcFreeCont(pMsg->pCont); - pMsg->pCont = pCreateMsg; - pMsg->contLen = contLen; + rpcFreeCont(pMsg->rpcMsg.pCont); + pMsg->rpcMsg.msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; + pMsg->rpcMsg.pCont = pCreateMsg; + pMsg->rpcMsg.contLen = contLen; mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, pInfo->tags); @@ -1868,7 +1865,7 @@ static SChildTableObj* mnodeGetTableByPos(int32_t vnode, int32_t sid) { } static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { - SDMConfigTableMsg *pCfg = (SDMConfigTableMsg *) pMsg->pCont; + SDMConfigTableMsg *pCfg = pMsg->rpcMsg.pCont; pCfg->dnode = htonl(pCfg->dnode); pCfg->vnode = htonl(pCfg->vnode); pCfg->sid = htonl(pCfg->sid); @@ -1911,8 +1908,9 @@ static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg) { SMnodeMsg *mnodeMsg = rpcMsg->handle; mnodeMsg->received++; - SChildTableObj *pTable = mnodeMsg->ahandle; - mPrint("table:%s, drop table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, tstrerror(rpcMsg->code)); + SChildTableObj *pTable = (SChildTableObj *)mnodeMsg->pTable; + assert(pTable); + mPrint("table:%s, drop table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->rpcMsg.handle, tstrerror(rpcMsg->code)); if (rpcMsg->code != TSDB_CODE_SUCCESS) { mError("table:%s, failed to drop in dnode, reason:%s", pTable->info.tableId, tstrerror(rpcMsg->code)); @@ -1957,18 +1955,19 @@ static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { SMnodeMsg *mnodeMsg = rpcMsg->handle; mnodeMsg->received++; - SChildTableObj *pTable = mnodeMsg->ahandle; - mTrace("table:%s, create table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, + SChildTableObj *pTable = (SChildTableObj *)mnodeMsg->pTable; + assert(pTable); + mTrace("table:%s, create table rsp received, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->rpcMsg.handle, tstrerror(rpcMsg->code)); if (rpcMsg->code != TSDB_CODE_SUCCESS) { - if (mnodeMsg->retry++ < mnodeMsg->maxRetry) { + if (mnodeMsg->retry++ < 10) { mTrace("table:%s, create table rsp received, retry:%d thandle:%p result:%s", pTable->info.tableId, - mnodeMsg->retry, mnodeMsg->thandle, tstrerror(rpcMsg->code)); + mnodeMsg->retry, mnodeMsg->rpcMsg.handle, tstrerror(rpcMsg->code)); dnodeDelayReprocessMnodeWriteMsg(mnodeMsg); } else { mError("table:%s, failed to create in dnode, thandle:%p result:%s", pTable->info.tableId, - mnodeMsg->thandle, tstrerror(rpcMsg->code)); + mnodeMsg->rpcMsg.handle, tstrerror(rpcMsg->code)); SSdbOper oper = { .type = SDB_OPER_GLOBAL, @@ -1980,9 +1979,9 @@ static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg) { dnodeSendRpcMnodeWriteRsp(mnodeMsg, rpcMsg->code); } } else { - mTrace("table:%s, created in dnode, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->thandle, + mTrace("table:%s, created in dnode, thandle:%p result:%s", pTable->info.tableId, mnodeMsg->rpcMsg.handle, tstrerror(rpcMsg->code)); - SCMCreateTableMsg *pCreate = mnodeMsg->pCont; + SCMCreateTableMsg *pCreate = mnodeMsg->rpcMsg.pCont; if (pCreate->getMeta) { mTrace("table:%s, continue to get meta", pTable->info.tableId); mnodeMsg->retry = 0; @@ -1999,7 +1998,7 @@ static void mnodeProcessAlterTableRsp(SRpcMsg *rpcMsg) { } static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) { - SCMMultiTableInfoMsg *pInfo = pMsg->pCont; + SCMMultiTableInfoMsg *pInfo = pMsg->rpcMsg.pCont; pInfo->numOfTables = htonl(pInfo->numOfTables); int32_t totalMallocLen = 4 * 1024 * 1024; // first malloc 4 MB, subsequent reallocation as twice @@ -2183,8 +2182,8 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows } static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) { - SCMAlterTableMsg *pAlter = pMsg->pCont; - mTrace("table:%s, alter table msg is received from thandle:%p", pAlter->tableId, pMsg->thandle); + SCMAlterTableMsg *pAlter = pMsg->rpcMsg.pCont; + mTrace("table:%s, alter table msg is received from thandle:%p", pAlter->tableId, pMsg->rpcMsg.handle); if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pAlter->tableId); if (pMsg->pDb == NULL || pMsg->pDb->status != TSDB_DB_STATUS_READY) { diff --git a/src/mnode/src/mnodeUser.c b/src/mnode/src/mnodeUser.c index ad6370302ab..a1edaaa0a8b 100644 --- a/src/mnode/src/mnodeUser.c +++ b/src/mnode/src/mnodeUser.c @@ -352,7 +352,7 @@ static int32_t mnodeProcessCreateUserMsg(SMnodeMsg *pMsg) { SUserObj *pOperUser = pMsg->pUser; if (pOperUser->superAuth) { - SCMCreateUserMsg *pCreate = pMsg->pCont; + SCMCreateUserMsg *pCreate = pMsg->rpcMsg.pCont; code = mnodeCreateUser(pOperUser->pAcct, pCreate->user, pCreate->pass); if (code == TSDB_CODE_SUCCESS) { mLPrint("user:%s, is created by %s", pCreate->user, pOperUser->user); @@ -369,7 +369,7 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; - SCMAlterUserMsg *pAlter = pMsg->pCont; + SCMAlterUserMsg *pAlter = pMsg->rpcMsg.pCont; SUserObj *pUser = mnodeGetUser(pAlter->user); if (pUser == NULL) { return TSDB_CODE_INVALID_USER; @@ -459,7 +459,7 @@ static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) { int32_t code; SUserObj *pOperUser = pMsg->pUser; - SCMDropUserMsg *pDrop = pMsg->pCont; + SCMDropUserMsg *pDrop = pMsg->rpcMsg.pCont; SUserObj *pUser = mnodeGetUser(pDrop->user); if (pUser == NULL) { return TSDB_CODE_INVALID_USER; @@ -552,7 +552,7 @@ int32_t mnodeRetriveAuth(char *user, char *spi, char *encrypt, char *secret, cha } static int32_t mnodeProcessAuthMsg(SMnodeMsg *pMsg) { - SDMAuthMsg *pAuthMsg = pMsg->pCont; + SDMAuthMsg *pAuthMsg = pMsg->rpcMsg.pCont; SDMAuthRsp *pAuthRsp = rpcMallocCont(sizeof(SDMAuthRsp)); pMsg->rpcRsp.rsp = pAuthRsp; diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 69baa09c950..0d235f898d8 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -331,7 +331,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { mPrint("vgId:%d, index:%d, dnode:%d", pVgroup->vgId, i, pVgroup->vnodeGid[i].dnodeId); } - pMsg->ahandle = pVgroup; + pMsg->pVgroup = pVgroup; pMsg->expected = pVgroup->numOfVnodes; mnodeSendCreateVgroupMsg(pVgroup, pMsg); @@ -626,10 +626,10 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { mnodeMsg->successed++; } - SVgObj *pVgroup = mnodeMsg->ahandle; + SVgObj *pVgroup = mnodeMsg->pVgroup; mTrace("vgId:%d, create vnode rsp received, result:%s received:%d successed:%d expected:%d, thandle:%p ahandle:%p", pVgroup->vgId, tstrerror(rpcMsg->code), mnodeMsg->received, mnodeMsg->successed, mnodeMsg->expected, - mnodeMsg->thandle, rpcMsg->handle); + mnodeMsg->rpcMsg.handle, rpcMsg->handle); if (mnodeMsg->received != mnodeMsg->expected) return; @@ -690,10 +690,10 @@ static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg) { mnodeMsg->successed++; } - SVgObj *pVgroup = mnodeMsg->ahandle; + SVgObj *pVgroup = mnodeMsg->pVgroup; mTrace("vgId:%d, drop vnode rsp received, result:%s received:%d successed:%d expected:%d, thandle:%p ahandle:%p", pVgroup->vgId, tstrerror(rpcMsg->code), mnodeMsg->received, mnodeMsg->successed, mnodeMsg->expected, - mnodeMsg->thandle, rpcMsg->handle); + mnodeMsg->rpcMsg.handle, rpcMsg->handle); if (mnodeMsg->received != mnodeMsg->expected) return; @@ -711,7 +711,7 @@ static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg) { } static int32_t mnodeProcessVnodeCfgMsg(SMnodeMsg *pMsg) { - SDMConfigVnodeMsg *pCfg = (SDMConfigVnodeMsg *) pMsg->pCont; + SDMConfigVnodeMsg *pCfg = pMsg->rpcMsg.pCont; pCfg->dnodeId = htonl(pCfg->dnodeId); pCfg->vgId = htonl(pCfg->vgId); diff --git a/src/mnode/src/mnodeWrite.c b/src/mnode/src/mnodeWrite.c index 1741d04fc67..8b3d82d32a5 100644 --- a/src/mnode/src/mnodeWrite.c +++ b/src/mnode/src/mnodeWrite.c @@ -20,6 +20,7 @@ #include "tbalance.h" #include "tgrant.h" #include "tglobal.h" +#include "trpc.h" #include "mnode.h" #include "dnode.h" #include "mnodeDef.h" @@ -41,8 +42,8 @@ void mnodeAddWriteMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg)) } int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { - if (pMsg->pCont == NULL) { - mError("%p, msg:%s in mwrite queue, content is null", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (pMsg->rpcMsg.pCont == NULL) { + mError("%p, msg:%s in mwrite queue, content is null", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_INVALID_MSG_LEN; } @@ -53,7 +54,7 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { rpcRsp->rsp = ipSet; rpcRsp->len = sizeof(SRpcIpSet); - mTrace("%p, msg:%s in mwrite queue, will be redireced inUse:%d", pMsg->ahandle, taosMsg[pMsg->msgType], ipSet->inUse); + mTrace("%p, msg:%s in mwrite queue, will be redireced inUse:%d", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType], ipSet->inUse); for (int32_t i = 0; i < ipSet->numOfIps; ++i) { mTrace("mnode index:%d ip:%s:%d", i, ipSet->fqdn[i], htons(ipSet->port[i])); } @@ -61,21 +62,21 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) { return TSDB_CODE_REDIRECT; } - if (tsMnodeProcessWriteMsgFp[pMsg->msgType] == NULL) { - mError("%p, msg:%s in mwrite queue, not processed", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (tsMnodeProcessWriteMsgFp[pMsg->rpcMsg.msgType] == NULL) { + mError("%p, msg:%s in mwrite queue, not processed", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_MSG_NOT_PROCESSED; } int32_t code = mnodeInitMsg(pMsg); if (code != TSDB_CODE_SUCCESS) { - mError("%p, msg:%s in mwrite queue, not processed reason:%s", pMsg->ahandle, taosMsg[pMsg->msgType], tstrerror(code)); + mError("%p, msg:%s in mwrite queue, not processed reason:%s", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType], tstrerror(code)); return code; } if (!pMsg->pUser->writeAuth) { - mError("%p, msg:%s in mwrite queue, not processed, no write auth", pMsg->ahandle, taosMsg[pMsg->msgType]); + mError("%p, msg:%s in mwrite queue, not processed, no write auth", pMsg->rpcMsg.ahandle, taosMsg[pMsg->rpcMsg.msgType]); return TSDB_CODE_NO_RIGHTS; } - return (*tsMnodeProcessWriteMsgFp[pMsg->msgType])(pMsg); + return (*tsMnodeProcessWriteMsgFp[pMsg->rpcMsg.msgType])(pMsg); } From 85c9508fb7dd606e628f062c429de8aef8412f20 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 28 May 2020 03:39:31 +0000 Subject: [PATCH 36/85] fix table/column_num.py coredump --- src/tsdb/src/tsdbMeta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 5d2123a1d43..e320de9827c 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -406,7 +406,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { // Write to meta file int bufLen = 0; - char *buf = malloc(4096); + char *buf = malloc(1024*1024); if (newSuper) { tsdbEncodeTable(super, buf, &bufLen); tsdbInsertMetaRecord(pMeta->mfh, super->tableId.uid, buf, bufLen); From a6c3ffd5403e3658af3af802ce685ac2519ddbdb Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 03:40:02 +0000 Subject: [PATCH 37/85] [TD-335] fix invalid read in mwrite queue --- src/dnode/inc/dnodeMgmt.h | 2 +- src/dnode/src/dnodeMPeer.c | 14 +++++++++----- src/dnode/src/dnodeMRead.c | 16 ++++++++++------ src/dnode/src/dnodeMWrite.c | 24 +++++++++++------------- src/dnode/src/dnodeMgmt.c | 8 ++++---- 5 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/dnode/inc/dnodeMgmt.h b/src/dnode/inc/dnodeMgmt.h index 28844ba0e52..1a788610e5b 100644 --- a/src/dnode/inc/dnodeMgmt.h +++ b/src/dnode/inc/dnodeMgmt.h @@ -32,7 +32,7 @@ void* dnodeGetVnodeWal(void *pVnode); void* dnodeGetVnodeTsdb(void *pVnode); void dnodeReleaseVnode(void *pVnode); -void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell); +void dnodeSendRedirectMsg(SRpcMsg *rpcMsg, bool forShell); void dnodeGetMnodeIpSetForPeer(void *ipSet); void dnodeGetMnodeIpSetForShell(void *ipSe); diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c index dec4f5ef593..46e7a0a7e2e 100644 --- a/src/dnode/src/dnodeMPeer.c +++ b/src/dnode/src/dnodeMPeer.c @@ -111,7 +111,7 @@ void dnodeFreeMnodePqueue() { void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg) { if (!mnodeIsRunning() || tsMPeerQueue == NULL) { - dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, false); + dnodeSendRedirectMsg(pMsg, false); return; } @@ -120,18 +120,23 @@ void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg) { taosWriteQitem(tsMPeerQueue, TAOS_QTYPE_RPC, pPeer); } +static void dnodeFreeMnodePeadMsg(SMnodeMsg *pPeer) { + mnodeCleanupMsg(pPeer); + taosFreeQitem(pPeer); +} + static void dnodeSendRpcMnodePeerRsp(SMnodeMsg *pPeer, int32_t code) { if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; SRpcMsg rpcRsp = { - .handle = pPeer->thandle, + .handle = pPeer->rpcMsg.handle, .pCont = pPeer->rpcRsp.rsp, .contLen = pPeer->rpcRsp.len, .code = code, }; rpcSendResponse(&rpcRsp); - mnodeCleanupMsg(pPeer); + dnodeFreeMnodePeadMsg(pPeer); } static void *dnodeProcessMnodePeerQueue(void *param) { @@ -145,10 +150,9 @@ static void *dnodeProcessMnodePeerQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed in mpeer queue", pPeerMsg->ahandle, taosMsg[pPeerMsg->msgType]); + dTrace("%p, msg:%s will be processed in mpeer queue", pPeerMsg->rpcMsg.ahandle, taosMsg[pPeerMsg->rpcMsg.msgType]); int32_t code = mnodeProcessPeerReq(pPeerMsg); dnodeSendRpcMnodePeerRsp(pPeerMsg, code); - taosFreeQitem(pPeerMsg); } return NULL; diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c index 2ab5f48a9ab..9a977ffe837 100644 --- a/src/dnode/src/dnodeMRead.c +++ b/src/dnode/src/dnodeMRead.c @@ -116,7 +116,7 @@ void dnodeFreeMnodeRqueue() { void dnodeDispatchToMnodeReadQueue(SRpcMsg *pMsg) { if (!mnodeIsRunning() || tsMReadQueue == NULL) { - dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, true); + dnodeSendRedirectMsg(pMsg, true); return; } @@ -125,18 +125,23 @@ void dnodeDispatchToMnodeReadQueue(SRpcMsg *pMsg) { taosWriteQitem(tsMReadQueue, TAOS_QTYPE_RPC, pRead); } +static void dnodeFreeMnodeReadMsg(SMnodeMsg *pRead) { + mnodeCleanupMsg(pRead); + taosFreeQitem(pRead); +} + static void dnodeSendRpcMnodeReadRsp(SMnodeMsg *pRead, int32_t code) { if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; SRpcMsg rpcRsp = { - .handle = pRead->thandle, + .handle = pRead->rpcMsg.handle, .pCont = pRead->rpcRsp.rsp, .contLen = pRead->rpcRsp.len, .code = code, }; rpcSendResponse(&rpcRsp); - mnodeCleanupMsg(pRead); + dnodeFreeMnodeReadMsg(pRead); } static void *dnodeProcessMnodeReadQueue(void *param) { @@ -150,10 +155,9 @@ static void *dnodeProcessMnodeReadQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed in mread queue", pReadMsg->ahandle, taosMsg[pReadMsg->msgType]); + dTrace("%p, msg:%s will be processed in mread queue", pReadMsg->rpcMsg.ahandle, taosMsg[pReadMsg->rpcMsg.msgType]); int32_t code = mnodeProcessRead(pReadMsg); - dnodeSendRpcMnodeReadRsp(pReadMsg, code); - taosFreeQitem(pReadMsg); + dnodeSendRpcMnodeReadRsp(pReadMsg, code); } return NULL; diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c index 89c44d829b4..b54d295d053 100644 --- a/src/dnode/src/dnodeMWrite.c +++ b/src/dnode/src/dnodeMWrite.c @@ -113,7 +113,7 @@ void dnodeFreeMnodeWqueue() { void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg) { if (!mnodeIsRunning() || tsMWriteQueue == NULL) { - dnodeSendRedirectMsg(pMsg->msgType, pMsg->handle, true); + dnodeSendRedirectMsg(pMsg, true); return; } @@ -122,19 +122,24 @@ void dnodeDispatchToMnodeWriteQueue(SRpcMsg *pMsg) { taosWriteQitem(tsMWriteQueue, TAOS_QTYPE_RPC, pWrite); } +static void dnodeFreeMnodeWriteMsg(SMnodeMsg *pWrite) { + mnodeCleanupMsg(pWrite); + taosFreeQitem(pWrite); +} + void dnodeSendRpcMnodeWriteRsp(void *pRaw, int32_t code) { SMnodeMsg *pWrite = pRaw; if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; SRpcMsg rpcRsp = { - .handle = pWrite->thandle, + .handle = pWrite->rpcMsg.handle, .pCont = pWrite->rpcRsp.rsp, .contLen = pWrite->rpcRsp.len, .code = code, }; rpcSendResponse(&rpcRsp); - mnodeCleanupMsg(pWrite); + dnodeFreeMnodeWriteMsg(pWrite); } static void *dnodeProcessMnodeWriteQueue(void *param) { @@ -148,26 +153,19 @@ static void *dnodeProcessMnodeWriteQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed in mwrite queue", pWriteMsg->ahandle, taosMsg[pWriteMsg->msgType]); + dTrace("%p, msg:%s will be processed in mwrite queue", pWriteMsg->rpcMsg.ahandle, taosMsg[pWriteMsg->rpcMsg.msgType]); int32_t code = mnodeProcessWrite(pWriteMsg); - dnodeSendRpcMnodeWriteRsp(pWriteMsg, code); - taosFreeQitem(pWriteMsg); + dnodeSendRpcMnodeWriteRsp(pWriteMsg, code); } return NULL; } -static void dnodeFreeMnodeWriteMsg(void *pMsg) { - SMnodeMsg *pWrite = pMsg; - mnodeCleanupMsg(pWrite); - taosFreeQitem(pWrite); -} - void dnodeReprocessMnodeWriteMsg(void *pMsg) { SMnodeMsg *pWrite = pMsg; if (!mnodeIsRunning() || tsMWriteQueue == NULL) { - dnodeSendRedirectMsg(pWrite->msgType, pWrite->thandle, true); + dnodeSendRedirectMsg(pMsg, true); dnodeFreeMnodeWriteMsg(pWrite); } else { taosWriteQitem(tsMWriteQueue, TAOS_QTYPE_RPC, pWrite); diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index ec7ff4c66c9..31e73eafbc6 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -609,9 +609,9 @@ int32_t dnodeGetDnodeId() { return tsDnodeCfg.dnodeId; } -void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell) { +void dnodeSendRedirectMsg(SRpcMsg *rpcMsg, bool forShell) { SRpcConnInfo connInfo; - rpcGetConnInfo(thandle, &connInfo); + rpcGetConnInfo(rpcMsg->handle, &connInfo); SRpcIpSet ipSet = {0}; if (forShell) { @@ -620,7 +620,7 @@ void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell) { dnodeGetMnodeIpSetForPeer(&ipSet); } - dTrace("msg:%s will be redirected, dnodeIp:%s user:%s, numOfIps:%d inUse:%d", taosMsg[msgType], + dTrace("msg:%s will be redirected, dnodeIp:%s user:%s, numOfIps:%d inUse:%d", taosMsg[rpcMsg->msgType], taosIpStr(connInfo.clientIp), connInfo.user, ipSet.numOfIps, ipSet.inUse); for (int i = 0; i < ipSet.numOfIps; ++i) { @@ -628,5 +628,5 @@ void dnodeSendRedirectMsg(int32_t msgType, void *thandle, bool forShell) { ipSet.port[i] = htons(ipSet.port[i]); } - rpcSendRedirectRsp(thandle, &ipSet); + rpcSendRedirectRsp(rpcMsg->handle, &ipSet); } From 09b68c4a14ece6b3c6bff626b7f932d353078a4d Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 03:50:46 +0000 Subject: [PATCH 38/85] [TD-335] fix refcount error --- src/mnode/src/mnodeVgroup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 0d235f898d8..97c3f69719b 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -331,6 +331,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { mPrint("vgId:%d, index:%d, dnode:%d", pVgroup->vgId, i, pVgroup->vnodeGid[i].dnodeId); } + mnodeIncVgroupRef(pVgroup); pMsg->pVgroup = pVgroup; pMsg->expected = pVgroup->numOfVnodes; mnodeSendCreateVgroupMsg(pVgroup, pMsg); From 30e867daa69784c3f311ef76c9aff2ba327044db Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 05:26:21 +0000 Subject: [PATCH 39/85] [TD-335] remove log --- src/mnode/src/mnodeDnode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 8ce710110ea..827fef9ed6f 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -315,7 +315,7 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) { if (pStatus->dnodeId == 0) { mTrace("dnode:%d %s, first access", pDnode->dnodeId, pDnode->dnodeEp); } else { - mTrace("dnode:%d, status received, access times %d", pDnode->dnodeId, pDnode->lastAccess); + //mTrace("dnode:%d, status received, access times %d", pDnode->dnodeId, pDnode->lastAccess); } int32_t openVnodes = htons(pStatus->openVnodes); From 780e3e1bb9e5bb5260f1975be98385d811d274dd Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 06:01:27 +0000 Subject: [PATCH 40/85] [TD-335] fix bug while auto create table --- src/dnode/src/dnodeMPeer.c | 10 +++++----- src/dnode/src/dnodeMRead.c | 5 +++++ src/dnode/src/dnodeMWrite.c | 4 ++++ src/mnode/src/mnodeTable.c | 1 + src/mnode/src/mnodeVgroup.c | 5 +---- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c index 46e7a0a7e2e..f5b0fe26f29 100644 --- a/src/dnode/src/dnodeMPeer.c +++ b/src/dnode/src/dnodeMPeer.c @@ -75,7 +75,7 @@ void dnodeCleanupMnodePeer() { } } - dPrint("dnode mmgmt is closed"); + dPrint("dnode mpeer is closed"); } int32_t dnodeAllocateMnodePqueue() { @@ -93,14 +93,14 @@ int32_t dnodeAllocateMnodePqueue() { pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); if (pthread_create(&pWorker->thread, &thAttr, dnodeProcessMnodePeerQueue, pWorker) != 0) { - dError("failed to create thread to process mmgmt queue, reason:%s", strerror(errno)); + dError("failed to create thread to process mpeer queue, reason:%s", strerror(errno)); } pthread_attr_destroy(&thAttr); - dTrace("dnode mmgmt worker:%d is launched, total:%d", pWorker->workerId, tsMPeerPool.num); + dTrace("dnode mpeer worker:%d is launched, total:%d", pWorker->workerId, tsMPeerPool.num); } - dTrace("dnode mmgmt queue:%p is allocated", tsMPeerQueue); + dTrace("dnode mpeer queue:%p is allocated", tsMPeerQueue); return TSDB_CODE_SUCCESS; } @@ -150,7 +150,7 @@ static void *dnodeProcessMnodePeerQueue(void *param) { break; } - dTrace("%p, msg:%s will be processed in mpeer queue", pPeerMsg->rpcMsg.ahandle, taosMsg[pPeerMsg->rpcMsg.msgType]); + dTrace("msg:%s will be processed in mpeer queue", taosMsg[pPeerMsg->rpcMsg.msgType]); int32_t code = mnodeProcessPeerReq(pPeerMsg); dnodeSendRpcMnodePeerRsp(pPeerMsg, code); } diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c index 9a977ffe837..af93bfd11ec 100644 --- a/src/dnode/src/dnodeMRead.c +++ b/src/dnode/src/dnodeMRead.c @@ -132,6 +132,11 @@ static void dnodeFreeMnodeReadMsg(SMnodeMsg *pRead) { static void dnodeSendRpcMnodeReadRsp(SMnodeMsg *pRead, int32_t code) { if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + if (code == TSDB_CODE_ACTION_NEED_REPROCESSED) { + // may be a auto create req, should put into write queue + dnodeReprocessMnodeWriteMsg(pRead); + return; + } SRpcMsg rpcRsp = { .handle = pRead->rpcMsg.handle, diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c index b54d295d053..655964fb34f 100644 --- a/src/dnode/src/dnodeMWrite.c +++ b/src/dnode/src/dnodeMWrite.c @@ -130,6 +130,10 @@ static void dnodeFreeMnodeWriteMsg(SMnodeMsg *pWrite) { void dnodeSendRpcMnodeWriteRsp(void *pRaw, int32_t code) { SMnodeMsg *pWrite = pRaw; if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; + if (code == TSDB_CODE_ACTION_NEED_REPROCESSED) { + dnodeReprocessMnodeWriteMsg(pWrite); + return; + } SRpcMsg rpcRsp = { .handle = pWrite->rpcMsg.handle, diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 7eb63207637..1fa7b02a40b 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -741,6 +741,7 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { mError("table:%s, failed to get table meta, table not exist", pInfo->tableId); return TSDB_CODE_INVALID_TABLE; } else { + mTrace("table:%s, failed to get table meta, start auto create table ", pInfo->tableId); return mgmtAutoCreateChildTable(pMsg); } } else { diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 97c3f69719b..36e96dd006c 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -307,7 +307,6 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { if (balanceAllocVnodes(pVgroup) != 0) { mError("db:%s, no enough dnode to alloc %d vnodes to vgroup", pDb->name, pVgroup->numOfVnodes); free(pVgroup); - mnodeCleanupMsg(pMsg); return TSDB_CODE_NO_ENOUGH_DNODES; } @@ -321,9 +320,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) { int32_t code = sdbInsertRow(&oper); if (code != TSDB_CODE_SUCCESS) { tfree(pVgroup); - code = TSDB_CODE_SDB_ERROR; - mnodeCleanupMsg(pMsg); - return TSDB_CODE_SDB_ERROR; + return TSDB_CODE_SDB_ERROR; } mPrint("vgId:%d, is created in mnode, db:%s replica:%d", pVgroup->vgId, pDb->name, pVgroup->numOfVnodes); From 453590e2ec80c6b8e36313495865c9799e520df6 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 06:44:05 +0000 Subject: [PATCH 41/85] [TD-335] sort include file --- src/client/src/TSDBJNIConnector.c | 2 +- src/common/inc/tulog.h | 2 +- src/dnode/inc/dnodeInt.h | 2 +- src/dnode/inc/dnodeMain.h | 2 +- src/dnode/inc/dnodeMgmt.h | 2 +- src/dnode/inc/dnodePeer.h | 4 ++-- src/dnode/src/dnodeMPeer.c | 1 - src/dnode/src/dnodeMRead.c | 1 - src/dnode/src/dnodeMWrite.c | 1 - src/dnode/src/dnodeMgmt.c | 1 - src/dnode/src/dnodeModule.c | 1 - src/dnode/src/dnodePeer.c | 1 - src/dnode/src/dnodeShell.c | 1 - src/dnode/src/dnodeVRead.c | 5 ++--- src/dnode/src/dnodeVWrite.c | 10 +++++----- src/inc/dnode.h | 27 +++++++++++++-------------- src/inc/mnode.h | 9 +++++---- src/mnode/inc/mnodeInt.h | 4 ++-- src/mnode/src/mnodeDnode.c | 1 - src/mnode/src/mnodePeer.c | 1 - src/mnode/src/mnodeRead.c | 1 - src/mnode/src/mnodeSdb.c | 1 - src/mnode/src/mnodeShow.c | 1 - src/plugins/http/inc/httpLog.h | 2 +- src/plugins/monitor/src/monitorMain.c | 2 +- src/plugins/mqtt/inc/mqttLog.h | 2 +- src/rpc/inc/rpcLog.h | 2 +- src/util/src/ttimer.c | 2 +- src/vnode/inc/vnodeInt.h | 8 ++++---- src/vnode/inc/vnodeLog.h | 18 ++++-------------- src/vnode/src/vnodeMain.c | 10 +++++----- 31 files changed, 52 insertions(+), 75 deletions(-) diff --git a/src/client/src/TSDBJNIConnector.c b/src/client/src/TSDBJNIConnector.c index 802d3831527..6ab1b73d1e8 100644 --- a/src/client/src/TSDBJNIConnector.c +++ b/src/client/src/TSDBJNIConnector.c @@ -23,7 +23,7 @@ #include "ttime.h" #define jniError(...) { if (jniDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR JNI ", jniDebugFlag, __VA_ARGS__); }} -#define jniWarn(...) { if (jniDebugFlag & DEBUG_WARN) { taosPrintLog("WARN JNI ", jniDebugFlag, __VA_ARGS__); }} +#define jniWarn(...) { if (jniDebugFlag & DEBUG_WARN) { taosPrintLog("WARN JNI ", jniDebugFlag, __VA_ARGS__); }} #define jniTrace(...) { if (jniDebugFlag & DEBUG_TRACE) { taosPrintLog("JNI ", jniDebugFlag, __VA_ARGS__); }} #define jniPrint(...) { taosPrintLog("JNI ", tscEmbedded ? 255 : uDebugFlag, __VA_ARGS__); } diff --git a/src/common/inc/tulog.h b/src/common/inc/tulog.h index a47e894e311..07120d7cbe5 100644 --- a/src/common/inc/tulog.h +++ b/src/common/inc/tulog.h @@ -26,7 +26,7 @@ extern int32_t uDebugFlag; extern int32_t tscEmbedded; #define uError(...) { if (uDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR UTL ", uDebugFlag, __VA_ARGS__); }} -#define uWarn(...) { if (uDebugFlag & DEBUG_WARN) { taosPrintLog("WARN UTL ", uDebugFlag, __VA_ARGS__); }} +#define uWarn(...) { if (uDebugFlag & DEBUG_WARN) { taosPrintLog("WARN UTL ", uDebugFlag, __VA_ARGS__); }} #define uTrace(...) { if (uDebugFlag & DEBUG_TRACE) { taosPrintLog("UTL ", uDebugFlag, __VA_ARGS__); }} #define uDump(x, y) { if (uDebugFlag & DEBUG_DUMP) { taosDumpData(x, y); }} #define uPrint(...) { taosPrintLog("UTL ", tscEmbedded ? 255 : uDebugFlag, __VA_ARGS__); } diff --git a/src/dnode/inc/dnodeInt.h b/src/dnode/inc/dnodeInt.h index 663914a9590..34bfe6e4f7d 100644 --- a/src/dnode/inc/dnodeInt.h +++ b/src/dnode/inc/dnodeInt.h @@ -25,7 +25,7 @@ extern "C" { extern int32_t dDebugFlag; #define dError(...) { if (dDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR DND ", 255, __VA_ARGS__); }} -#define dWarn(...) { if (dDebugFlag & DEBUG_WARN) { taosPrintLog("WARN DND ", dDebugFlag, __VA_ARGS__); }} +#define dWarn(...) { if (dDebugFlag & DEBUG_WARN) { taosPrintLog("WARN DND ", dDebugFlag, __VA_ARGS__); }} #define dTrace(...) { if (dDebugFlag & DEBUG_TRACE) { taosPrintLog("DND ", dDebugFlag, __VA_ARGS__); }} #define dPrint(...) { taosPrintLog("DND ", 255, __VA_ARGS__); } diff --git a/src/dnode/inc/dnodeMain.h b/src/dnode/inc/dnodeMain.h index df7698ffc32..c1480407bde 100644 --- a/src/dnode/inc/dnodeMain.h +++ b/src/dnode/inc/dnodeMain.h @@ -21,7 +21,7 @@ extern "C" { #endif int32_t dnodeInitSystem(); -void dnodeCleanUpSystem(); +void dnodeCleanUpSystem(); #ifdef __cplusplus } diff --git a/src/dnode/inc/dnodeMgmt.h b/src/dnode/inc/dnodeMgmt.h index 1a788610e5b..4d15dc5a863 100644 --- a/src/dnode/inc/dnodeMgmt.h +++ b/src/dnode/inc/dnodeMgmt.h @@ -34,7 +34,7 @@ void dnodeReleaseVnode(void *pVnode); void dnodeSendRedirectMsg(SRpcMsg *rpcMsg, bool forShell); void dnodeGetMnodeIpSetForPeer(void *ipSet); -void dnodeGetMnodeIpSetForShell(void *ipSe); +void dnodeGetMnodeIpSetForShell(void *ipSet); #ifdef __cplusplus } diff --git a/src/dnode/inc/dnodePeer.h b/src/dnode/inc/dnodePeer.h index 2ce8d80c0f7..0dcf48f2322 100644 --- a/src/dnode/inc/dnodePeer.h +++ b/src/dnode/inc/dnodePeer.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_DNODE_DNODE_H -#define TDENGINE_DNODE_DNODE_H +#ifndef TDENGINE_DNODE_PEER_H +#define TDENGINE_DNODE_PEER_H #ifdef __cplusplus extern "C" { diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c index f5b0fe26f29..da1910a691c 100644 --- a/src/dnode/src/dnodeMPeer.c +++ b/src/dnode/src/dnodeMPeer.c @@ -19,7 +19,6 @@ #include "taosmsg.h" #include "tutil.h" #include "tqueue.h" -#include "trpc.h" #include "twal.h" #include "tglobal.h" #include "mnode.h" diff --git a/src/dnode/src/dnodeMRead.c b/src/dnode/src/dnodeMRead.c index af93bfd11ec..f22346b61c3 100644 --- a/src/dnode/src/dnodeMRead.c +++ b/src/dnode/src/dnodeMRead.c @@ -19,7 +19,6 @@ #include "taosmsg.h" #include "tutil.h" #include "tqueue.h" -#include "trpc.h" #include "twal.h" #include "tglobal.h" #include "mnode.h" diff --git a/src/dnode/src/dnodeMWrite.c b/src/dnode/src/dnodeMWrite.c index 655964fb34f..95fa9f0bdd3 100644 --- a/src/dnode/src/dnodeMWrite.c +++ b/src/dnode/src/dnodeMWrite.c @@ -20,7 +20,6 @@ #include "tutil.h" #include "ttimer.h" #include "tqueue.h" -#include "trpc.h" #include "twal.h" #include "tglobal.h" #include "mnode.h" diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 31e73eafbc6..04457a95011 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -20,7 +20,6 @@ #include "taosmsg.h" #include "ttime.h" #include "ttimer.h" -#include "trpc.h" #include "tsdb.h" #include "twal.h" #include "tsync.h" diff --git a/src/dnode/src/dnodeModule.c b/src/dnode/src/dnodeModule.c index 61c1ec9382a..126ec27ed15 100644 --- a/src/dnode/src/dnodeModule.c +++ b/src/dnode/src/dnodeModule.c @@ -17,7 +17,6 @@ #include "os.h" #include "taosdef.h" #include "tglobal.h" -#include "trpc.h" #include "mnode.h" #include "http.h" #include "mqtt.h" diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c index bde6cd2aa74..9a7b0837e81 100644 --- a/src/dnode/src/dnodePeer.c +++ b/src/dnode/src/dnodePeer.c @@ -22,7 +22,6 @@ #include "os.h" #include "taosmsg.h" #include "tglobal.h" -#include "trpc.h" #include "mnode.h" #include "dnode.h" #include "dnodeInt.h" diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index bf40dd43260..b875f465c2b 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -18,7 +18,6 @@ #include "taoserror.h" #include "taosdef.h" #include "taosmsg.h" -#include "trpc.h" #include "tglobal.h" #include "http.h" #include "mnode.h" diff --git a/src/dnode/src/dnodeVRead.c b/src/dnode/src/dnodeVRead.c index c2ca9fcd026..4b1ff84bec0 100644 --- a/src/dnode/src/dnodeVRead.c +++ b/src/dnode/src/dnodeVRead.c @@ -19,7 +19,6 @@ #include "taosmsg.h" #include "tutil.h" #include "tqueue.h" -#include "trpc.h" #include "twal.h" #include "tglobal.h" #include "dnodeInt.h" @@ -142,7 +141,7 @@ void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) { } } -void *dnodeAllocateRqueue(void *pVnode) { +void *dnodeAllocateVnodeRqueue(void *pVnode) { taos_queue queue = taosOpenQueue(); if (queue == NULL) return NULL; @@ -172,7 +171,7 @@ void *dnodeAllocateRqueue(void *pVnode) { return queue; } -void dnodeFreeRqueue(void *rqueue) { +void dnodeFreeVnodeRqueue(void *rqueue) { taosCloseQueue(rqueue); // dynamically adjust the number of threads diff --git a/src/dnode/src/dnodeVWrite.c b/src/dnode/src/dnodeVWrite.c index bf4e49e84d9..bbddfa09279 100644 --- a/src/dnode/src/dnodeVWrite.c +++ b/src/dnode/src/dnodeVWrite.c @@ -22,9 +22,9 @@ #include "trpc.h" #include "tsdb.h" #include "twal.h" +#include "tdataformat.h" #include "tglobal.h" #include "vnode.h" -#include "tdataformat.h" #include "dnodeInt.h" #include "dnodeVWrite.h" #include "dnodeMgmt.h" @@ -122,7 +122,7 @@ void dnodeDispatchToVnodeWriteQueue(SRpcMsg *pMsg) { } } -void *dnodeAllocateWqueue(void *pVnode) { +void *dnodeAllocateVnodeWqueue(void *pVnode) { SWriteWorker *pWorker = wWorkerPool.writeWorker + wWorkerPool.nextId; void *queue = taosOpenQueue(); if (queue == NULL) return NULL; @@ -157,13 +157,13 @@ void *dnodeAllocateWqueue(void *pVnode) { return queue; } -void dnodeFreeWqueue(void *wqueue) { +void dnodeFreeVnodeWqueue(void *wqueue) { taosCloseQueue(wqueue); // dynamically adjust the number of threads } -void dnodeSendRpcWriteRsp(void *pVnode, void *param, int32_t code) { +void dnodeSendRpcVnodeWriteRsp(void *pVnode, void *param, int32_t code) { SWriteMsg *pWrite = (SWriteMsg *)param; if (code > 0) return; @@ -223,7 +223,7 @@ static void *dnodeProcessWriteQueue(void *param) { taosGetQitem(pWorker->qall, &type, &item); if (type == TAOS_QTYPE_RPC) { pWrite = (SWriteMsg *)item; - dnodeSendRpcWriteRsp(pVnode, item, pWrite->rpcMsg.code); + dnodeSendRpcVnodeWriteRsp(pVnode, item, pWrite->rpcMsg.code); } else { taosFreeQitem(item); vnodeRelease(pVnode); diff --git a/src/inc/dnode.h b/src/inc/dnode.h index ff4cc7f81fd..3d3616085dc 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -37,12 +37,6 @@ typedef enum { SDnodeRunStatus dnodeGetRunStatus(); SDnodeStatisInfo dnodeGetStatisInfo(); -void *dnodeAllocateWqueue(void *pVnode); -void dnodeFreeWqueue(void *queue); -void *dnodeAllocateRqueue(void *pVnode); -void dnodeFreeRqueue(void *rqueue); -void dnodeSendRpcWriteRsp(void *pVnode, void *param, int32_t code); - bool dnodeIsFirstDeploy(); char * dnodeGetMnodeMasterEp(); void dnodeGetMnodeIpSetForPeer(void *ipSet); @@ -54,16 +48,21 @@ void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); -int32_t dnodeAllocateMnodeWqueue(); -void dnodeFreeMnodeWqueue(); -int32_t dnodeAllocateMnodeRqueue(); -void dnodeFreeMnodeRqueue(); +void *dnodeAllocateVnodeWqueue(void *pVnode); +void dnodeFreeVnodeWqueue(void *queue); +void *dnodeAllocateVnodeRqueue(void *pVnode); +void dnodeFreeVnodeRqueue(void *rqueue); +void dnodeSendRpcVnodeWriteRsp(void *pVnode, void *param, int32_t code); + int32_t dnodeAllocateMnodePqueue(); void dnodeFreeMnodePqueue(); - -void dnodeSendRpcMnodeWriteRsp(void *pMsg, int32_t code); -void dnodeReprocessMnodeWriteMsg(void *pMsg); -void dnodeDelayReprocessMnodeWriteMsg(void *pMsg); +int32_t dnodeAllocateMnodeRqueue(); +void dnodeFreeMnodeRqueue(); +int32_t dnodeAllocateMnodeWqueue(); +void dnodeFreeMnodeWqueue(); +void dnodeSendRpcMnodeWriteRsp(void *pMsg, int32_t code); +void dnodeReprocessMnodeWriteMsg(void *pMsg); +void dnodeDelayReprocessMnodeWriteMsg(void *pMsg); #ifdef __cplusplus } diff --git a/src/inc/mnode.h b/src/inc/mnode.h index 513e81a4614..6f0c4d69498 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -20,13 +20,14 @@ extern "C" { #endif +#include "trpc.h" + struct SAcctObj; struct SDnodeObj; struct SUserObj; struct SDbObj; struct SVgObj; struct STableObj; -struct SRpcMsg; typedef struct { int32_t len; @@ -34,13 +35,13 @@ typedef struct { } SMnodeRsp; typedef struct SMnodeMsg { + SRpcMsg rpcMsg; SMnodeRsp rpcRsp; int8_t received; int8_t successed; int8_t expected; int8_t retry; int32_t code; - struct SRpcMsg rpcMsg; struct SAcctObj * pAcct; struct SDnodeObj *pDnode; struct SUserObj * pUser; @@ -49,7 +50,7 @@ typedef struct SMnodeMsg { struct STableObj *pTable; } SMnodeMsg; -void mnodeCreateMsg(SMnodeMsg *pMsg, struct SRpcMsg *rpcMsg); +void mnodeCreateMsg(SMnodeMsg *pMsg, SRpcMsg *rpcMsg); int32_t mnodeInitMsg(SMnodeMsg *pMsg); void mnodeCleanupMsg(SMnodeMsg *pMsg); @@ -62,7 +63,7 @@ bool mnodeIsRunning(); int32_t mnodeProcessRead(SMnodeMsg *pMsg); int32_t mnodeProcessWrite(SMnodeMsg *pMsg); int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg); -void mnodeProcessPeerRsp(struct SRpcMsg *pMsg); +void mnodeProcessPeerRsp(SRpcMsg *pMsg); int32_t mnodeRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey); #ifdef __cplusplus diff --git a/src/mnode/inc/mnodeInt.h b/src/mnode/inc/mnodeInt.h index 52259d0134c..7405cef6f3c 100644 --- a/src/mnode/inc/mnodeInt.h +++ b/src/mnode/inc/mnodeInt.h @@ -28,7 +28,7 @@ extern int32_t sdbDebugFlag; // mnode log function #define mError(...) { if (mDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR MND ", 255, __VA_ARGS__); }} -#define mWarn(...) { if (mDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MND ", mDebugFlag, __VA_ARGS__); }} +#define mWarn(...) { if (mDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MND ", mDebugFlag, __VA_ARGS__); }} #define mTrace(...) { if (mDebugFlag & DEBUG_TRACE) { taosPrintLog("MND ", mDebugFlag, __VA_ARGS__); }} #define mPrint(...) { taosPrintLog("MND ", 255, __VA_ARGS__); } @@ -37,7 +37,7 @@ extern int32_t sdbDebugFlag; #define mLPrint(...) { monitorSaveLog(0, __VA_ARGS__); mPrint(__VA_ARGS__) } #define sdbError(...) { if (sdbDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR MND-SDB ", 255, __VA_ARGS__); }} -#define sdbWarn(...) { if (sdbDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MND-SDB ", sdbDebugFlag, __VA_ARGS__); }} +#define sdbWarn(...) { if (sdbDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MND-SDB ", sdbDebugFlag, __VA_ARGS__); }} #define sdbTrace(...) { if (sdbDebugFlag & DEBUG_TRACE) { taosPrintLog("MND-SDB ", sdbDebugFlag, __VA_ARGS__);}} #define sdbPrint(...) { taosPrintLog("MND-SDB ", 255, __VA_ARGS__); } diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 827fef9ed6f..c6c02322597 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -15,7 +15,6 @@ #define _DEFAULT_SOURCE #include "os.h" -#include "trpc.h" #include "tgrant.h" #include "tbalance.h" #include "tglobal.h" diff --git a/src/mnode/src/mnodePeer.c b/src/mnode/src/mnodePeer.c index 3594b60cf18..d3699948f21 100644 --- a/src/mnode/src/mnodePeer.c +++ b/src/mnode/src/mnodePeer.c @@ -16,7 +16,6 @@ #define _DEFAULT_SOURCE #include "os.h" #include "taoserror.h" -#include "trpc.h" #include "tsched.h" #include "tsystem.h" #include "tutil.h" diff --git a/src/mnode/src/mnodeRead.c b/src/mnode/src/mnodeRead.c index cc58f890413..0ee917f2d13 100644 --- a/src/mnode/src/mnodeRead.c +++ b/src/mnode/src/mnodeRead.c @@ -15,7 +15,6 @@ #define _DEFAULT_SOURCE #include "os.h" -#include "trpc.h" #include "taosdef.h" #include "tsched.h" #include "tbalance.h" diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c index 3b04be1ea63..3905773d54d 100644 --- a/src/mnode/src/mnodeSdb.c +++ b/src/mnode/src/mnodeSdb.c @@ -17,7 +17,6 @@ #include "os.h" #include "taoserror.h" #include "hash.h" -#include "trpc.h" #include "tutil.h" #include "tbalance.h" #include "tqueue.h" diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index c29c3dab684..0a522e8f99f 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -17,7 +17,6 @@ #include "os.h" #include "taosmsg.h" #include "taoserror.h" -#include "trpc.h" #include "tsched.h" #include "tutil.h" #include "ttimer.h" diff --git a/src/plugins/http/inc/httpLog.h b/src/plugins/http/inc/httpLog.h index 0e09f277f0d..a940dcf6ec0 100644 --- a/src/plugins/http/inc/httpLog.h +++ b/src/plugins/http/inc/httpLog.h @@ -21,7 +21,7 @@ extern int32_t httpDebugFlag; #define httpError(...) { if (httpDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR HTP ", 255, __VA_ARGS__); }} -#define httpWarn(...) { if (httpDebugFlag & DEBUG_WARN) { taosPrintLog("WARN HTP ", httpDebugFlag, __VA_ARGS__); }} +#define httpWarn(...) { if (httpDebugFlag & DEBUG_WARN) { taosPrintLog("WARN HTP ", httpDebugFlag, __VA_ARGS__); }} #define httpTrace(...) { if (httpDebugFlag & DEBUG_TRACE) { taosPrintLog("HTP ", httpDebugFlag, __VA_ARGS__); }} #define httpDump(...) { if (httpDebugFlag & DEBUG_TRACE) { taosPrintLongString("HTP ", httpDebugFlag, __VA_ARGS__); }} #define httpPrint(...) { taosPrintLog("HTP ", 255, __VA_ARGS__); } diff --git a/src/plugins/monitor/src/monitorMain.c b/src/plugins/monitor/src/monitorMain.c index fc958c1b1fb..0c27233289c 100644 --- a/src/plugins/monitor/src/monitorMain.c +++ b/src/plugins/monitor/src/monitorMain.c @@ -28,7 +28,7 @@ #include "monitor.h" #define monitorError(...) { if (monitorDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR MON ", 255, __VA_ARGS__); }} -#define monitorWarn(...) { if (monitorDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MON ", monitorDebugFlag, __VA_ARGS__); }} +#define monitorWarn(...) { if (monitorDebugFlag & DEBUG_WARN) { taosPrintLog("WARN MON ", monitorDebugFlag, __VA_ARGS__); }} #define monitorTrace(...) { if (monitorDebugFlag & DEBUG_TRACE) { taosPrintLog("MON ", monitorDebugFlag, __VA_ARGS__); }} #define monitorPrint(...) { taosPrintLog("MON ", 255, __VA_ARGS__); } diff --git a/src/plugins/mqtt/inc/mqttLog.h b/src/plugins/mqtt/inc/mqttLog.h index 735678a326c..a7ae2fc1ae7 100644 --- a/src/plugins/mqtt/inc/mqttLog.h +++ b/src/plugins/mqtt/inc/mqttLog.h @@ -26,7 +26,7 @@ extern int32_t mqttDebugFlag; } #define mqttWarn(...) \ if ( mqttDebugFlag & DEBUG_WARN) { \ - taosPrintLog("WARN MQT ", mqttDebugFlag, __VA_ARGS__); \ + taosPrintLog("WARN MQT ", mqttDebugFlag, __VA_ARGS__); \ } #define mqttTrace(...) \ if ( mqttDebugFlag & DEBUG_TRACE) { \ diff --git a/src/rpc/inc/rpcLog.h b/src/rpc/inc/rpcLog.h index 5094d817572..10ef974298a 100644 --- a/src/rpc/inc/rpcLog.h +++ b/src/rpc/inc/rpcLog.h @@ -25,7 +25,7 @@ extern "C" { extern int32_t rpcDebugFlag; #define tError(...) { if (rpcDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR RPC ", rpcDebugFlag, __VA_ARGS__); }} -#define tWarn(...) { if (rpcDebugFlag & DEBUG_WARN) { taosPrintLog("WARN RPC ", rpcDebugFlag, __VA_ARGS__); }} +#define tWarn(...) { if (rpcDebugFlag & DEBUG_WARN) { taosPrintLog("WARN RPC ", rpcDebugFlag, __VA_ARGS__); }} #define tTrace(...) { if (rpcDebugFlag & DEBUG_TRACE) { taosPrintLog("RPC ", rpcDebugFlag, __VA_ARGS__); }} #define tDump(x, y) { if (rpcDebugFlag & DEBUG_DUMP) { taosDumpData((unsigned char *)x, y); }} #define tPrint(...) { taosPrintLog("RPC ", 255, __VA_ARGS__); } diff --git a/src/util/src/ttimer.c b/src/util/src/ttimer.c index e6ef73ef57d..68db574d82f 100644 --- a/src/util/src/ttimer.c +++ b/src/util/src/ttimer.c @@ -27,7 +27,7 @@ #define tmrWarn(...) \ do { if (tmrDebugFlag & DEBUG_WARN) { \ - taosPrintLog("WARN TMR ", tmrDebugFlag, __VA_ARGS__); \ + taosPrintLog("WARN TMR ", tmrDebugFlag, __VA_ARGS__); \ } } while(0) #define tmrTrace(...) \ diff --git a/src/vnode/inc/vnodeInt.h b/src/vnode/inc/vnodeInt.h index dea9369dd8d..0168304b515 100644 --- a/src/vnode/inc/vnodeInt.h +++ b/src/vnode/inc/vnodeInt.h @@ -27,10 +27,10 @@ extern "C" { extern int32_t vDebugFlag; -#define vError(...) if (vDebugFlag & DEBUG_ERROR) {taosPrintLog("ERROR VND ", 255, __VA_ARGS__); } -#define vWarn(...) if (vDebugFlag & DEBUG_WARN) {taosPrintLog("WARN VND ", vDebugFlag, __VA_ARGS__); } -#define vTrace(...) if (vDebugFlag & DEBUG_TRACE) {taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); } -#define vPrint(...) {taosPrintLog("VND ", 255, __VA_ARGS__); } +#define vError(...) { if (vDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR VND ", 255, __VA_ARGS__); }} +#define vWarn(...) { if (vDebugFlag & DEBUG_WARN) { taosPrintLog("WARN VND ", vDebugFlag, __VA_ARGS__); }} +#define vTrace(...) { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); }} +#define vPrint(...) { taosPrintLog("VND ", 255, __VA_ARGS__); } typedef struct { int32_t vgId; // global vnode group ID diff --git a/src/vnode/inc/vnodeLog.h b/src/vnode/inc/vnodeLog.h index bd8daae0b63..d6794202da4 100644 --- a/src/vnode/inc/vnodeLog.h +++ b/src/vnode/inc/vnodeLog.h @@ -24,20 +24,10 @@ extern "C" { extern int32_t dDebugFlag; -#define dError(...) \ - if (dDebugFlag & DEBUG_ERROR) { \ - taosPrintLog("ERROR DND ", 255, __VA_ARGS__); \ - } -#define dWarn(...) \ - if (dDebugFlag & DEBUG_WARN) { \ - taosPrintLog("WARN DND ", dDebugFlag, __VA_ARGS__); \ - } -#define dTrace(...) \ - if (dDebugFlag & DEBUG_TRACE) { \ - taosPrintLog("DND ", dDebugFlag, __VA_ARGS__); \ - } -#define dPrint(...) \ - { taosPrintLog("DND ", 255, __VA_ARGS__); } +#define dError(...) { if (dDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR DND ", 255, __VA_ARGS__); }} +#define dWarn(...) { if (dDebugFlag & DEBUG_WARN) { taosPrintLog("WARN DND ", dDebugFlag, __VA_ARGS__); }} +#define dTrace(...) { if (dDebugFlag & DEBUG_TRACE) { taosPrintLog("DND ", dDebugFlag, __VA_ARGS__); }} +#define dPrint(...) { taosPrintLog("DND ", 255, __VA_ARGS__); } #ifdef __cplusplus } diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index b8bc29550e3..b25180f0f0e 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -198,8 +198,8 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { pVnode->fversion = pVnode->version; - pVnode->wqueue = dnodeAllocateWqueue(pVnode); - pVnode->rqueue = dnodeAllocateRqueue(pVnode); + pVnode->wqueue = dnodeAllocateVnodeWqueue(pVnode); + pVnode->rqueue = dnodeAllocateVnodeRqueue(pVnode); if (pVnode->wqueue == NULL || pVnode->rqueue == NULL) { vnodeCleanUp(pVnode); return terrno; @@ -245,7 +245,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { syncInfo.getWalInfo = vnodeGetWalInfo; syncInfo.getFileInfo = vnodeGetFileInfo; syncInfo.writeToCache = vnodeWriteToQueue; - syncInfo.confirmForward = dnodeSendRpcWriteRsp; + syncInfo.confirmForward = dnodeSendRpcVnodeWriteRsp; syncInfo.notifyRole = vnodeNotifyRole; syncInfo.notifyFileSynced = vnodeNotifyFileSynced; pVnode->sync = syncStart(&syncInfo); @@ -404,11 +404,11 @@ static void vnodeCleanUp(SVnodeObj *pVnode) { pVnode->cq = NULL; if (pVnode->wqueue) - dnodeFreeWqueue(pVnode->wqueue); + dnodeFreeVnodeWqueue(pVnode->wqueue); pVnode->wqueue = NULL; if (pVnode->rqueue) - dnodeFreeRqueue(pVnode->rqueue); + dnodeFreeVnodeRqueue(pVnode->rqueue); pVnode->rqueue = NULL; vnodeRelease(pVnode); From 3528ed61d0d1f6bd09f9f2bc01f938091f510851 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 07:09:53 +0000 Subject: [PATCH 42/85] [TD-335] rename mgmt to mnode --- packaging/cfg/taos.cfg | 2 +- src/client/inc/tsclient.h | 4 +- src/client/src/tscParseInsert.c | 2 +- src/client/src/tscServer.c | 6 +-- src/client/src/tscSql.c | 2 +- src/client/src/tscSystem.c | 2 +- src/common/src/tglobal.c | 4 +- src/dnode/src/dnodeMgmt.c | 22 ++++----- src/dnode/src/dnodeModule.c | 18 ++++---- src/inc/mnode.h | 2 +- src/inc/taosdef.h | 2 +- src/mnode/inc/mnodeDnode.h | 2 +- src/mnode/inc/mnodeMnode.h | 2 +- src/mnode/src/mnodeDb.c | 2 +- src/mnode/src/mnodeDnode.c | 6 +-- src/mnode/src/mnodeMain.c | 20 ++++---- src/mnode/src/mnodeMnode.c | 2 +- src/mnode/src/mnodeTable.c | 46 +++++++++---------- src/mnode/src/mnodeVgroup.c | 10 ++-- tests/pytest/util/dnodes.py | 2 +- tests/script/general/alter/count.sim | 2 +- tests/script/general/alter/import.sim | 2 +- tests/script/general/db/backup/keep.sim | 6 +-- tests/script/general/db/delete_reuse1.sim | 8 ++-- tests/script/general/db/delete_reuse2.sim | 8 ++-- tests/script/general/db/delete_writing1.sim | 8 ++-- tests/script/general/import/basic.sim | 8 ++-- tests/script/general/import/commit.sim | 8 ++-- tests/script/general/import/large.sim | 8 ++-- tests/script/general/import/replica1.sim | 8 ++-- tests/script/general/table/delete_reuse1.sim | 8 ++-- tests/script/general/table/delete_reuse2.sim | 8 ++-- tests/script/general/table/delete_writing.sim | 8 ++-- tests/script/sh/clear.sh | 2 +- tests/script/sh/deploy.sh | 2 +- tests/script/tmp/prepare.sim | 8 ++-- tests/script/unique/cluster/balance1.sim | 16 +++---- tests/script/unique/cluster/balance2.sim | 16 +++---- tests/script/unique/cluster/balance3.sim | 16 +++---- tests/script/unique/db/commit.sim | 6 +-- tests/script/unique/db/delete_part.sim | 8 ++-- tests/script/unique/db/replica_add12.sim | 8 ++-- tests/script/unique/db/replica_add13.sim | 8 ++-- tests/script/unique/db/replica_add23.sim | 8 ++-- tests/script/unique/db/replica_part.sim | 6 +-- tests/script/unique/db/replica_reduce21.sim | 6 +-- tests/script/unique/db/replica_reduce31.sim | 6 +-- tests/script/unique/db/replica_reduce32.sim | 6 +-- tests/script/unique/dnode/balance1.sim | 8 ++-- tests/script/unique/dnode/balance2.sim | 10 ++-- tests/script/unique/dnode/balance3.sim | 12 ++--- tests/script/unique/dnode/balancex.sim | 8 ++-- tests/script/unique/dnode/monitor_bug.sim | 4 +- tests/script/unique/dnode/offline1.sim | 6 +-- tests/script/unique/dnode/offline2.sim | 6 +-- tests/script/unique/dnode/remove1.sim | 8 ++-- tests/script/unique/dnode/remove2.sim | 8 ++-- tests/script/unique/dnode/vnode_clean.sim | 8 ++-- tests/script/unique/import/replica2.sim | 8 ++-- tests/script/unique/import/replica3.sim | 8 ++-- .../script/unique/stable/balance_replica1.sim | 4 +- .../script/unique/stream/metrics_balance.sim | 4 +- tests/script/unique/stream/table_balance.sim | 4 +- tests/script/unique/stream/table_move.sim | 8 ++-- tests/script/unique/vnode/many.sim | 8 ++-- tests/script/unique/vnode/replica2_basic2.sim | 8 ++-- tests/script/unique/vnode/replica2_repeat.sim | 8 ++-- tests/script/unique/vnode/replica3_repeat.sim | 8 ++-- 68 files changed, 258 insertions(+), 258 deletions(-) diff --git a/packaging/cfg/taos.cfg b/packaging/cfg/taos.cfg index 38e960eb067..0d2ebf9eda8 100644 --- a/packaging/cfg/taos.cfg +++ b/packaging/cfg/taos.cfg @@ -155,7 +155,7 @@ # maxVnodeConnections 10000 # mnode take into account while balance, for cluster version only -# mgmtEqualVnodeNum 4 +# mnodeEqualVnodeNum 4 # number of seconds allowed for a dnode to be offline, for cluster version only # offlineThreshold 864000 diff --git a/src/client/inc/tsclient.h b/src/client/inc/tsclient.h index 08536a505d0..c04c31dfb76 100644 --- a/src/client/inc/tsclient.h +++ b/src/client/inc/tsclient.h @@ -284,8 +284,8 @@ typedef struct { typedef struct STscObj { void * signature; void * pTimer; - char mgmtIp[TSDB_USER_LEN]; - uint16_t mgmtPort; + char mnodeIp[TSDB_USER_LEN]; + uint16_t mnodePort; char user[TSDB_USER_LEN]; char pass[TSDB_KEY_LEN]; char acctId[TSDB_DB_NAME_LEN]; diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c index 9202203fac0..79872e22c8b 100644 --- a/src/client/src/tscParseInsert.c +++ b/src/client/src/tscParseInsert.c @@ -1361,7 +1361,7 @@ int tsParseSql(SSqlObj *pSql, bool initialParse) { /* * the pRes->code may be modified or released by another thread in tscTableMetaCallBack function, * so do NOT use pRes->code to determine if the getTableMeta/getMetricMeta function - * invokes new threads to get data from mgmt node or simply retrieves data from cache. + * invokes new threads to get data from mnode or simply retrieves data from cache. * * do NOT assign return code to pRes->code for the same reason since it may be released by another thread * pRes->code = ret; diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index a1c50b15185..417108dfce9 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -60,10 +60,10 @@ static void tscSetDnodeIpList(SSqlObj* pSql, SCMVgroupInfo* pVgroupInfo) { void tscPrintMgmtIp() { if (tscMgmtIpSet.numOfIps <= 0) { - tscError("invalid mgmt IP list:%d", tscMgmtIpSet.numOfIps); + tscError("invalid mnode IP list:%d", tscMgmtIpSet.numOfIps); } else { for (int i = 0; i < tscMgmtIpSet.numOfIps; ++i) { - tscTrace("mgmt index:%d %s:%d", i, tscMgmtIpSet.fqdn[i], tscMgmtIpSet.port[i]); + tscTrace("mnode index:%d %s:%d", i, tscMgmtIpSet.fqdn[i], tscMgmtIpSet.port[i]); } } } @@ -78,7 +78,7 @@ void tscSetMgmtIpList(SRpcIpSet *pIpList) { void tscUpdateIpSet(void *ahandle, SRpcIpSet *pIpSet) { tscMgmtIpSet = *pIpSet; - tscTrace("mgmt IP list is changed for ufp is called, numOfIps:%d inUse:%d", tscMgmtIpSet.numOfIps, tscMgmtIpSet.inUse); + tscTrace("mnode IP list is changed for ufp is called, numOfIps:%d inUse:%d", tscMgmtIpSet.numOfIps, tscMgmtIpSet.inUse); for (int32_t i = 0; i < tscMgmtIpSet.numOfIps; ++i) { tscTrace("index:%d fqdn:%s port:%d", i, tscMgmtIpSet.fqdn[i], tscMgmtIpSet.port[i]); } diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 7a6cce4d7f7..a9ec33c078c 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -88,7 +88,7 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con strncpy(pObj->user, user, TSDB_USER_LEN); taosEncryptPass((uint8_t *)pass, strlen(pass), pObj->pass); - pObj->mgmtPort = port ? port : tsDnodeShellPort; + pObj->mnodePort = port ? port : tsDnodeShellPort; if (db) { int32_t len = strlen(db); diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c index 5d56fef1e9c..2ca53bade1a 100644 --- a/src/client/src/tscSystem.c +++ b/src/client/src/tscSystem.c @@ -116,7 +116,7 @@ void taos_init_imp() { } if (tscSetMgmtIpListFromCfg(tsFirst, tsSecond) < 0) { - tscError("failed to init mgmt IP list"); + tscError("failed to init mnode IP list"); return; } diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index bb822053d40..4630ea48c9e 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -427,7 +427,7 @@ static void doInitGlobalConfig() { cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); - // 0-any; 1-mgmt; 2-dnode + // 0-any; 1-mnode; 2-dnode cfg.option = "alternativeRole"; cfg.ptr = &tsAlternativeRole; cfg.valType = TAOS_CFG_VTYPE_INT32; @@ -875,7 +875,7 @@ static void doInitGlobalConfig() { taosInitConfigOption(cfg); // module configs - cfg.option = "mgmtEqualVnodeNum"; + cfg.option = "mnodeEqualVnodeNum"; cfg.ptr = &tsMnodeEqualVnodeNum; cfg.valType = TAOS_CFG_VTYPE_INT32; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 04457a95011..f6be375396a 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -363,10 +363,10 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { static bool dnodeReadMnodeInfos() { char ipFile[TSDB_FILENAME_LEN] = {0}; - sprintf(ipFile, "%s/mgmtIpList.json", tsDnodeDir); + sprintf(ipFile, "%s/mnodeIpList.json", tsDnodeDir); FILE *fp = fopen(ipFile, "r"); if (!fp) { - dTrace("failed to read mnode mgmtIpList.json, file not exist"); + dTrace("failed to read mnodeIpList.json, file not exist"); return false; } @@ -377,39 +377,39 @@ static bool dnodeReadMnodeInfos() { if (len <= 0) { free(content); fclose(fp); - dError("failed to read mnode mgmtIpList.json, content is null"); + dError("failed to read mnodeIpList.json, content is null"); return false; } cJSON* root = cJSON_Parse(content); if (root == NULL) { - dError("failed to read mnode mgmtIpList.json, invalid json format"); + dError("failed to read mnodeIpList.json, invalid json format"); goto PARSE_OVER; } cJSON* inUse = cJSON_GetObjectItem(root, "inUse"); if (!inUse || inUse->type != cJSON_Number) { - dError("failed to read mnode mgmtIpList.json, inUse not found"); + dError("failed to read mnodeIpList.json, inUse not found"); goto PARSE_OVER; } tsDMnodeInfos.inUse = inUse->valueint; cJSON* nodeNum = cJSON_GetObjectItem(root, "nodeNum"); if (!nodeNum || nodeNum->type != cJSON_Number) { - dError("failed to read mnode mgmtIpList.json, nodeNum not found"); + dError("failed to read mnodeIpList.json, nodeNum not found"); goto PARSE_OVER; } tsDMnodeInfos.nodeNum = nodeNum->valueint; cJSON* nodeInfos = cJSON_GetObjectItem(root, "nodeInfos"); if (!nodeInfos || nodeInfos->type != cJSON_Array) { - dError("failed to read mnode mgmtIpList.json, nodeInfos not found"); + dError("failed to read mnodeIpList.json, nodeInfos not found"); goto PARSE_OVER; } int size = cJSON_GetArraySize(nodeInfos); if (size != tsDMnodeInfos.nodeNum) { - dError("failed to read mnode mgmtIpList.json, nodeInfos size not matched"); + dError("failed to read mnodeIpList.json, nodeInfos size not matched"); goto PARSE_OVER; } @@ -419,14 +419,14 @@ static bool dnodeReadMnodeInfos() { cJSON *nodeId = cJSON_GetObjectItem(nodeInfo, "nodeId"); if (!nodeId || nodeId->type != cJSON_Number) { - dError("failed to read mnode mgmtIpList.json, nodeId not found"); + dError("failed to read mnodeIpList.json, nodeId not found"); goto PARSE_OVER; } tsDMnodeInfos.nodeInfos[i].nodeId = nodeId->valueint; cJSON *nodeEp = cJSON_GetObjectItem(nodeInfo, "nodeEp"); if (!nodeEp || nodeEp->type != cJSON_String || nodeEp->valuestring == NULL) { - dError("failed to read mnode mgmtIpList.json, nodeName not found"); + dError("failed to read mnodeIpList.json, nodeName not found"); goto PARSE_OVER; } strncpy(tsDMnodeInfos.nodeInfos[i].nodeEp, nodeEp->valuestring, TSDB_EP_LEN); @@ -448,7 +448,7 @@ static bool dnodeReadMnodeInfos() { static void dnodeSaveMnodeInfos() { char ipFile[TSDB_FILENAME_LEN] = {0}; - sprintf(ipFile, "%s/mgmtIpList.json", tsDnodeDir); + sprintf(ipFile, "%s/mnodeIpList.json", tsDnodeDir); FILE *fp = fopen(ipFile, "w"); if (!fp) return; diff --git a/src/dnode/src/dnodeModule.c b/src/dnode/src/dnodeModule.c index 126ec27ed15..16ede535321 100644 --- a/src/dnode/src/dnodeModule.c +++ b/src/dnode/src/dnodeModule.c @@ -45,12 +45,12 @@ static void dnodeUnSetModuleStatus(int32_t module) { } static void dnodeAllocModules() { - tsModule[TSDB_MOD_MGMT].enable = false; - tsModule[TSDB_MOD_MGMT].name = "mgmt"; - tsModule[TSDB_MOD_MGMT].initFp = mnodeInitSystem; - tsModule[TSDB_MOD_MGMT].cleanUpFp = mnodeCleanupSystem; - tsModule[TSDB_MOD_MGMT].startFp = mnodeStartSystem; - tsModule[TSDB_MOD_MGMT].stopFp = mgmtStopSystem; + tsModule[TSDB_MOD_MNODE].enable = false; + tsModule[TSDB_MOD_MNODE].name = "mnode"; + tsModule[TSDB_MOD_MNODE].initFp = mnodeInitSystem; + tsModule[TSDB_MOD_MNODE].cleanUpFp = mnodeCleanupSystem; + tsModule[TSDB_MOD_MNODE].startFp = mnodeStartSystem; + tsModule[TSDB_MOD_MNODE].stopFp = mnodeStopSystem; tsModule[TSDB_MOD_HTTP].enable = (tsEnableHttpModule == 1); tsModule[TSDB_MOD_HTTP].name = "http"; @@ -93,8 +93,8 @@ void dnodeCleanUpModules() { } } - if (tsModule[TSDB_MOD_MGMT].enable && tsModule[TSDB_MOD_MGMT].cleanUpFp) { - (*tsModule[TSDB_MOD_MGMT].cleanUpFp)(); + if (tsModule[TSDB_MOD_MNODE].enable && tsModule[TSDB_MOD_MNODE].cleanUpFp) { + (*tsModule[TSDB_MOD_MNODE].cleanUpFp)(); } } @@ -124,7 +124,7 @@ void dnodeStartModules() { } void dnodeProcessModuleStatus(uint32_t moduleStatus) { - for (int32_t module = TSDB_MOD_MGMT; module < TSDB_MOD_HTTP; ++module) { + for (int32_t module = TSDB_MOD_MNODE; module < TSDB_MOD_HTTP; ++module) { bool enableModule = moduleStatus & (1 << module); if (!tsModule[module].enable && enableModule) { dPrint("module status:%u is received, start %s module", tsModuleStatus, tsModule[module].name); diff --git a/src/inc/mnode.h b/src/inc/mnode.h index 6f0c4d69498..bbb6fc53851 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -57,7 +57,7 @@ void mnodeCleanupMsg(SMnodeMsg *pMsg); int32_t mnodeInitSystem(); int32_t mnodeStartSystem(); void mnodeCleanupSystem(); -void mgmtStopSystem(); +void mnodeStopSystem(); void sdbUpdateSync(); bool mnodeIsRunning(); int32_t mnodeProcessRead(SMnodeMsg *pMsg); diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index b87a6b31183..ce50fcbcf0a 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -373,7 +373,7 @@ typedef enum { } ETableType; typedef enum { - TSDB_MOD_MGMT, + TSDB_MOD_MNODE, TSDB_MOD_HTTP, TSDB_MOD_MONITOR, TSDB_MOD_MQTT, diff --git a/src/mnode/inc/mnodeDnode.h b/src/mnode/inc/mnodeDnode.h index 75a1e29b0b3..2b12a293907 100644 --- a/src/mnode/inc/mnodeDnode.h +++ b/src/mnode/inc/mnodeDnode.h @@ -28,7 +28,7 @@ typedef enum { } EDnodeStatus; int32_t mnodeInitDnodes(); -void mgmtCleanupDnodes(); +void mnodeCleanupDnodes(); char* mnodeGetDnodeStatusStr(int32_t dnodeStatus); void mgmtMonitorDnodeModule(); diff --git a/src/mnode/inc/mnodeMnode.h b/src/mnode/inc/mnodeMnode.h index 14ea9922062..c75deac5947 100644 --- a/src/mnode/inc/mnodeMnode.h +++ b/src/mnode/inc/mnodeMnode.h @@ -29,7 +29,7 @@ typedef enum { } EMnodeStatus; int32_t mnodeInitMnodes(); -void mgmtCleanupMnodes(); +void mnodeCleanupMnodes(); int32_t mnodeAddMnode(int32_t dnodeId); int32_t mnodeDropMnode(int32_t dnodeId); diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index 12209882214..b904e06e977 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -381,7 +381,7 @@ bool mnodeCheckIsMonitorDB(char *db, char *monitordb) { } #if 0 -void mgmtPrintVgroups(SDbObj *pDb, char *oper) { +void mnodePrintVgroups(SDbObj *pDb, char *oper) { mPrint("db:%s, vgroup link from head, oper:%s", pDb->name, oper); SVgObj *pVgroup = pDb->pHead; while (pVgroup != NULL) { diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index c6c02322597..5aaa2049f16 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -169,7 +169,7 @@ int32_t mnodeInitDnodes() { return 0; } -void mgmtCleanupDnodes() { +void mnodeCleanupDnodes() { sdbCloseTable(tsDnodeSdb); } @@ -671,8 +671,8 @@ int32_t mnodeRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pC pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; switch (moduleType) { - case TSDB_MOD_MGMT: - strcpy(pWrite, "mgmt"); + case TSDB_MOD_MNODE: + strcpy(pWrite, "mnode"); break; case TSDB_MOD_HTTP: strcpy(pWrite, "http"); diff --git a/src/mnode/src/mnodeMain.c b/src/mnode/src/mnodeMain.c index f1be6a8a87d..ac119477579 100644 --- a/src/mnode/src/mnodeMain.c +++ b/src/mnode/src/mnodeMain.c @@ -43,11 +43,11 @@ static bool mnodeNeedStart() ; int32_t mnodeStartSystem() { if (tsMgmtIsRunning) { - mPrint("TDengine mgmt module already started..."); + mPrint("mnode module already started..."); return 0; } - mPrint("starting to initialize TDengine mgmt ..."); + mPrint("starting to initialize mnode ..."); struct stat dirstat; if (stat(tsMnodeDir, &dirstat) < 0) { mkdir(tsMnodeDir, 0755); @@ -114,7 +114,7 @@ int32_t mnodeStartSystem() { grantReset(TSDB_GRANT_ALL, 0); tsMgmtIsRunning = true; - mPrint("TDengine mgmt is initialized successfully"); + mPrint("mnode is initialized successfully"); return 0; } @@ -126,7 +126,7 @@ int32_t mnodeInitSystem() { } void mnodeCleanupSystem() { - mPrint("starting to clean up mgmt"); + mPrint("starting to clean up mnode"); tsMgmtIsRunning = false; dnodeFreeMnodeWqueue(); @@ -137,24 +137,24 @@ void mnodeCleanupSystem() { grantCleanUp(); balanceCleanUp(); sdbCleanUp(); - mgmtCleanupMnodes(); + mnodeCleanupMnodes(); mnodeCleanupTables(); mnodeCleanupVgroups(); mnodeCleanupDbs(); - mgmtCleanupDnodes(); + mnodeCleanupDnodes(); mnodeCleanupUsers(); mnodeCleanupAccts(); - mPrint("mgmt is cleaned up"); + mPrint("mnode is cleaned up"); } -void mgmtStopSystem() { +void mnodeStopSystem() { if (sdbIsMaster()) { - mTrace("it is a master mgmt node, it could not be stopped"); + mTrace("it is a master mnode, it could not be stopped"); return; } mnodeCleanupSystem(); - mPrint("mgmt file is removed"); + mPrint("mnode file is removed"); remove(tsMnodeDir); } diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c index 3fababf0237..151bd69c6d5 100644 --- a/src/mnode/src/mnodeMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -161,7 +161,7 @@ int32_t mnodeInitMnodes() { return TSDB_CODE_SUCCESS; } -void mgmtCleanupMnodes() { +void mnodeCleanupMnodes() { sdbCloseTable(tsMnodeSdb); mnodeMnodeDestroyLock(); } diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 1fa7b02a40b..4ce8c882817 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -80,14 +80,14 @@ static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *mnodeMsg); static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *mnodeMsg); static int32_t mnodeGetSuperTableMeta(SMnodeMsg *pMsg); static int32_t mnodeGetChildTableMeta(SMnodeMsg *pMsg); -static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg); +static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg); static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *mnodeMsg); static void mnodeProcessAlterTableRsp(SRpcMsg *rpcMsg); static int32_t mnodeFindSuperTableColumnIndex(SSuperTableObj *pStable, char *colName); -static void mgmtDestroyChildTable(SChildTableObj *pTable) { +static void mnodeDestroyChildTable(SChildTableObj *pTable) { tfree(pTable->info.tableId); tfree(pTable->schema); tfree(pTable->sql); @@ -95,7 +95,7 @@ static void mgmtDestroyChildTable(SChildTableObj *pTable) { } static int32_t mnodeChildTableActionDestroy(SSdbOper *pOper) { - mgmtDestroyChildTable(pOper->pObj); + mnodeDestroyChildTable(pOper->pObj); return TSDB_CODE_SUCCESS; } @@ -248,7 +248,7 @@ static int32_t mnodeChildTableActionDecode(SSdbOper *pOper) { int32_t schemaSize = pTable->numOfColumns * sizeof(SSchema); pTable->schema = (SSchema *)malloc(schemaSize); if (pTable->schema == NULL) { - mgmtDestroyChildTable(pTable); + mnodeDestroyChildTable(pTable); return TSDB_CODE_INVALID_TABLE_TYPE; } memcpy(pTable->schema, pOper->rowData + len, schemaSize); @@ -257,7 +257,7 @@ static int32_t mnodeChildTableActionDecode(SSdbOper *pOper) { if (pTable->sqlLen != 0) { pTable->sql = malloc(pTable->sqlLen); if (pTable->sql == NULL) { - mgmtDestroyChildTable(pTable); + mnodeDestroyChildTable(pTable); return TSDB_CODE_SERV_OUT_OF_MEMORY; } memcpy(pTable->sql, pOper->rowData + len, pTable->sqlLen); @@ -395,7 +395,7 @@ static void mnodeRemoveTableFromStable(SSuperTableObj *pStable, SChildTableObj * mnodeDecVgroupRef(pVgroup); } -static void mgmtDestroySuperTable(SSuperTableObj *pStable) { +static void mnodeDestroySuperTable(SSuperTableObj *pStable) { if (pStable->vgHash != NULL) { taosHashCleanup(pStable->vgHash); pStable->vgHash = NULL; @@ -406,7 +406,7 @@ static void mgmtDestroySuperTable(SSuperTableObj *pStable) { } static int32_t mnodeSuperTableActionDestroy(SSdbOper *pOper) { - mgmtDestroySuperTable(pOper->pObj); + mnodeDestroySuperTable(pOper->pObj); return TSDB_CODE_SUCCESS; } @@ -489,7 +489,7 @@ static int32_t mnodeSuperTableActionDecode(SSdbOper *pOper) { int32_t schemaSize = sizeof(SSchema) * (pStable->numOfColumns + pStable->numOfTags); pStable->schema = malloc(schemaSize); if (pStable->schema == NULL) { - mgmtDestroySuperTable(pStable); + mnodeDestroySuperTable(pStable); return TSDB_CODE_NOT_SUPER_TABLE; } @@ -646,7 +646,7 @@ void mnodeCleanupTables() { } // todo move to name.h, add length of table name -static void mgmtExtractTableName(char* tableId, char* name) { +static void mnodeExtractTableName(char* tableId, char* name) { int pos = -1; int num = 0; for (pos = 0; tableId[pos] != 0; ++pos) { @@ -742,7 +742,7 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { return TSDB_CODE_INVALID_TABLE; } else { mTrace("table:%s, failed to get table meta, start auto create table ", pInfo->tableId); - return mgmtAutoCreateChildTable(pMsg); + return mnodeAutoCreateChildTable(pMsg); } } else { if (pMsg->pTable->type != TSDB_SUPER_TABLE) { @@ -799,7 +799,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { int32_t code = sdbInsertRow(&oper); if (code != TSDB_CODE_SUCCESS) { - mgmtDestroySuperTable(pStable); + mnodeDestroySuperTable(pStable); mError("table:%s, failed to create, sdb error", pCreate->tableId); return TSDB_CODE_SDB_ERROR; } else { @@ -821,7 +821,7 @@ static int32_t mnodeProcessDropSuperTableMsg(SMnodeMsg *pMsg) { pDrop->contLen = htonl(sizeof(SMDDropSTableMsg)); pDrop->vgId = htonl(pVgroup->vgId); pDrop->uid = htobe64(pStable->uid); - mgmtExtractTableName(pStable->info.tableId, pDrop->tableId); + mnodeExtractTableName(pStable->info.tableId, pDrop->tableId); mPrint("stable:%s, send drop stable msg to vgId:%d", pStable->info.tableId, pVgroup->vgId); SRpcIpSet ipSet = mnodeGetIpSetFromVgroup(pVgroup); @@ -1146,7 +1146,7 @@ int32_t mnodeRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, } memset(stableName, 0, tListLen(stableName)); - mgmtExtractTableName(pTable->info.tableId, stableName); + mnodeExtractTableName(pTable->info.tableId, stableName); if (pShow->payloadLen > 0 && patternMatch(pShow->payload, stableName, TSDB_TABLE_NAME_LEN, &info) != TSDB_PATTERN_MATCH) { mnodeDecTableRef(pTable); @@ -1325,7 +1325,7 @@ static void mnodeProcessDropSuperTableRsp(SRpcMsg *rpcMsg) { mPrint("drop stable rsp received, result:%s", tstrerror(rpcMsg->code)); } -static void *mgmtBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableObj *pTable) { +static void *mnodeBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableObj *pTable) { STagData * pTagData = NULL; int32_t tagDataLen = 0; int32_t totalCols = 0; @@ -1346,7 +1346,7 @@ static void *mgmtBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableOb return NULL; } - mgmtExtractTableName(pTable->info.tableId, pCreate->tableId); + mnodeExtractTableName(pTable->info.tableId, pCreate->tableId); pCreate->contLen = htonl(contLen); pCreate->vgId = htonl(pTable->vgId); pCreate->tableType = pTable->info.type; @@ -1356,7 +1356,7 @@ static void *mgmtBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableOb pCreate->uid = htobe64(pTable->uid); if (pTable->info.type == TSDB_CHILD_TABLE) { - mgmtExtractTableName(pTable->superTable->info.tableId, pCreate->superTableId); + mnodeExtractTableName(pTable->superTable->info.tableId, pCreate->superTableId); pCreate->numOfColumns = htons(pTable->superTable->numOfColumns); pCreate->numOfTags = htons(pTable->superTable->numOfTags); pCreate->sversion = htonl(pTable->superTable->sversion); @@ -1516,7 +1516,7 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) { return terrno; } - SMDCreateTableMsg *pMDCreate = mgmtBuildCreateChildTableMsg(pCreate, (SChildTableObj *) pMsg->pTable); + SMDCreateTableMsg *pMDCreate = mnodeBuildCreateChildTableMsg(pCreate, (SChildTableObj *) pMsg->pTable); if (pMDCreate == NULL) { return terrno; } @@ -1723,7 +1723,7 @@ static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { return TSDB_CODE_SUCCESS; } -static int32_t mgmtAutoCreateChildTable(SMnodeMsg *pMsg) { +static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->rpcMsg.pCont; STagData* pTag = (STagData*)pInfo->tags; @@ -1879,7 +1879,7 @@ static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { } SMDCreateTableMsg *pMDCreate = NULL; - pMDCreate = mgmtBuildCreateChildTableMsg(NULL, (SChildTableObj *) pTable); + pMDCreate = mnodeBuildCreateChildTableMsg(NULL, (SChildTableObj *) pTable); if (pMDCreate == NULL) { mnodeDecTableRef(pTable); return terrno; @@ -2098,7 +2098,7 @@ static int32_t mnodeGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void return 0; } -static void mgmtVacuumResult(char *data, int32_t numOfCols, int32_t rows, int32_t capacity, SShowObj *pShow) { +static void mnodeVacuumResult(char *data, int32_t numOfCols, int32_t rows, int32_t capacity, SShowObj *pShow) { if (rows < capacity) { for (int32_t i = 0; i < numOfCols; ++i) { memmove(data + pShow->offset[i] * rows, data + pShow->offset[i] * capacity, pShow->bytes[i] * rows); @@ -2132,7 +2132,7 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows char tableName[TSDB_TABLE_NAME_LEN + 1] = {0}; // pattern compare for table name - mgmtExtractTableName(pTable->info.tableId, tableName); + mnodeExtractTableName(pTable->info.tableId, tableName); if (pShow->payloadLen > 0 && patternMatch(pShow->payload, tableName, TSDB_TABLE_NAME_LEN, &info) != TSDB_PATTERN_MATCH) { mnodeDecTableRef(pTable); @@ -2163,7 +2163,7 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows memset(tableName, 0, tListLen(tableName)); if (pTable->info.type == TSDB_CHILD_TABLE) { - mgmtExtractTableName(pTable->superTable->info.tableId, tableName); + mnodeExtractTableName(pTable->superTable->info.tableId, tableName); STR_WITH_MAXSIZE_TO_VARSTR(pWrite, tableName, TSDB_TABLE_NAME_LEN); } @@ -2176,7 +2176,7 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows pShow->numOfReads += numOfRows; const int32_t NUM_OF_COLUMNS = 4; - mgmtVacuumResult(data, NUM_OF_COLUMNS, numOfRows, rows, pShow); + mnodeVacuumResult(data, NUM_OF_COLUMNS, numOfRows, rows, pShow); mnodeDecDbRef(pDb); return numOfRows; diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 36e96dd006c..c8ff6566b6b 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -284,7 +284,7 @@ void mnodeUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVl } if (pVload->cfgVersion != pVgroup->pDb->cfgVersion || pVload->replica != pVgroup->numOfVnodes) { - mError("dnode:%d, vgId:%d, vnode cfgVersion:%d repica:%d not match with mgmt cfgVersion:%d replica:%d", + mError("dnode:%d, vgId:%d, vnode cfgVersion:%d repica:%d not match with mnode cfgVersion:%d replica:%d", pDnode->dnodeId, pVload->vgId, pVload->cfgVersion, pVload->replica, pVgroup->pDb->cfgVersion, pVgroup->numOfVnodes); mnodeSendCreateVgroupMsg(pVgroup, NULL); @@ -532,7 +532,7 @@ void mnodeRemoveTableFromVgroup(SVgObj *pVgroup, SChildTableObj *pTable) { mnodeDecVgroupRef(pVgroup); } -SMDCreateVnodeMsg *mgmtBuildCreateVnodeMsg(SVgObj *pVgroup) { +SMDCreateVnodeMsg *mnodeBuildCreateVnodeMsg(SVgObj *pVgroup) { SDbObj *pDb = pVgroup->pDb; if (pDb == NULL) return NULL; @@ -595,7 +595,7 @@ SRpcIpSet mnodeGetIpSetFromIp(char *ep) { void mnodeSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle) { mTrace("vgId:%d, send create vnode:%d msg, ahandle:%p", pVgroup->vgId, pVgroup->vgId, ahandle); - SMDCreateVnodeMsg *pCreate = mgmtBuildCreateVnodeMsg(pVgroup); + SMDCreateVnodeMsg *pCreate = mnodeBuildCreateVnodeMsg(pVgroup); SRpcMsg rpcMsg = { .handle = ahandle, .pCont = pCreate, @@ -648,7 +648,7 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) { } } -static SMDDropVnodeMsg *mgmtBuildDropVnodeMsg(int32_t vgId) { +static SMDDropVnodeMsg *mnodeBuildDropVnodeMsg(int32_t vgId) { SMDDropVnodeMsg *pDrop = rpcMallocCont(sizeof(SMDDropVnodeMsg)); if (pDrop == NULL) return NULL; @@ -657,7 +657,7 @@ static SMDDropVnodeMsg *mgmtBuildDropVnodeMsg(int32_t vgId) { } void mnodeSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle) { - SMDDropVnodeMsg *pDrop = mgmtBuildDropVnodeMsg(vgId); + SMDDropVnodeMsg *pDrop = mnodeBuildDropVnodeMsg(vgId); SRpcMsg rpcMsg = { .handle = ahandle, .pCont = pDrop, diff --git a/tests/pytest/util/dnodes.py b/tests/pytest/util/dnodes.py index e9f0dad076d..998c996ca2a 100644 --- a/tests/pytest/util/dnodes.py +++ b/tests/pytest/util/dnodes.py @@ -159,7 +159,7 @@ def deploy(self): self.cfg("dataDir", self.dataDir) self.cfg("logDir", self.logDir) self.cfg("numOfLogLines", "100000000") - self.cfg("mgmtEqualVnodeNum", "0") + self.cfg("mnodeEqualVnodeNum", "0") self.cfg("clog", "1") self.cfg("statusInterval", "1") self.cfg("numOfTotalVnodes", "64") diff --git a/tests/script/general/alter/count.sim b/tests/script/general/alter/count.sim index a42fde74b75..11b2f6e2442 100644 --- a/tests/script/general/alter/count.sim +++ b/tests/script/general/alter/count.sim @@ -4,7 +4,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c wallevel -v 0 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master system sh/exec.sh -n dnode1 -s start diff --git a/tests/script/general/alter/import.sim b/tests/script/general/alter/import.sim index 61297655133..801e716e8c4 100644 --- a/tests/script/general/alter/import.sim +++ b/tests/script/general/alter/import.sim @@ -4,7 +4,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c wallevel -v 0 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master system sh/exec.sh -n dnode1 -s start diff --git a/tests/script/general/db/backup/keep.sim b/tests/script/general/db/backup/keep.sim index 4899acdd213..f48ce0e4144 100644 --- a/tests/script/general/db/backup/keep.sim +++ b/tests/script/general/db/backup/keep.sim @@ -12,9 +12,9 @@ system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master system sh/exec.sh -n dnode1 -s start diff --git a/tests/script/general/db/delete_reuse1.sim b/tests/script/general/db/delete_reuse1.sim index 1e4baeb5768..75a4cfaff03 100644 --- a/tests/script/general/db/delete_reuse1.sim +++ b/tests/script/general/db/delete_reuse1.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/general/db/delete_reuse2.sim b/tests/script/general/db/delete_reuse2.sim index d2fcaad8383..103242ee1bb 100644 --- a/tests/script/general/db/delete_reuse2.sim +++ b/tests/script/general/db/delete_reuse2.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/general/db/delete_writing1.sim b/tests/script/general/db/delete_writing1.sim index 58fe68dd5f9..01914e91a8e 100644 --- a/tests/script/general/db/delete_writing1.sim +++ b/tests/script/general/db/delete_writing1.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/general/import/basic.sim b/tests/script/general/import/basic.sim index 2b72d55cdaf..b6e064c845d 100644 --- a/tests/script/general/import/basic.sim +++ b/tests/script/general/import/basic.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/general/import/commit.sim b/tests/script/general/import/commit.sim index 64833fcd616..93bd93cf21d 100644 --- a/tests/script/general/import/commit.sim +++ b/tests/script/general/import/commit.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/general/import/large.sim b/tests/script/general/import/large.sim index 6f6889a226d..751eef785b8 100644 --- a/tests/script/general/import/large.sim +++ b/tests/script/general/import/large.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/general/import/replica1.sim b/tests/script/general/import/replica1.sim index 61f563ba8e9..771f2a8cbbe 100644 --- a/tests/script/general/import/replica1.sim +++ b/tests/script/general/import/replica1.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/general/table/delete_reuse1.sim b/tests/script/general/table/delete_reuse1.sim index 94f5bdb2876..4727796a624 100644 --- a/tests/script/general/table/delete_reuse1.sim +++ b/tests/script/general/table/delete_reuse1.sim @@ -14,10 +14,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/general/table/delete_reuse2.sim b/tests/script/general/table/delete_reuse2.sim index 1a9c80cff07..9dfc0c5d4e3 100644 --- a/tests/script/general/table/delete_reuse2.sim +++ b/tests/script/general/table/delete_reuse2.sim @@ -14,10 +14,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/general/table/delete_writing.sim b/tests/script/general/table/delete_writing.sim index 73d028928fc..ac056f2212b 100644 --- a/tests/script/general/table/delete_writing.sim +++ b/tests/script/general/table/delete_writing.sim @@ -14,10 +14,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/sh/clear.sh b/tests/script/sh/clear.sh index 714ff435803..3be31d15f9e 100755 --- a/tests/script/sh/clear.sh +++ b/tests/script/sh/clear.sh @@ -106,7 +106,7 @@ echo "monitor 0" >> $TAOS_CFG echo "numOfThreadsPerCore 2.0" >> $TAOS_CFG echo "defaultPass taosdata" >> $TAOS_CFG echo "numOfLogLines 100000000" >> $TAOS_CFG -echo "mgmtEqualVnodeNum 0" >> $TAOS_CFG +echo "mnodeEqualVnodeNum 0" >> $TAOS_CFG echo "clog 0" >> $TAOS_CFG echo "statusInterval 1" >> $TAOS_CFG echo "numOfTotalVnodes 4" >> $TAOS_CFG diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index b3134938cbc..f8e123369f4 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -115,7 +115,7 @@ echo "http 0" >> $TAOS_CFG echo "numOfThreadsPerCore 2.0" >> $TAOS_CFG echo "defaultPass taosdata" >> $TAOS_CFG echo "numOfLogLines 100000000" >> $TAOS_CFG -echo "mgmtEqualVnodeNum 0" >> $TAOS_CFG +echo "mnodeEqualVnodeNum 0" >> $TAOS_CFG echo "clog 2" >> $TAOS_CFG echo "statusInterval 1" >> $TAOS_CFG echo "numOfTotalVnodes 4" >> $TAOS_CFG diff --git a/tests/script/tmp/prepare.sim b/tests/script/tmp/prepare.sim index 1db643c5c9c..be9e255eb89 100644 --- a/tests/script/tmp/prepare.sim +++ b/tests/script/tmp/prepare.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/cluster/balance1.sim b/tests/script/unique/cluster/balance1.sim index 424a80d25aa..9130493a93b 100644 --- a/tests/script/unique/cluster/balance1.sim +++ b/tests/script/unique/cluster/balance1.sim @@ -26,14 +26,14 @@ system sh/cfg.sh -n dnode6 -c numOfMpeers -v 3 system sh/cfg.sh -n dnode7 -c numOfMpeers -v 3 system sh/cfg.sh -n dnode8 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode6 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode7 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode8 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode5 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode6 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode7 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode8 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/cluster/balance2.sim b/tests/script/unique/cluster/balance2.sim index 08fdd233e01..56c0d538b6c 100644 --- a/tests/script/unique/cluster/balance2.sim +++ b/tests/script/unique/cluster/balance2.sim @@ -35,14 +35,14 @@ system sh/cfg.sh -n dnode6 -c wallevel -v 1 system sh/cfg.sh -n dnode7 -c wallevel -v 1 system sh/cfg.sh -n dnode8 -c wallevel -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode6 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode7 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode8 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode5 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode6 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode7 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode8 -c mnodeEqualVnodeNum -v 0 print ============== step1 print ========= start dnode1 diff --git a/tests/script/unique/cluster/balance3.sim b/tests/script/unique/cluster/balance3.sim index 407adc7f3b6..346f027526c 100644 --- a/tests/script/unique/cluster/balance3.sim +++ b/tests/script/unique/cluster/balance3.sim @@ -27,14 +27,14 @@ system sh/cfg.sh -n dnode6 -c numOfMpeers -v 3 system sh/cfg.sh -n dnode7 -c numOfMpeers -v 3 system sh/cfg.sh -n dnode8 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode6 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode7 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode8 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode5 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode6 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode7 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode8 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/db/commit.sim b/tests/script/unique/db/commit.sim index 5bf6ea6f10b..95a6b92bb29 100644 --- a/tests/script/unique/db/commit.sim +++ b/tests/script/unique/db/commit.sim @@ -9,9 +9,9 @@ system sh/cfg.sh -n dnode3 -c walLevel -v 2 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/db/delete_part.sim b/tests/script/unique/db/delete_part.sim index 179d729d8da..1bd103137b4 100644 --- a/tests/script/unique/db/delete_part.sim +++ b/tests/script/unique/db/delete_part.sim @@ -14,10 +14,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_add12.sim b/tests/script/unique/db/replica_add12.sim index b0de807fca7..ce7121db2e8 100644 --- a/tests/script/unique/db/replica_add12.sim +++ b/tests/script/unique/db/replica_add12.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_add13.sim b/tests/script/unique/db/replica_add13.sim index 9f66faab0aa..b2bfef2b580 100644 --- a/tests/script/unique/db/replica_add13.sim +++ b/tests/script/unique/db/replica_add13.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_add23.sim b/tests/script/unique/db/replica_add23.sim index 2d293183af1..6df09d0cac7 100644 --- a/tests/script/unique/db/replica_add23.sim +++ b/tests/script/unique/db/replica_add23.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_part.sim b/tests/script/unique/db/replica_part.sim index 76e3eaabbe1..6a41c430ea9 100644 --- a/tests/script/unique/db/replica_part.sim +++ b/tests/script/unique/db/replica_part.sim @@ -10,9 +10,9 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_reduce21.sim b/tests/script/unique/db/replica_reduce21.sim index 3a324c604a5..931382d8c40 100644 --- a/tests/script/unique/db/replica_reduce21.sim +++ b/tests/script/unique/db/replica_reduce21.sim @@ -10,9 +10,9 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_reduce31.sim b/tests/script/unique/db/replica_reduce31.sim index fdb5e3c1dc8..22c89d91b9a 100644 --- a/tests/script/unique/db/replica_reduce31.sim +++ b/tests/script/unique/db/replica_reduce31.sim @@ -10,9 +10,9 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/db/replica_reduce32.sim b/tests/script/unique/db/replica_reduce32.sim index 83b5cb7a5bc..54069cb1336 100644 --- a/tests/script/unique/db/replica_reduce32.sim +++ b/tests/script/unique/db/replica_reduce32.sim @@ -10,9 +10,9 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/dnode/balance1.sim b/tests/script/unique/dnode/balance1.sim index 9a598e17048..a6be723d7c1 100644 --- a/tests/script/unique/dnode/balance1.sim +++ b/tests/script/unique/dnode/balance1.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode3 -c balanceInterval -v 10 system sh/cfg.sh -n dnode4 -c balanceInterval -v 10 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 diff --git a/tests/script/unique/dnode/balance2.sim b/tests/script/unique/dnode/balance2.sim index f0395790127..c60ac145171 100644 --- a/tests/script/unique/dnode/balance2.sim +++ b/tests/script/unique/dnode/balance2.sim @@ -6,11 +6,11 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 system sh/deploy.sh -n dnode5 -i 5 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode5 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/balance3.sim b/tests/script/unique/dnode/balance3.sim index acb0d033d4a..f0bf0c7c2b7 100644 --- a/tests/script/unique/dnode/balance3.sim +++ b/tests/script/unique/dnode/balance3.sim @@ -7,12 +7,12 @@ system sh/deploy.sh -n dnode4 -i 4 system sh/deploy.sh -n dnode5 -i 5 system sh/deploy.sh -n dnode6 -i 6 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode6 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode5 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode6 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/balancex.sim b/tests/script/unique/dnode/balancex.sim index 202c9b53962..14b09826784 100644 --- a/tests/script/unique/dnode/balancex.sim +++ b/tests/script/unique/dnode/balancex.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/monitor_bug.sim b/tests/script/unique/dnode/monitor_bug.sim index 8726caf1db8..a20185240f3 100644 --- a/tests/script/unique/dnode/monitor_bug.sim +++ b/tests/script/unique/dnode/monitor_bug.sim @@ -3,8 +3,8 @@ system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/offline1.sim b/tests/script/unique/dnode/offline1.sim index 5e4ab65be37..9d068e83587 100644 --- a/tests/script/unique/dnode/offline1.sim +++ b/tests/script/unique/dnode/offline1.sim @@ -12,9 +12,9 @@ system sh/cfg.sh -n dnode1 -c balanceInterval -v 5 system sh/cfg.sh -n dnode2 -c balanceInterval -v 5 system sh/cfg.sh -n dnode3 -c balanceInterval -v 5 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/offline2.sim b/tests/script/unique/dnode/offline2.sim index 9d8ba8bf9d1..e9c1218e1f7 100644 --- a/tests/script/unique/dnode/offline2.sim +++ b/tests/script/unique/dnode/offline2.sim @@ -12,9 +12,9 @@ system sh/cfg.sh -n dnode1 -c balanceInterval -v 5 system sh/cfg.sh -n dnode2 -c balanceInterval -v 5 system sh/cfg.sh -n dnode3 -c balanceInterval -v 5 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/remove1.sim b/tests/script/unique/dnode/remove1.sim index 6b23014b034..2eb1fe4ae73 100644 --- a/tests/script/unique/dnode/remove1.sim +++ b/tests/script/unique/dnode/remove1.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/dnode/remove2.sim b/tests/script/unique/dnode/remove2.sim index 42cb9e5485b..db77a8e05df 100644 --- a/tests/script/unique/dnode/remove2.sim +++ b/tests/script/unique/dnode/remove2.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 diff --git a/tests/script/unique/dnode/vnode_clean.sim b/tests/script/unique/dnode/vnode_clean.sim index d46e1a751ed..d42fbf4e2d5 100644 --- a/tests/script/unique/dnode/vnode_clean.sim +++ b/tests/script/unique/dnode/vnode_clean.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/import/replica2.sim b/tests/script/unique/import/replica2.sim index 70097a50221..3f21fcf00d2 100644 --- a/tests/script/unique/import/replica2.sim +++ b/tests/script/unique/import/replica2.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/unique/import/replica3.sim b/tests/script/unique/import/replica3.sim index ad236bfb0ca..8eb2df9942d 100644 --- a/tests/script/unique/import/replica3.sim +++ b/tests/script/unique/import/replica3.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 10 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 10 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2000 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 2000 diff --git a/tests/script/unique/stable/balance_replica1.sim b/tests/script/unique/stable/balance_replica1.sim index 9257ba79bee..4269c2fc7f1 100644 --- a/tests/script/unique/stable/balance_replica1.sim +++ b/tests/script/unique/stable/balance_replica1.sim @@ -9,8 +9,8 @@ system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c walLevel -v 2 system sh/cfg.sh -n dnode2 -c walLevel -v 2 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4 diff --git a/tests/script/unique/stream/metrics_balance.sim b/tests/script/unique/stream/metrics_balance.sim index e711baf2066..6ca5de96f61 100644 --- a/tests/script/unique/stream/metrics_balance.sim +++ b/tests/script/unique/stream/metrics_balance.sim @@ -12,8 +12,8 @@ system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c walLevel -v 0 system sh/cfg.sh -n dnode2 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c maxTablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxTablesPerVnode -v 4 system sh/cfg.sh -n dnode1 -c tableMetaKeepTimer -v 5 diff --git a/tests/script/unique/stream/table_balance.sim b/tests/script/unique/stream/table_balance.sim index 7e33005b9b9..9cb87557d14 100644 --- a/tests/script/unique/stream/table_balance.sim +++ b/tests/script/unique/stream/table_balance.sim @@ -12,8 +12,8 @@ system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c walLevel -v 0 system sh/cfg.sh -n dnode2 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 diff --git a/tests/script/unique/stream/table_move.sim b/tests/script/unique/stream/table_move.sim index 54cd3195dbb..41fbcae4ce7 100644 --- a/tests/script/unique/stream/table_move.sim +++ b/tests/script/unique/stream/table_move.sim @@ -30,10 +30,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 1 system sh/cfg.sh -n dnode3 -c wallevel -v 1 system sh/cfg.sh -n dnode4 -c wallevel -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 0 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4 diff --git a/tests/script/unique/vnode/many.sim b/tests/script/unique/vnode/many.sim index bb3e8813bd7..2b4ec01c2d7 100644 --- a/tests/script/unique/vnode/many.sim +++ b/tests/script/unique/vnode/many.sim @@ -12,10 +12,10 @@ system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/vnode/replica2_basic2.sim b/tests/script/unique/vnode/replica2_basic2.sim index 041db8249ac..114ac9b29f3 100644 --- a/tests/script/unique/vnode/replica2_basic2.sim +++ b/tests/script/unique/vnode/replica2_basic2.sim @@ -15,10 +15,10 @@ system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/vnode/replica2_repeat.sim b/tests/script/unique/vnode/replica2_repeat.sim index a6bd226484c..57f51316ad5 100644 --- a/tests/script/unique/vnode/replica2_repeat.sim +++ b/tests/script/unique/vnode/replica2_repeat.sim @@ -12,10 +12,10 @@ system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/exec_up.sh -n dnode1 -s start sql connect diff --git a/tests/script/unique/vnode/replica3_repeat.sim b/tests/script/unique/vnode/replica3_repeat.sim index 2f311a5d7a5..a6f423bf9a3 100644 --- a/tests/script/unique/vnode/replica3_repeat.sim +++ b/tests/script/unique/vnode/replica3_repeat.sim @@ -12,10 +12,10 @@ system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 +system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4 system sh/exec_up.sh -n dnode1 -s start From 73eee9d80bde3dcde35d75f9437fda73b4d1f383 Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Thu, 28 May 2020 15:25:56 +0800 Subject: [PATCH 43/85] fix possible dead loop in shellPrintNChar --- src/kit/shell/inc/shell.h | 1 - src/kit/shell/src/shellDarwin.c | 25 -------------------- src/kit/shell/src/shellEngine.c | 39 +++++++++++++++++++++++++++++--- src/kit/shell/src/shellLinux.c | 24 -------------------- src/kit/shell/src/shellWindows.c | 26 --------------------- 5 files changed, 36 insertions(+), 79 deletions(-) diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h index 5400d9c5baf..54ac45583c5 100644 --- a/src/kit/shell/inc/shell.h +++ b/src/kit/shell/inc/shell.h @@ -68,7 +68,6 @@ void get_history_path(char* history); void cleanup_handler(void* arg); void exitShell(); int shellDumpResult(TAOS* con, char* fname, int* error_no, bool printMode); -void shellPrintNChar(const char* str, int length, int width); void shellGetGrantInfo(void *con); int isCommentLine(char *line); diff --git a/src/kit/shell/src/shellDarwin.c b/src/kit/shell/src/shellDarwin.c index 987087d71f8..98ea6510d7a 100644 --- a/src/kit/shell/src/shellDarwin.c +++ b/src/kit/shell/src/shellDarwin.c @@ -349,31 +349,6 @@ void *shellLoopQuery(void *arg) { return NULL; } -void shellPrintNChar(const char *str, int length, int width) { - int pos = 0, cols = 0; - while (pos < length) { - wchar_t wc; - pos += mbtowc(&wc, str + pos, MB_CUR_MAX); - if (pos > length) { - break; - } - - int w = wcwidth(wc); - if (w > 0) { - if (width > 0 && cols + w > width) { - break; - } - printf("%lc", wc); - cols += w; - } - } - - for (; cols < width; cols++) { - putchar(' '); - } -} - - int get_old_terminal_mode(struct termios *tio) { /* Make sure stdin is a terminal. */ if (!isatty(STDIN_FILENO)) { diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index 4ef51eaa5a8..5b4da875de3 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -435,7 +435,6 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) { int num_fields = taos_num_fields(result); TAOS_FIELD *fields = taos_fetch_fields(result); - int32_t* length = taos_fetch_lengths(result); int precision = taos_result_precision(result); for (int col = 0; col < num_fields; col++) { @@ -448,6 +447,7 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) { int numOfRows = 0; do { + int32_t* length = taos_fetch_lengths(result); for (int i = 0; i < num_fields; i++) { if (i > 0) { fputc(',', fp); @@ -465,6 +465,39 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) { } +static void shellPrintNChar(const char *str, int length, int width) { + int pos = 0, cols = 0; + while (pos < length) { + wchar_t wc; + int bytes = mbtowc(&wc, str + pos, MB_CUR_MAX); + if (bytes == 0) { + break; + } + pos += bytes; + if (pos > length) { + break; + } + +#ifdef WINDOWS + int w = bytes; +#else + int w = wcwidth(wc); +#endif + if (w > 0) { + if (width > 0 && cols + w > width) { + break; + } + printf("%lc", wc); + cols += w; + } + } + + for (; cols < width; cols++) { + putchar(' '); + } +} + + static void printField(const char* val, TAOS_FIELD* field, int width, int32_t length, int precision) { if (val == NULL) { int w = width; @@ -523,7 +556,6 @@ static int verticalPrintResult(TAOS_RES* result) { int num_fields = taos_num_fields(result); TAOS_FIELD *fields = taos_fetch_fields(result); - int32_t* length = taos_fetch_lengths(result); int precision = taos_result_precision(result); int maxColNameLen = 0; @@ -537,6 +569,7 @@ static int verticalPrintResult(TAOS_RES* result) { int numOfRows = 0; do { printf("*************************** %d.row ***************************\n", numOfRows + 1); + int32_t* length = taos_fetch_lengths(result); for (int i = 0; i < num_fields; i++) { TAOS_FIELD* field = fields + i; @@ -631,7 +664,6 @@ static int horizontalPrintResult(TAOS_RES* result) { int num_fields = taos_num_fields(result); TAOS_FIELD *fields = taos_fetch_fields(result); - int32_t* length = taos_fetch_lengths(result); int precision = taos_result_precision(result); int width[TSDB_MAX_COLUMNS]; @@ -643,6 +675,7 @@ static int horizontalPrintResult(TAOS_RES* result) { int numOfRows = 0; do { + int32_t* length = taos_fetch_lengths(result); for (int i = 0; i < num_fields; i++) { putchar(' '); printField(row[i], fields + i, width[i], length[i], precision); diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index d8b3e9bb4da..b4b74eae3ab 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -323,30 +323,6 @@ void *shellLoopQuery(void *arg) { return NULL; } -void shellPrintNChar(const char *str, int length, int width) { - int pos = 0, cols = 0; - while (pos < length) { - wchar_t wc; - pos += mbtowc(&wc, str + pos, MB_CUR_MAX); - if (pos > length) { - break; - } - - int w = wcwidth(wc); - if (w > 0) { - if (width > 0 && cols + w > width) { - break; - } - printf("%lc", wc); - cols += w; - } - } - - for (; cols < width; cols++) { - putchar(' '); - } -} - int get_old_terminal_mode(struct termios *tio) { /* Make sure stdin is a terminal. */ if (!isatty(STDIN_FILENO)) { diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c index 440aa508ab4..48545f537e3 100644 --- a/src/kit/shell/src/shellWindows.c +++ b/src/kit/shell/src/shellWindows.c @@ -214,32 +214,6 @@ void *shellLoopQuery(void *arg) { return NULL; } -void shellPrintNChar(const char *str, int length, int width) { - int pos = 0, cols = 0; - while (pos < length) { - wchar_t wc; - int bytes = mbtowc(&wc, str + pos, MB_CUR_MAX); - pos += bytes; - if (pos > length) { - break; - } - - int w = bytes; - if (w > 0) { - if (width > 0 && cols + w > width) { - break; - } - printf("%lc", wc); - cols += w; - } - } - - for (; cols < width; cols++) { - putchar(' '); - } -} - - void get_history_path(char *history) { sprintf(history, "%s/%s", ".", HISTORY_FILE); } void exitShell() { exit(EXIT_SUCCESS); } From 8c49afc1f47ddc5cd00e2f42ff13964d7e85dbf8 Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Thu, 28 May 2020 16:15:24 +0800 Subject: [PATCH 44/85] fix incorrect length in nchar conversion --- src/client/src/tscSubquery.c | 5 ++++- src/util/inc/tutil.h | 2 +- src/util/src/tutil.c | 16 ++++++++-------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 3a205924bf9..8c741dfdc88 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -1888,11 +1888,14 @@ static void transferNcharData(SSqlObj *pSql, int32_t columnIndex, TAOS_FIELD *pF /* string terminated char for binary data*/ memset(pRes->buffer[columnIndex], 0, pField->bytes + TSDB_NCHAR_SIZE); - if (taosUcs4ToMbs(pRes->tsrow[columnIndex], pField->bytes - VARSTR_HEADER_SIZE, pRes->buffer[columnIndex])) { + int32_t length = taosUcs4ToMbs(pRes->tsrow[columnIndex], pRes->length[columnIndex], pRes->buffer[columnIndex]); + if ( length >= 0 ) { pRes->tsrow[columnIndex] = pRes->buffer[columnIndex]; + pRes->length[columnIndex] = length; } else { tscError("%p charset:%s to %s. val:%ls convert failed.", pSql, DEFAULT_UNICODE_ENCODEC, tsCharset, pRes->tsrow[columnIndex]); pRes->tsrow[columnIndex] = NULL; + pRes->length[columnIndex] = 0; } } } diff --git a/src/util/inc/tutil.h b/src/util/inc/tutil.h index 3a0a1920af4..5dcb6e406f5 100644 --- a/src/util/inc/tutil.h +++ b/src/util/inc/tutil.h @@ -145,7 +145,7 @@ bool taosMbsToUcs4(char *mbs, size_t mbs_len, char *ucs4, int32_t ucs4_max_len, int tasoUcs4Compare(void* f1_ucs4, void *f2_ucs4, int bytes); -bool taosUcs4ToMbs(void *ucs4, int32_t ucs4_max_len, char *mbs); +int32_t taosUcs4ToMbs(void *ucs4, int32_t ucs4_max_len, char *mbs); bool taosValidateEncodec(const char *encodec); diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index 989273e0515..2392560370e 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -447,10 +447,10 @@ int tasoUcs4Compare(void* f1_ucs4, void *f2_ucs4, int bytes) { int32_t ucs4_max_len = bytes + 4; char *f1_mbs = calloc(bytes, 1); char *f2_mbs = calloc(bytes, 1); - if (!taosUcs4ToMbs(f1_ucs4, ucs4_max_len, f1_mbs)) { + if (taosUcs4ToMbs(f1_ucs4, ucs4_max_len, f1_mbs) < 0) { return -1; } - if (!taosUcs4ToMbs(f2_ucs4, ucs4_max_len, f2_mbs)) { + if (taosUcs4ToMbs(f2_ucs4, ucs4_max_len, f2_mbs) < 0) { return -1; } int32_t ret = strcmp(f1_mbs, f2_mbs); @@ -464,29 +464,29 @@ int tasoUcs4Compare(void* f1_ucs4, void *f2_ucs4, int bytes) { #endif } -bool taosUcs4ToMbs(void *ucs4, int32_t ucs4_max_len, char *mbs) { +int32_t taosUcs4ToMbs(void *ucs4, int32_t ucs4_max_len, char *mbs) { #ifdef USE_LIBICONV iconv_t cd = iconv_open(tsCharset, DEFAULT_UNICODE_ENCODEC); size_t ucs4_input_len = ucs4_max_len; size_t outLen = ucs4_max_len; if (iconv(cd, (char **)&ucs4, &ucs4_input_len, &mbs, &outLen) == -1) { iconv_close(cd); - return false; + return -1; } iconv_close(cd); - return true; + return (int32_t)(ucs4_max_len - outLen); #else mbstate_t state = {0}; int32_t len = (int32_t) wcsnrtombs(NULL, (const wchar_t **) &ucs4, ucs4_max_len / 4, 0, &state); if (len < 0) { - return false; + return -1; } memset(&state, 0, sizeof(state)); len = wcsnrtombs(mbs, (const wchar_t **) &ucs4, ucs4_max_len / 4, (size_t) len, &state); if (len < 0) { - return false; + return -1; } - return true; + return len; #endif } From c773992e06fd22a31b86be5d5411bbca9fa5e83c Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 28 May 2020 17:32:48 +0800 Subject: [PATCH 45/85] fix resource leak in mgmtTable.c --- src/mnode/src/mgmtTable.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mnode/src/mgmtTable.c b/src/mnode/src/mgmtTable.c index 53fbd64f87e..f4c37a9b46c 100644 --- a/src/mnode/src/mgmtTable.c +++ b/src/mnode/src/mgmtTable.c @@ -233,7 +233,10 @@ static int32_t mgmtChildTableActionDecode(SSdbOper *pOper) { if (pTable == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; int32_t len = strlen(pOper->rowData); - if (len > TSDB_TABLE_ID_LEN) return TSDB_CODE_INVALID_TABLE_ID; + if (len > TSDB_TABLE_ID_LEN) { + free(pTable); + return TSDB_CODE_INVALID_TABLE_ID; + } pTable->info.tableId = strdup(pOper->rowData); len++; From e92fec2db5a34082478d70b8cb554ca22034aaec Mon Sep 17 00:00:00 2001 From: Bomin Zhang Date: Wed, 27 May 2020 17:51:15 +0800 Subject: [PATCH 46/85] td-436: update limit in document --- documentation/webdocs/markdowndocs/Super Table-ch.md | 7 ++++--- documentation/webdocs/markdowndocs/Super Table.md | 6 +++--- documentation/webdocs/markdowndocs/TAOS SQL-ch.md | 6 +++--- documentation/webdocs/markdowndocs/TAOS SQL.md | 4 ++-- documentation/webdocs/markdowndocs/connector-ch.md | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/documentation/webdocs/markdowndocs/Super Table-ch.md b/documentation/webdocs/markdowndocs/Super Table-ch.md index 38e6f8c17f9..626f695c27a 100644 --- a/documentation/webdocs/markdowndocs/Super Table-ch.md +++ b/documentation/webdocs/markdowndocs/Super Table-ch.md @@ -53,10 +53,11 @@ STable从属于库,一个STable只属于一个库,但一个库可以有一 说明: - 1. TAGS列总长度不能超过512 bytes; + 1. TAGS列总长度不能超过64k bytes; 2. TAGS列的数据类型不能是timestamp; 3. TAGS列名不能与其他列名相同; 4. TAGS列名不能为预留关键字. + 5. TAGS总数的上限是128. - 显示已创建的超级表 @@ -114,7 +115,7 @@ INSERT INTO USING TAGS (, ...) VALUES ( ADD TAG ``` - 为STable增加一个新的标签,并指定新标签的类型。标签总数不能超过6个。 + 为STable增加一个新的标签,并指定新标签的类型。标签总数不能超过128个。 - 删除标签 @@ -202,7 +203,7 @@ INSERT INTO therm4 VALUES ('2018-01-01 00:00:00.000', 23); ###3:按标签聚合查询 -查询位于北京(beijing)和天津(tianjing)两个地区的温度传感器采样值的数量count(*)、平均温度avg(degree)、最高温度max(degree)、最低温度min(degree),并将结果按所处地域(location)和传感器类型(type)进行聚合。 +查询位于北京(beijing)和天津(tianjin)两个地区的温度传感器采样值的数量count(*)、平均温度avg(degree)、最高温度max(degree)、最低温度min(degree),并将结果按所处地域(location)和传感器类型(type)进行聚合。 ```mysql SELECT COUNT(*), AVG(degree), MAX(degree), MIN(degree) diff --git a/documentation/webdocs/markdowndocs/Super Table.md b/documentation/webdocs/markdowndocs/Super Table.md index efc95c5f792..6c80c2097c3 100644 --- a/documentation/webdocs/markdowndocs/Super Table.md +++ b/documentation/webdocs/markdowndocs/Super Table.md @@ -22,11 +22,11 @@ New keyword "tags" is introduced, where tag_name is the tag name, and tag_type i Note: -1. The bytes of all tags together shall be less than 512 +1. The bytes of all tags together shall be less than 64k 2. Tag's data type can not be time stamp 3. Tag name shall be different from the field name 4. Tag name shall not be the same as system keywords -5. Maximum number of tags is 6 +5. Maximum number of tags is 128 For example: @@ -168,7 +168,7 @@ You can add, delete and change the tags for a STable, and you can change the tag ALTER TABLE ADD TAG ``` -It adds a new tag to the STable with a data type. The maximum number of tags is 6. +It adds a new tag to the STable with a data type. The maximum number of tags is 128. ### Drop a Tag diff --git a/documentation/webdocs/markdowndocs/TAOS SQL-ch.md b/documentation/webdocs/markdowndocs/TAOS SQL-ch.md index cd184cbc71b..81fc3ffcc42 100644 --- a/documentation/webdocs/markdowndocs/TAOS SQL-ch.md +++ b/documentation/webdocs/markdowndocs/TAOS SQL-ch.md @@ -63,7 +63,7 @@ TDengine缺省的时间戳是毫秒精度,但通过修改配置参数enableMic | 3 | BIGINT | 8 | 长整型,范围 [-2^63+1, 2^63-1], -2^63用于NULL | | 4 | FLOAT | 4 | 浮点型,有效位数6-7,范围 [-3.4E38, 3.4E38] | | 5 | DOUBLE | 8 | 双精度浮点型,有效位数15-16,范围 [-1.7E308, 1.7E308] | -| 6 | BINARY | 自定义 | 用于记录字符串,最长不能超过504 bytes。binary仅支持字符串输入,字符串两端使用单引号引用,否则英文全部自动转化为小写。使用时须指定大小,如binary(20)定义了最长为20个字符的字符串,每个字符占1byte的存储空间。如果用户字符串超出20字节,将被自动截断。对于字符串内的单引号,可以用转义字符反斜线加单引号来表示, 即 **\’**。 | +| 6 | BINARY | 自定义 | 用于记录字符串,理论上,最长可以有65526字节,但由于每行数据最多64K字节,实际上限一般小于理论值。 binary仅支持字符串输入,字符串两端使用单引号引用,否则英文全部自动转化为小写。使用时须指定大小,如binary(20)定义了最长为20个字符的字符串,每个字符占1byte的存储空间。如果用户字符串超出20字节,将被自动截断。对于字符串内的单引号,可以用转义字符反斜线加单引号来表示, 即 **\’**。 | | 7 | SMALLINT | 2 | 短整型, 范围 [-32767, 32767], -32768用于NULL | | 8 | TINYINT | 1 | 单字节整型,范围 [-127, 127], -128用于NULL | | 9 | BOOL | 1 | 布尔型,{true, false} | @@ -106,7 +106,7 @@ TDengine缺省的时间戳是毫秒精度,但通过修改配置参数enableMic ```mysql CREATE TABLE [IF NOT EXISTS] tb_name (timestamp_field_name TIMESTAMP, field1_name data_type1 [, field2_name data_type2 ...]) ``` - 说明:1)表的第一个字段必须是TIMESTAMP,并且系统自动将其设为主键;2)表的每行长度不能超过4096字节;3)使用数据类型binary或nchar,需指定其最长的字节数,如binary(20),表示20字节。 + 说明:1)表的第一个字段必须是TIMESTAMP,并且系统自动将其设为主键;2)表的每行长度不能超过64K字节;3)使用数据类型binary或nchar,需指定其最长的字节数,如binary(20),表示20字节。 - **删除数据表** @@ -402,7 +402,7 @@ count(tbname) | SELECT * FROM tb1 WHERE ts >= NOW - 1h ``` -- 查询表tb1从2018-06-01 08:00:00.000 到2018-06-02 08:00:00.000时间范围,并且clo3的字符串是'nny'结尾的记录,结果按照时间戳降序 +- 查询表tb1从2018-06-01 08:00:00.000 到2018-06-02 08:00:00.000时间范围,并且col3的字符串是'nny'结尾的记录,结果按照时间戳降序 ```mysql SELECT * FROM tb1 WHERE ts > '2018-06-01 08:00:00.000' AND ts <= '2018-06-02 08:00:00.000' AND col3 LIKE '%nny' ORDER BY ts DESC diff --git a/documentation/webdocs/markdowndocs/TAOS SQL.md b/documentation/webdocs/markdowndocs/TAOS SQL.md index 99aa73b4354..2b9960b860f 100644 --- a/documentation/webdocs/markdowndocs/TAOS SQL.md +++ b/documentation/webdocs/markdowndocs/TAOS SQL.md @@ -39,7 +39,7 @@ The full list of data types is listed below. For string types of data, we will | 6 | DOUBLE | 8 | A standard nullable double float type with 15-16 significant digits and a range of [-1.7E308, 1.7E308]​ | | 7 | BOOL | 1 | A nullable boolean type, [**`true`**, **`false`**] | | 8 | TIMESTAMP | 8 | A nullable timestamp type with the same usage as the primary column timestamp | -| 9 | BINARY(*M*) | *M* | A nullable string type whose length is *M*, any exceeded chars will be automatically truncated. This type of string only supports ASCii encoded chars. | +| 9 | BINARY(*M*) | *M* | A nullable string type whose length is *M*, any exceeded chars will be automatically truncated, the maximum length of *M* is 65526, but as maximum row size is 64K bytes, the actual upper limit will generally less than 65526. This type of string only supports ASCii encoded chars. | | 10 | NCHAR(*M*) | 4 * *M* | A nullable string type whose length is *M*, any exceeded chars will be truncated. The **`NCHAR`** type supports Unicode encoded chars. | All the keywords in a SQL statement are case-insensitive, but strings values are case-sensitive and must be quoted by a pair of `'` or `"`. To quote a `'` or a `"` , you can use the escape character `\`. @@ -86,7 +86,7 @@ All the keywords in a SQL statement are case-insensitive, but strings values are 1) The first column must be a `timestamp`, and the system will set it as the primary key. - 2) The record size is limited to 4096 bytes + 2) The record size is limited to 64k bytes 3) For `binary` or `nchar` data types, the length must be specified. For example, binary(20) means a binary data type with 20 bytes. diff --git a/documentation/webdocs/markdowndocs/connector-ch.md b/documentation/webdocs/markdowndocs/connector-ch.md index 47c8381f69c..3cd8da1bd50 100644 --- a/documentation/webdocs/markdowndocs/connector-ch.md +++ b/documentation/webdocs/markdowndocs/connector-ch.md @@ -2,7 +2,7 @@ TDengine提供了丰富的应用程序开发接口,其中包括C/C++、JAVA、Python、RESTful、Go等,便于用户快速开发应用。 -注意:所以执行 SQL 语句的 API,例如 C/C++ Connector 中的 `tao_query`、`taos_query_a`、`taos_subscribe` 等,以及其它语言中与它们对应的API,每次都只能执行一条 SQL 语句,如果实际参数中包含了多条语句,它们的行为是未定义的。 +注意:所有执行 SQL 语句的 API,例如 C/C++ Connector 中的 `tao_query`、`taos_query_a`、`taos_subscribe` 等,以及其它语言中与它们对应的API,每次都只能执行一条 SQL 语句,如果实际参数中包含了多条语句,它们的行为是未定义的。 ## C/C++ Connector From b94905d0560aeb770a61a45e73393674e68b4b7e Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 28 May 2020 17:45:21 +0800 Subject: [PATCH 47/85] [td-409]fix bug that callback function is not set correctly in sub-insert object. --- src/client/src/tscSubquery.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 8c741dfdc88..c4fe0b202bc 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -1763,7 +1763,12 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) { tscError("%p failed to malloc buffer for subObj, orderOfSub:%d, reason:%s", pSql, i, strerror(errno)); break; } - + + /* + * assign the callback function to fetchFp to make sure that the error process function can restore + * the callback function (multiVnodeInsertMerge) correctly. + */ + pNew->fetchFp = pNew->fp; pSql->pSubs[i] = pNew; tscTrace("%p sub:%p create subObj success. orderOfSub:%d", pSql, pNew, i); } From 0b4a5b130fc069caae2a625096328046fa689a2d Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 10:17:38 +0000 Subject: [PATCH 48/85] [TD-354] add sql parser for stream table --- src/inc/taosdef.h | 1 + src/mnode/src/mnodeProfile.c | 137 +++-------------------------------- src/mnode/src/mnodeShow.c | 66 ++++++++++------- src/mnode/src/mnodeTable.c | 131 +++++++++++++++++++++++++++++++-- src/vnode/src/vnodeWrite.c | 7 +- 5 files changed, 179 insertions(+), 163 deletions(-) diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index ce50fcbcf0a..b2bfe7c590a 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -203,6 +203,7 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); #define TSDB_COL_NAME_LEN 64 #define TSDB_MAX_SAVED_SQL_LEN TSDB_MAX_COLUMNS * 64 #define TSDB_MAX_SQL_LEN TSDB_PAYLOAD_SIZE +#define TSDB_MAX_SQL_SHOW_LEN 256 #define TSDB_MAX_ALLOWED_SQL_LEN (8*1024*1024U) // sql length should be less than 6mb #define TSDB_MAX_BYTES_PER_ROW TSDB_MAX_COLUMNS * 64 diff --git a/src/mnode/src/mnodeProfile.c b/src/mnode/src/mnodeProfile.c index 4cb560e066e..a37f5436c6e 100644 --- a/src/mnode/src/mnodeProfile.c +++ b/src/mnode/src/mnodeProfile.c @@ -346,123 +346,6 @@ int32_t mnodeGetStreams(SShowObj *pShow, void *pConn) { return 0; } -int32_t mnodeGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { - int32_t cols = 0; - SSchema *pSchema = pMeta->schema; - - pShow->bytes[cols] = TSDB_USER_LEN; - pSchema[cols].type = TSDB_DATA_TYPE_BINARY; - strcpy(pSchema[cols].name, "user"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = TSDB_IPv4ADDR_LEN + 14; - pSchema[cols].type = TSDB_DATA_TYPE_BINARY; - strcpy(pSchema[cols].name, "ip:port:id"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = 8; - pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP; - strcpy(pSchema[cols].name, "created time"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = 8; - pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP; - strcpy(pSchema[cols].name, "exec time"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = 8; - pSchema[cols].type = TSDB_DATA_TYPE_INT; - strcpy(pSchema[cols].name, "time(us)"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = TSDB_SHOW_SQL_LEN; - pSchema[cols].type = TSDB_DATA_TYPE_BINARY; - strcpy(pSchema[cols].name, "sql"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pShow->bytes[cols] = 4; - pSchema[cols].type = TSDB_DATA_TYPE_INT; - strcpy(pSchema[cols].name, "cycles"); - pSchema[cols].bytes = htons(pShow->bytes[cols]); - cols++; - - pMeta->numOfColumns = htons(cols); - pShow->numOfColumns = cols; - - pShow->offset[0] = 0; - for (int32_t i = 1; i < cols; ++i) pShow->offset[i] = pShow->offset[i - 1] + pShow->bytes[i - 1]; - - pShow->numOfRows = 1000000; - pShow->pIter = NULL; - pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; - - mnodeGetStreams(pShow, pConn); - return 0; -} - -int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pConn) { - int32_t numOfRows = 0; - char *pWrite; - int32_t cols = 0; - - SStreamShow *pStreamShow = (SStreamShow *)pShow->pIter; - - if (rows > pStreamShow->numOfStreams - pStreamShow->index) rows = pStreamShow->numOfStreams - pStreamShow->index; - - while (numOfRows < rows) { - SStreamDesc *pNode = pStreamShow->sdesc + pStreamShow->index; - SCDesc *pCDesc = pStreamShow->cdesc[pStreamShow->index]; - cols = 0; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - strcpy(pWrite, pCDesc->user); - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - uint32_t ip = pCDesc->ip; - sprintf(pWrite, "%d.%d.%d.%d:%hu:%d", ip & 0xFF, (ip >> 8) & 0xFF, (ip >> 16) & 0xFF, ip >> 24, htons(pCDesc->port), - pNode->streamId); - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - *(int64_t *)pWrite = pNode->ctime; - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - *(int64_t *)pWrite = pNode->stime; - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - *(int64_t *)pWrite = pNode->useconds; - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - strcpy(pWrite, pNode->sql); - cols++; - - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - *(int32_t *)pWrite = pNode->num; - cols++; - - numOfRows++; - pStreamShow->index++; - } - - if (numOfRows == 0) { - tfree(pStreamShow->cdesc); - tfree(pStreamShow->connInfo); - tfree(pStreamShow); - } - - pShow->numOfReads += numOfRows; - return numOfRows; -} int32_t mnodeKillStream(char *qidstr, void *pConn) { // char *temp, *chr, idstr[64]; @@ -750,18 +633,16 @@ int32_t mnodeProcessKillConnectionMsg(SMnodeMsg *pMsg) { } int32_t mnodeInitProfile() { - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mnodeGetQueryMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mnodeRetrieveQueries); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mnodeGetConnsMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mnodeRetrieveConns); - mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mnodeGetStreamMeta); - mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mnodeRetrieveStreams); - mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mnodeProcessKillQueryMsg); - mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mnodeProcessKillStreamMsg); - mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mnodeProcessKillConnectionMsg); + // mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_QUERIES, mnodeGetQueryMeta); + // mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_QUERIES, mnodeRetrieveQueries); + // mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_CONNS, mnodeGetConnsMeta); + // mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_CONNS, mnodeRetrieveConns); + + // mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_QUERY, mnodeProcessKillQueryMsg); + // mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mnodeProcessKillStreamMsg); + // mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mnodeProcessKillConnectionMsg); return 0; } -void mnodeCleanupProfile() { -} +void mnodeCleanupProfile() {} diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 0a522e8f99f..0973163cf94 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -47,9 +47,10 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *mnodeMsg); static int32_t mnodeProcessUseMsg(SMnodeMsg *mnodeMsg); static void mnodeFreeShowObj(void *data); -static bool mnodeCheckQhandle(uint64_t qhandle); -static void *mnodeSaveQhandle(void *qhandle, int32_t size); -static void mnodeFreeQhandle(void *qhandle, bool forceRemove); +static bool mnodeCheckShowObj(SShowObj *pShow); +static bool mnodeCheckShowFinished(SShowObj *pShow); +static void *mnodeSaveShowObj(SShowObj *pShow, int32_t size); +static void mnodeCleanupShowObj(void *pShow, bool forceRemove); extern void *tsMnodeTmr; static void *tsQhandleCache = NULL; @@ -129,7 +130,7 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { strcpy(pShow->db, pShowMsg->db); memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); - pShow = mnodeSaveQhandle(pShow, showObjSize); + pShow = mnodeSaveShowObj(pShow, showObjSize); if (pShow == NULL) { return TSDB_CODE_SERV_OUT_OF_MEMORY; } @@ -143,7 +144,7 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { return TSDB_CODE_SUCCESS; } else { mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); - mnodeFreeQhandle(pShow, true); + mnodeCleanupShowObj(pShow, true); return code; } } @@ -155,17 +156,24 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { SRetrieveTableMsg *pRetrieve = pMsg->rpcMsg.pCont; pRetrieve->qhandle = htobe64(pRetrieve->qhandle); + SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; + mTrace("show:%p, type:%s, retrieve data", pShow, mnodeGetShowType(pShow->type)); + /* * in case of server restart, apps may hold qhandle created by server before * restart, which is actually invalid, therefore, signature check is required. */ - if (!mnodeCheckQhandle(pRetrieve->qhandle)) { - mError("retrieve:%p, qhandle:%p is invalid", pRetrieve, pRetrieve->qhandle); + if (!mnodeCheckShowObj(pShow)) { + mError("retrieve:%p, qhandle:%p is invalid", pRetrieve, pShow); return TSDB_CODE_INVALID_QHANDLE; } - - SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; - mTrace("show:%p, type:%s, retrieve data", pShow, mnodeGetShowType(pShow->type)); + + if (mnodeCheckShowFinished(pShow)) { + mTrace("retrieve:%p, qhandle:%p already read finished, numOfReads:%d numOfRows:%d", pRetrieve, pShow, pShow->numOfReads, pShow->numOfRows); + pShow->numOfReads = pShow->numOfRows; + //mnodeCleanupShowObj(pShow, true); + //return TSDB_CODE_SUCCESS; + } if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) { rowsToRead = pShow->numOfRows - pShow->numOfReads; @@ -190,7 +198,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { if (rowsRead < 0) { rpcFreeCont(pRsp); - mnodeFreeQhandle(pShow, false); + mnodeCleanupShowObj(pShow, false); assert(false); return TSDB_CODE_ACTION_IN_PROGRESS; } @@ -202,11 +210,11 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { pMsg->rpcRsp.len = size; if (rowsToRead == 0) { - mnodeFreeQhandle(pShow, true); + mnodeCleanupShowObj(pShow, true); } else { - mnodeFreeQhandle(pShow, false); + mnodeCleanupShowObj(pShow, false); } - + return TSDB_CODE_SUCCESS; } @@ -301,23 +309,29 @@ static int32_t mnodeProcessUseMsg(SMnodeMsg *pMsg) { return code; } -static bool mnodeCheckQhandle(uint64_t qhandle) { - void *pSaved = taosCacheAcquireByData(tsQhandleCache, (void *)qhandle); - if (pSaved == (void *)qhandle) { - mTrace("show:%p, is retrieved", qhandle); +static bool mnodeCheckShowFinished(SShowObj *pShow) { + if (pShow->pIter == NULL && pShow->numOfReads != 0) { + return true; + } + return false; +} + +static bool mnodeCheckShowObj(SShowObj *pShow) { + SShowObj *pSaved = taosCacheAcquireByData(tsQhandleCache, pShow); + if (pSaved == pShow) { return true; } else { - mTrace("show:%p, is already released", qhandle); + mTrace("show:%p, is already released", pShow); return false; } } -static void *mnodeSaveQhandle(void *qhandle, int32_t size) { +static void *mnodeSaveShowObj(SShowObj *pShow, int32_t size) { if (tsQhandleCache != NULL) { char key[24]; - sprintf(key, "show:%p", qhandle); - void *newQhandle = taosCachePut(tsQhandleCache, key, qhandle, size, 60); - free(qhandle); + sprintf(key, "show:%p", pShow); + SShowObj *newQhandle = taosCachePut(tsQhandleCache, key, pShow, size, 60); + free(pShow); mTrace("show:%p, is saved", newQhandle); return newQhandle; @@ -332,7 +346,7 @@ static void mnodeFreeShowObj(void *data) { mTrace("show:%p, is destroyed", pShow); } -static void mnodeFreeQhandle(void *qhandle, bool forceRemove) { - mTrace("show:%p, is released, force:%s", qhandle, forceRemove ? "true" : "false"); - taosCacheRelease(tsQhandleCache, &qhandle, forceRemove); +static void mnodeCleanupShowObj(void *pShow, bool forceRemove) { + mTrace("show:%p, is released, force:%s", pShow, forceRemove ? "true" : "false"); + taosCacheRelease(tsQhandleCache, &pShow, forceRemove); } diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 4ce8c882817..c444fd1455f 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -59,9 +59,11 @@ static void mnodeRemoveTableFromStable(SSuperTableObj *pStable, SChildTableOb static int32_t mnodeGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); -static int32_t mnodeRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); static int32_t mnodeGetShowSuperTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); - +static int32_t mnodeRetrieveShowSuperTables(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static int32_t mnodeGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); +static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pConn); + static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *mnodeMsg); static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg); static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg); @@ -567,7 +569,9 @@ int32_t mnodeInitTables() { mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_TABLE, mnodeRetrieveShowTables); mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_METRIC, mnodeGetShowSuperTableMeta); mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_METRIC, mnodeRetrieveShowSuperTables); - + mnodeAddShowMetaHandle(TSDB_MGMT_TABLE_STREAMS, mnodeGetStreamMeta); + mnodeAddShowRetrieveHandle(TSDB_MGMT_TABLE_STREAMS, mnodeRetrieveStreams); + return TSDB_CODE_SUCCESS; } @@ -1386,7 +1390,10 @@ static void *mnodeBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableO if (pTable->info.type == TSDB_CHILD_TABLE && pMsg != NULL) { memcpy(pCreate->data + totalCols * sizeof(SSchema), pTagData->data, tagDataLen); - memcpy(pCreate->data + totalCols * sizeof(SSchema) + tagDataLen, pTable->sql, pTable->sqlLen); + } + + if (pTable->info.type == TSDB_STREAM_TABLE && pMsg != NULL) { + memcpy(pCreate->data + totalCols * sizeof(SSchema), pTable->sql, pTable->sqlLen); } return pCreate; @@ -1516,7 +1523,7 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) { return terrno; } - SMDCreateTableMsg *pMDCreate = mnodeBuildCreateChildTableMsg(pCreate, (SChildTableObj *) pMsg->pTable); + SMDCreateTableMsg *pMDCreate = mnodeBuildCreateChildTableMsg(pCreate, (SChildTableObj *)pMsg->pTable); if (pMDCreate == NULL) { return terrno; } @@ -1879,7 +1886,7 @@ static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { } SMDCreateTableMsg *pMDCreate = NULL; - pMDCreate = mnodeBuildCreateChildTableMsg(NULL, (SChildTableObj *) pTable); + pMDCreate = mnodeBuildCreateChildTableMsg(NULL, (SChildTableObj *)pTable); if (pMDCreate == NULL) { mnodeDecTableRef(pTable); return terrno; @@ -2248,3 +2255,115 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) { return code; } + +static int32_t mnodeGetStreamMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); + if (pDb == NULL) return TSDB_CODE_DB_NOT_SELECTED; + + int32_t cols = 0; + SSchema *pSchema = pMeta->schema; + + pShow->bytes[cols] = TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE; + pSchema[cols].type = TSDB_DATA_TYPE_BINARY; + strcpy(pSchema[cols].name, "table_name"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + + pShow->bytes[cols] = 8; + pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP; + strcpy(pSchema[cols].name, "created_time"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + + pShow->bytes[cols] = 2; + pSchema[cols].type = TSDB_DATA_TYPE_SMALLINT; + strcpy(pSchema[cols].name, "columns"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + + pShow->bytes[cols] = TSDB_MAX_SQL_SHOW_LEN + VARSTR_HEADER_SIZE; + pSchema[cols].type = TSDB_DATA_TYPE_BINARY; + strcpy(pSchema[cols].name, "sql"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + + pMeta->numOfColumns = htons(cols); + pShow->numOfColumns = cols; + + pShow->offset[0] = 0; + for (int32_t i = 1; i < cols; ++i) { + pShow->offset[i] = pShow->offset[i - 1] + pShow->bytes[i - 1]; + } + + pShow->numOfRows = pDb->numOfTables; + pShow->rowSize = pShow->offset[cols - 1] + pShow->bytes[cols - 1]; + + mnodeDecDbRef(pDb); + return 0; +} + +static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, void *pConn) { + SDbObj *pDb = mnodeGetDb(pShow->db); + if (pDb == NULL) return 0; + + + int32_t numOfRows = 0; + SChildTableObj *pTable = NULL; + SPatternCompareInfo info = PATTERN_COMPARE_INFO_INITIALIZER; + + char prefix[64] = {0}; + strcpy(prefix, pDb->name); + strcat(prefix, TS_PATH_DELIMITER); + int32_t prefixLen = strlen(prefix); + + while (numOfRows < rows) { + pShow->pIter = mnodeGetNextChildTable(pShow->pIter, &pTable); + if (pTable == NULL) break; + + // not belong to current db + if (strncmp(pTable->info.tableId, prefix, prefixLen) || pTable->info.type != TSDB_STREAM_TABLE) { + mnodeDecTableRef(pTable); + continue; + } + + char tableName[TSDB_TABLE_NAME_LEN + 1] = {0}; + + // pattern compare for table name + mnodeExtractTableName(pTable->info.tableId, tableName); + + if (pShow->payloadLen > 0 && patternMatch(pShow->payload, tableName, TSDB_TABLE_NAME_LEN, &info) != TSDB_PATTERN_MATCH) { + mnodeDecTableRef(pTable); + continue; + } + + int32_t cols = 0; + + char *pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + + STR_WITH_MAXSIZE_TO_VARSTR(pWrite, tableName, TSDB_TABLE_NAME_LEN); + cols++; + + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + *(int64_t *) pWrite = pTable->createdTime; + cols++; + + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + *(int16_t *)pWrite = pTable->numOfColumns; + cols++; + + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + STR_WITH_MAXSIZE_TO_VARSTR(pWrite, pTable->sql, TSDB_MAX_SQL_SHOW_LEN); + cols++; + + numOfRows++; + mnodeDecTableRef(pTable); + } + + pShow->numOfReads += numOfRows; + const int32_t NUM_OF_COLUMNS = 4; + + mnodeVacuumResult(data, NUM_OF_COLUMNS, numOfRows, rows, pShow); + mnodeDecDbRef(pDb); + + return numOfRows; +} \ No newline at end of file diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 6854dd3c78d..6d65d10335e 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -106,8 +106,7 @@ static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pR static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pRet) { SMDCreateTableMsg *pTable = pCont; int32_t code = 0; - char sql[1024] = "\0"; - + vTrace("vgId:%d, table:%s, start to create", pVnode->vgId, pTable->tableId); int16_t numOfColumns = htons(pTable->numOfColumns); int16_t numOfTags = htons(pTable->numOfTags); @@ -152,8 +151,10 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe tsdbTableSetTagValue(&tCfg, dataRow, false); } + // only normal has sql string if (pTable->tableType == TSDB_STREAM_TABLE) { - // TODO: set sql value + char *sql = pTable->data + totalCols * sizeof(SSchema); + vTrace("vgId:%d, table:%s is creating, sql:%s", pVnode->vgId, pTable->tableId, sql); tsdbTableSetStreamSql(&tCfg, sql, false); } From 1b638069eb4108fd0afd8b0afc75800e66637b3d Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Thu, 28 May 2020 18:43:36 +0800 Subject: [PATCH 49/85] feat: add out of order data --- src/kit/taosdemo/taosdemo.c | 52 ++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 8f5334533d8..45cf474de38 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -49,8 +49,8 @@ static struct argp_option options[] = { {0, 'h', "host", 0, "The host to connect to TDEngine. Default is localhost.", 0}, {0, 'p', "port", 0, "The TCP/IP port number to use for the connection. Default is 0.", 1}, {0, 'u', "user", 0, "The TDEngine user name to use when connecting to the server. Default is 'root'.", 2}, - {0, 'a', "password", 0, "The password to use when connecting to the server. Default is 'taosdata'.", 3}, - {0, 'P', "database", 0, "Destination database. Default is 'test'.", 3}, + {0, 'P', "password", 0, "The password to use when connecting to the server. Default is 'taosdata'.", 3}, + {0, 'd', "database", 0, "Destination database. Default is 'test'.", 3}, {0, 'm', "table_prefix", 0, "Table prefix name. Default is 't'.", 3}, {0, 'M', 0, 0, "Use metric flag.", 13}, {0, 'o', "outputfile", 0, "Direct output to the named file. Default is './output.txt'.", 14}, @@ -58,12 +58,14 @@ static struct argp_option options[] = { {0, 'b', "type_of_cols", 0, "The data_type of columns: 'INT', 'TINYINT', 'SMALLINT', 'BIGINT', 'FLOAT', 'DOUBLE', 'BINARY'. Default is 'INT'.", 7}, {0, 'w', "length_of_binary", 0, "The length of data_type 'BINARY'. Only applicable when type of cols is 'BINARY'. Default is 8", 8}, {0, 'l', "num_of_cols_per_record", 0, "The number of columns per record. Default is 3.", 8}, - {0, 'T', "num_of_threads", 0, "The number of threads. Default is 10.", 9}, + {0, 'T', "num_of_threads", 0, "The number of threads. Default is 10.", 9}, {0, 'r', "num_of_records_per_req", 0, "The number of records per request. Default is 1000.", 10}, {0, 't', "num_of_tables", 0, "The number of tables. Default is 10000.", 11}, {0, 'n', "num_of_records_per_table", 0, "The number of records per table. Default is 100000.", 12}, {0, 'c', "config_directory", 0, "Configuration directory. Default is '/etc/taos/'.", 14}, {0, 'x', 0, 0, "Insert only flag.", 13}, + {0, 'O', "order", 0, "Insert mode--0: In order, 1: Out of order. Default is in order", 1}, + {0, 'R', "rate", 0, "Out of order data's rate--if order=1 Default 10", 1}, {0}}; /* Used by main to communicate with parse_opt. */ @@ -86,6 +88,8 @@ typedef struct DemoArguments { int num_of_tables; int num_of_DPT; int abort; + int order; + int rate; char **arg_list; } SDemoArguments; @@ -184,6 +188,24 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { taos_options(TSDB_OPTION_CONFIGDIR, full_path.we_wordv[0]); wordfree(&full_path); break; + case 'O': + arguments->order = atoi(arg); + if (arguments->order > 1 || arguments->order < 0) + { + arguments->order = 0; + } else if (arguments->order == 1) + { + arguments->rate = 10; + } + break; + case 'R': + arguments->rate = atoi(arg); + printf("%d", arguments->rate); + if (arguments->order == 1 && (arguments->rate > 50 || arguments->rate <= 0)) + { + arguments->rate = 10; + } + break; case OPT_ABORT: arguments->abort = 1; break; @@ -217,6 +239,8 @@ typedef struct { int ncols_per_record; int nrecords_per_table; int nrecords_per_request; + int data_of_order; + int data_of_rate; int64_t start_time; bool do_aggreFunc; @@ -296,6 +320,8 @@ int main(int argc, char *argv[]) { 1, // num_of_tables 50000, // num_of_DPT 0, // abort + 0, // order + 0, // rate NULL // arg_list }; @@ -330,6 +356,8 @@ int main(int argc, char *argv[]) { char *tb_prefix = arguments.tb_prefix; int len_of_binary = arguments.len_of_binary; int ncols_per_record = arguments.num_of_CPR; + int order = arguments.order; + int rate = arguments.rate; int ntables = arguments.num_of_tables; int threads = arguments.num_of_threads; int nrecords_per_table = arguments.num_of_DPT; @@ -377,6 +405,12 @@ int main(int argc, char *argv[]) { printf("# Records/Request: %d\n", nrecords_per_request); printf("# Database name: %s\n", db_name); printf("# Table prefix: %s\n", tb_prefix); + if (order == 1) + { + printf("# Data order: %d\n", order); + printf("# Data out of order rate: %d\n", rate); + + } printf("# Test time: %d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); printf("###################################################################\n\n"); @@ -507,6 +541,8 @@ int main(int argc, char *argv[]) { t_info->len_of_binary = len_of_binary; t_info->nrecords_per_request = nrecords_per_request; t_info->start_table_id = last; + t_info->data_of_order = order; + t_info->data_of_rate = rate; t_info->end_table_id = i < b ? last + a : last + a - 1; last = t_info->end_table_id + 1; @@ -735,7 +771,15 @@ void *syncWrite(void *sarg) { pstr += sprintf(pstr, "insert into %s.%s%d values", winfo->db_name, winfo->tb_prefix, tID); int k; for (k = 0; k < winfo->nrecords_per_request;) { - generateData(data, data_type, ncols_per_record, tmp_time++, len_of_binary); + int rand_num = rand() % 100; + if (winfo->data_of_order ==1 && rand_num < winfo->data_of_rate) + { + printf("insert out of order data: %d, time: %ld\n", rand_num, tmp_time - rand() % 100000); + generateData(data, data_type, ncols_per_record, tmp_time - rand() % 1000, len_of_binary); + } else + { + generateData(data, data_type, ncols_per_record, tmp_time++, len_of_binary); + } pstr += sprintf(pstr, " %s", data); inserted++; k++; From 7da305f43d0af84184ae4306a4b193c51ee821f2 Mon Sep 17 00:00:00 2001 From: Hui Li Date: Thu, 28 May 2020 18:57:28 +0800 Subject: [PATCH 50/85] [add cluster sim case] --- .../dn3_mn1_replica2_wal1_AddDelDnode.sim | 266 ++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim diff --git a/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim new file mode 100644 index 00000000000..583134c7618 --- /dev/null +++ b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim @@ -0,0 +1,266 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/deploy.sh -n dnode2 -i 2 +system sh/deploy.sh -n dnode3 -i 3 +system sh/deploy.sh -n dnode4 -i 4 +system sh/deploy.sh -n dnode5 -i 5 + +system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode5 -c numOfMPeers -v 1 + +system sh/cfg.sh -n dnode1 -c walLevel -v 1 +system sh/cfg.sh -n dnode2 -c walLevel -v 1 +system sh/cfg.sh -n dnode3 -c walLevel -v 1 +system sh/cfg.sh -n dnode4 -c walLevel -v 1 +system sh/cfg.sh -n dnode5 -c walLevel -v 1 + +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode4 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode5 -c balanceInterval -v 10 + +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 200 +system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 +system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 +system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 +system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4 + +system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 200 + +system sh/cfg.sh -n dnode1 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode2 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode3 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode4 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode5 -c arbitrator -v $arbitrator + +system sh/cfg.sh -n dnode1 -c offlineThreshold -v 20 +system sh/cfg.sh -n dnode2 -c offlineThreshold -v 20 +system sh/cfg.sh -n dnode3 -c offlineThreshold -v 20 +system sh/cfg.sh -n dnode4 -c offlineThreshold -v 20 +system sh/cfg.sh -n dnode5 -c offlineThreshold -v 20 + +system sh/cfg.sh -n dnode1 -c enableCoreFile -v 1 +system sh/cfg.sh -n dnode2 -c enableCoreFile -v 1 +system sh/cfg.sh -n dnode3 -c enableCoreFile -v 1 +system sh/cfg.sh -n dnode4 -c enableCoreFile -v 1 +system sh/cfg.sh -n dnode5 -c enableCoreFile -v 1 + +print ============== step0: start tarbitrator +system sh/exec_tarbitrator.sh -s start + +print ============== step1: start dnode1, only deploy mnode +system sh/exec_up.sh -n dnode1 -s start +sleep 3000 +sql connect + +print ============== step2: start dnode2/dnode3 and add into cluster, then create database, create table , and insert data +system sh/exec_up.sh -n dnode2 -s start +system sh/exec_up.sh -n dnode3 -s start +sleep 1000 +sql create dnode $hostname2 +sql create dnode $hostname3 + +$rowNum = 100 +$tblNum = 16 +$totalRows = 0 +$tsStart = 1420041600000 + +$db = db +sql create database $db replica 2 maxTables 4 +sql use $db + +# create table , insert data +$stb = stb +sql create table $stb (ts timestamp, c1 int) tags(t1 int) + + +$i = 0 +while $i < $tblNum + $tb = tb . $i + sql create table $tb using $stb tags( $i ) + + $x = 0 + while $x < $rowNum + $ts = $tsStart + $x + sql insert into $tb values ( $ts + 0a , $x ) ( $ts + 1a , $x ) ( $ts + 2a , $x ) ( $ts + 3a , $x ) ( $ts + 4a , $x ) ( $ts + 5a , $x ) ( $ts + 6a , $x ) ( $ts + 7a , $x ) ( $ts + 8a , $x ) ( $ts + 9a , $x ) ( $ts + 10a , $x ) ( $ts + 11a , $x ) ( $ts + 12a , $x ) ( $ts + 13a , $x ) ( $ts + 14a , $x ) ( $ts + 15a , $x ) ( $ts + 16a , $x ) ( $ts + 17a , $x ) ( $ts + 18a , $x ) ( $ts + 19a , $x ) ( $ts + 20a , $x ) ( $ts + 21a , $x ) ( $ts + 22a , $x ) ( $ts + 23a , $x ) ( $ts + 24a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 35a , $x ) ( $ts + 36a , $x ) ( $ts + 37a , $x ) ( $ts + 38a , $x ) ( $ts + 39a , $x ) ( $ts + 40a , $x ) ( $ts + 41a , $x ) ( $ts + 42a , $x ) ( $ts + 43a , $x ) ( $ts + 44a , $x ) ( $ts + 45a , $x ) ( $ts + 46a , $x ) ( $ts + 47a , $x ) ( $ts + 48a , $x ) ( $ts + 49a , $x ) ( $ts + 50a , $x ) ( $ts + 51a , $x ) ( $ts + 52a , $x ) ( $ts + 53a , $x ) ( $ts + 54a , $x ) ( $ts + 55a , $x ) ( $ts + 56a , $x ) ( $ts + 57a , $x ) ( $ts + 58a , $x ) ( $ts + 59a , $x ) + $x = $x + 60 + endw + $totalRows = $totalRows + $x + print info: inserted $x rows into $tb and totalRows: $totalRows + $i = $i + 1 +endw + +print info: select count(*) from $stb +sleep 1000 +sql reset query cache +sleep 1000 +sql select count(*) from $stb +print data00 $data00 +if $data00 != $totalRows then + return -1 +endi + +print ============== step3: add one new dnode4 expect auto balancing +system sh/exec_up.sh -n dnode4 -s start +sql create dnode $hostname4 +sleep 10000 +sql select count(*) from $stb +print data00 $data00 +if $data00 != $totalRows then + return -1 +endi + + +print ============== step4: stop dnode3, after offlineThreshold, dnode3 will be dropped for cluster +system sh/exec_up.sh -n dnode3 -s stop +sql select count(*) from $stb +print data00 $data00 +if $data00 != $totalRows then + return -1 +endi + +#sleep 3000 +#sql show dnodes +#print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1 +#print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2 +#print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3 +#print $data0_4 $data1_4 $data2_4 $data3_4 $data4_4 +# +#$dnode1Status = $data4_1 +#$dnode2Status = $data4_2 +#$dnode3Status = $data4_3 +#$dnode4Status = $data4_4 +# +#if $dnode1Status != ready then +# return -1 +#endi +#if $dnode2Status != ready then +# return -1 +#endi +#if $dnode3Status != offline then +# return -1 +#endi +#if $dnode4Status != ready then +# return -1 +#endi + +sleep 30000 + +wait_drop: +sql show dnodes +if $rows != 3 then + sleep 3000 + goto wait_drop +endi +print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1 +print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2 +print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3 +print $data0_4 $data1_4 $data2_4 $data3_4 $data4_4 +$dnode1Status = $data4_1 +$dnode2Status = $data4_2 +$dnode3Status = $data4_3 +$dnode4Status = $data4_4 + +if $dnode1Status != ready then + return -1 +endi +if $dnode2Status != ready then + return -1 +endi +if $dnode4Status != ready then + return -1 +endi + + +print ============== step5: start dnode5 and add into cluster , drop database +sql drop database $db +sleep 1000 +system sh/exec_up.sh -n dnode5 -s start +sql create dnode $hostname5 +sleep 3000 +wait_dnode5: +sql show dnodes +if $rows != 4 then + sleep 3000 + goto wait_dnode5 +endi +print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1 +print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2 +print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3 +print $data0_4 $data1_4 $data2_4 $data3_4 $data4_4 +print $data0_5 $data1_5 $data2_5 $data3_5 $data4_5 +$dnode1Status = $data4_1 +$dnode2Status = $data4_2 +$dnode4Status = $data4_4 +$dnode5Status = $data4_5 + +if $dnode1Status != ready then + return -1 +endi +if $dnode2Status != ready then + return -1 +endi +if $dnode4Status != ready then + return -1 +endi +if $dnode5Status != ready then + return -1 +endi + + +print ============== step6: create database and table until not free vnodes +$rowNum = 100 +$tblNum = 24 +$totalRows = 0 +$tsStart = 1420041600000 + +$db = db1 +sql create database $db replica 2 maxTables 4 +sql use $db +$stb = stb +sql create table $stb (ts timestamp, c1 int) tags(t1 int) + + +# create table , insert data +$stb = stb +sql create table $stb (ts timestamp, c1 int) tags(t1 int) + + +$i = 0 +while $i < $tblNum + $tb = tb . $i + sql create table $tb using $stb tags( $i ) + + $x = 0 + while $x < $rowNum + $ts = $tsStart + $x + sql insert into $tb values ( $ts + 0a , $x ) ( $ts + 1a , $x ) ( $ts + 2a , $x ) ( $ts + 3a , $x ) ( $ts + 4a , $x ) ( $ts + 5a , $x ) ( $ts + 6a , $x ) ( $ts + 7a , $x ) ( $ts + 8a , $x ) ( $ts + 9a , $x ) ( $ts + 10a , $x ) ( $ts + 11a , $x ) ( $ts + 12a , $x ) ( $ts + 13a , $x ) ( $ts + 14a , $x ) ( $ts + 15a , $x ) ( $ts + 16a , $x ) ( $ts + 17a , $x ) ( $ts + 18a , $x ) ( $ts + 19a , $x ) ( $ts + 20a , $x ) ( $ts + 21a , $x ) ( $ts + 22a , $x ) ( $ts + 23a , $x ) ( $ts + 24a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 35a , $x ) ( $ts + 36a , $x ) ( $ts + 37a , $x ) ( $ts + 38a , $x ) ( $ts + 39a , $x ) ( $ts + 40a , $x ) ( $ts + 41a , $x ) ( $ts + 42a , $x ) ( $ts + 43a , $x ) ( $ts + 44a , $x ) ( $ts + 45a , $x ) ( $ts + 46a , $x ) ( $ts + 47a , $x ) ( $ts + 48a , $x ) ( $ts + 49a , $x ) ( $ts + 50a , $x ) ( $ts + 51a , $x ) ( $ts + 52a , $x ) ( $ts + 53a , $x ) ( $ts + 54a , $x ) ( $ts + 55a , $x ) ( $ts + 56a , $x ) ( $ts + 57a , $x ) ( $ts + 58a , $x ) ( $ts + 59a , $x ) + $x = $x + 60 + endw + $totalRows = $totalRows + $x + print info: inserted $x rows into $tb and totalRows: $totalRows + $i = $i + 1 +endw + +print info: select count(*) from $stb +sleep 2000 +sql reset query cache +sleep 3000 +sql select count(*) from $stb +print data00 $data00 +if $data00 != $totalRows then + return -1 +endi + +print ============== step7: drop dnode3, and system should prompt cannot drop dnodes +sql_error drop dnode $hostname3 +print ============== step8: add one new table, and system should prompt 'need more dnode' +sql_error create table tb_more using $stb tags( 1000 ) + From fe22dcf99bf78ca93b0dd3f2f83a348f6a07527c Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 12:24:02 +0000 Subject: [PATCH 51/85] [TD-335] fix bug while get mnode ipset --- src/dnode/src/dnodeMgmt.c | 13 ++++-- src/mnode/src/mnodeMnode.c | 46 +++++++++---------- src/mnode/src/mnodeSdb.c | 2 +- tests/script/sh/deploy.sh | 7 ++- .../dn3_mn1_replica2_wal1_AddDelDnode.sim | 8 ++-- 5 files changed, 40 insertions(+), 36 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index f6be375396a..c4a07518ea7 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -284,7 +284,7 @@ static int32_t dnodeProcessConfigDnodeMsg(SRpcMsg *pMsg) { } void dnodeUpdateMnodeIpSetForPeer(SRpcIpSet *pIpSet) { - dPrint("mnode IP list is changed, numOfIps:%d inUse:%d", pIpSet->numOfIps, pIpSet->inUse); + dPrint("mnode IP list for peer is changed, numOfIps:%d inUse:%d", pIpSet->numOfIps, pIpSet->inUse); for (int i = 0; i < pIpSet->numOfIps; ++i) { dPrint("mnode index:%d %s:%u", i, pIpSet->fqdn[i], pIpSet->port[i]) } @@ -344,17 +344,24 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { if (!(mnodesChanged || mnodesNotInit)) return; memcpy(&tsDMnodeInfos, pMnodes, sizeof(SDMMnodeInfos)); + dPrint("mnode infos is changed, nodeNum:%d inUse:%d", tsDMnodeInfos.nodeNum, tsDMnodeInfos.inUse); + for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { + dPrint("mnode index:%d, %s", tsDMnodeInfos.nodeInfos[i].nodeId, tsDMnodeInfos.nodeInfos[i].nodeEp); + } tsDMnodeIpSetForPeer.inUse = tsDMnodeInfos.inUse; tsDMnodeIpSetForPeer.numOfIps = tsDMnodeInfos.nodeNum; for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForPeer.fqdn[i], &tsDMnodeIpSetForPeer.port[i]); tsDMnodeIpSetForPeer.port[i] += TSDB_PORT_DNODEDNODE; + dPrint("mnode index:%d, for peer %s %d", i, tsDMnodeIpSetForPeer.fqdn[i], tsDMnodeIpSetForPeer.port[i]); } - dPrint("mnodes is changed, nodeNum:%d inUse:%d", tsDMnodeInfos.nodeNum, tsDMnodeInfos.inUse); + tsDMnodeIpSetForShell.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSetForShell.numOfIps = tsDMnodeInfos.nodeNum; for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { - dPrint("mnode:%d, %s", tsDMnodeInfos.nodeInfos[i].nodeId, tsDMnodeInfos.nodeInfos[i].nodeEp); + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForShell.fqdn[i], &tsDMnodeIpSetForShell.port[i]); + dPrint("mnode index:%d, for shell %s %d", i, tsDMnodeIpSetForShell.fqdn[i], tsDMnodeIpSetForShell.port[i]); } dnodeSaveMnodeInfos(); diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c index 151bd69c6d5..de1826a174c 100644 --- a/src/mnode/src/mnodeMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -33,8 +33,8 @@ static void * tsMnodeSdb = NULL; static int32_t tsMnodeUpdateSize = 0; -static SRpcIpSet tsMnodeRpcIpSetForShell; -static SRpcIpSet tsMnodeRpcIpSetForPeer; +static SRpcIpSet tsMnodeIpSetForShell; +static SRpcIpSet tsMnodeIpSetForPeer; static SDMMnodeInfos tsMnodeInfos; static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); @@ -202,17 +202,13 @@ char *mnodeGetMnodeRoleStr(int32_t role) { } void mnodeUpdateMnodeIpSet() { - SRpcIpSet *ipSetForShell = &tsMnodeRpcIpSetForShell; - SRpcIpSet *ipSetForPeer = &tsMnodeRpcIpSetForPeer; - SDMMnodeInfos *mnodes = &tsMnodeInfos; - mPrint("update mnodes ipset, numOfIps:%d ", mnodeGetMnodesNum()); mnodeMnodeWrLock(); - memset(ipSetForShell, 0, sizeof(SRpcIpSet)); - memset(ipSetForPeer, 0, sizeof(SRpcIpSet)); - memset(mnodes, 0, sizeof(SDMMnodeInfos)); + memset(&tsMnodeIpSetForShell, 0, sizeof(SRpcIpSet)); + memset(&tsMnodeIpSetForPeer, 0, sizeof(SRpcIpSet)); + memset(&tsMnodeInfos, 0, sizeof(SDMMnodeInfos)); int32_t index = 0; void * pIter = NULL; @@ -223,22 +219,24 @@ void mnodeUpdateMnodeIpSet() { SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId); if (pDnode != NULL) { - strcpy(ipSetForShell->fqdn[ipSetForShell->numOfIps], pDnode->dnodeFqdn); - ipSetForShell->port[ipSetForShell->numOfIps] = htons(pDnode->dnodePort); + strcpy(tsMnodeIpSetForShell.fqdn[index], pDnode->dnodeFqdn); + tsMnodeIpSetForShell.port[index] = htons(pDnode->dnodePort); + mTrace("mnode:%d, for shell fqdn:%s %d", pDnode->dnodeId, tsMnodeIpSetForShell.fqdn[index], htons(tsMnodeIpSetForShell.port[index])); - strcpy(ipSetForPeer->fqdn[ipSetForPeer->numOfIps], pDnode->dnodeFqdn); - ipSetForPeer->port[ipSetForPeer->numOfIps] = htons(pDnode->dnodePort + TSDB_PORT_DNODEDNODE); + strcpy(tsMnodeIpSetForPeer.fqdn[index], pDnode->dnodeFqdn); + tsMnodeIpSetForPeer.port[index] = htons(pDnode->dnodePort + TSDB_PORT_DNODEDNODE); + mTrace("mnode:%d, for peer fqdn:%s %d", pDnode->dnodeId, tsMnodeIpSetForPeer.fqdn[index], htons(tsMnodeIpSetForPeer.port[index])); - mnodes->nodeInfos[index].nodeId = htonl(pMnode->mnodeId); - strcpy(mnodes->nodeInfos[index].nodeEp, pDnode->dnodeEp); + tsMnodeInfos.nodeInfos[index].nodeId = htonl(pMnode->mnodeId); + strcpy(tsMnodeInfos.nodeInfos[index].nodeEp, pDnode->dnodeEp); if (pMnode->role == TAOS_SYNC_ROLE_MASTER) { - ipSetForShell->inUse = index; - ipSetForPeer->inUse = index; - mnodes->inUse = index; + tsMnodeIpSetForShell.inUse = index; + tsMnodeIpSetForPeer.inUse = index; + tsMnodeInfos.inUse = index; } - mPrint("mnode:%d, ep:%s %s", index, pDnode->dnodeEp, pMnode->role == TAOS_SYNC_ROLE_MASTER ? "master" : ""); + mPrint("mnode:%d, ep:%s %s", pDnode->dnodeId, pDnode->dnodeEp, pMnode->role == TAOS_SYNC_ROLE_MASTER ? "master" : ""); index++; } @@ -246,9 +244,9 @@ void mnodeUpdateMnodeIpSet() { mnodeDecMnodeRef(pMnode); } - mnodes->nodeNum = index; - ipSetForPeer->numOfIps = index; - ipSetForPeer->numOfIps = index; + tsMnodeInfos.nodeNum = index; + tsMnodeIpSetForShell.numOfIps = index; + tsMnodeIpSetForPeer.numOfIps = index; sdbFreeIter(pIter); @@ -257,13 +255,13 @@ void mnodeUpdateMnodeIpSet() { void mnodeGetMnodeIpSetForPeer(SRpcIpSet *ipSet) { mnodeMnodeRdLock(); - *ipSet = tsMnodeRpcIpSetForShell; + *ipSet = tsMnodeIpSetForPeer; mnodeMnodeUnLock(); } void mnodeGetMnodeIpSetForShell(SRpcIpSet *ipSet) { mnodeMnodeRdLock(); - *ipSet = tsMnodeRpcIpSetForShell; + *ipSet = tsMnodeIpSetForShell; mnodeMnodeUnLock(); } diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c index 3905773d54d..3fdb1b0dfe0 100644 --- a/src/mnode/src/mnodeSdb.c +++ b/src/mnode/src/mnodeSdb.c @@ -186,7 +186,7 @@ void sdbUpdateMnodeRoles() { SNodesRole roles = {0}; syncGetNodesRole(tsSdbObj.sync, &roles); - sdbPrint("update mnodes:%d sync roles", tsSdbObj.cfg.replica); + sdbPrint("update mnodes sync roles, total:%d", tsSdbObj.cfg.replica); for (int32_t i = 0; i < tsSdbObj.cfg.replica; ++i) { SMnodeObj *pMnode = mnodeGetMnode(roles.nodeId[i]); if (pMnode != NULL) { diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index f8e123369f4..8e7490db55b 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -96,17 +96,16 @@ echo "second ${HOSTNAME}:7200" >> $TAOS_CFG echo "serverPort ${NODE}" >> $TAOS_CFG echo "dataDir $DATA_DIR" >> $TAOS_CFG echo "logDir $LOG_DIR" >> $TAOS_CFG -echo "debugFlag 135" >> $TAOS_CFG echo "dDebugFlag 135" >> $TAOS_CFG -echo "mDebugFlag 135" >> $TAOS_CFG +echo "mDebugFlag 199" >> $TAOS_CFG echo "sdbDebugFlag 135" >> $TAOS_CFG echo "rpcDebugFlag 135" >> $TAOS_CFG echo "tmrDebugFlag 131" >> $TAOS_CFG echo "cDebugFlag 135" >> $TAOS_CFG echo "httpDebugFlag 135" >> $TAOS_CFG echo "monitorDebugFlag 131" >> $TAOS_CFG -echo "udebugFlag 131" >> $TAOS_CFG -echo "jnidebugFlag 131" >> $TAOS_CFG +echo "udebugFlag 135" >> $TAOS_CFG +echo "jnidebugFlag 135" >> $TAOS_CFG echo "sdebugFlag 135" >> $TAOS_CFG echo "qdebugFlag 135" >> $TAOS_CFG echo "monitor 0" >> $TAOS_CFG diff --git a/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim index 583134c7618..eabaefd6785 100644 --- a/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim +++ b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim @@ -29,10 +29,10 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 200 -#system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 200 -#system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 200 -#system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 200 +system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 200 +#system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 200 system sh/cfg.sh -n dnode1 -c arbitrator -v $arbitrator system sh/cfg.sh -n dnode2 -c arbitrator -v $arbitrator From 8fa2f79be4dd6c59c9206e8e079ab08f0595542e Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 12:24:17 +0000 Subject: [PATCH 52/85] [TD-335] log --- tests/script/sh/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index 8e7490db55b..db40fb0457e 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -97,7 +97,7 @@ echo "serverPort ${NODE}" >> $TAOS_CFG echo "dataDir $DATA_DIR" >> $TAOS_CFG echo "logDir $LOG_DIR" >> $TAOS_CFG echo "dDebugFlag 135" >> $TAOS_CFG -echo "mDebugFlag 199" >> $TAOS_CFG +echo "mDebugFlag 135" >> $TAOS_CFG echo "sdbDebugFlag 135" >> $TAOS_CFG echo "rpcDebugFlag 135" >> $TAOS_CFG echo "tmrDebugFlag 131" >> $TAOS_CFG From abc947cecd7eca6ff42d11d7e164981dfab177e3 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 28 May 2020 14:37:30 +0000 Subject: [PATCH 53/85] [TD-335] rename some functions --- src/dnode/inc/dnodeMPeer.h | 4 ++-- src/dnode/src/dnodeMPeer.c | 4 ++-- src/dnode/src/dnodeVRead.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dnode/inc/dnodeMPeer.h b/src/dnode/inc/dnodeMPeer.h index cdbb4a210c9..9a48703110c 100644 --- a/src/dnode/inc/dnodeMPeer.h +++ b/src/dnode/inc/dnodeMPeer.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef TDENGINE_DNODE_MMGMT_H -#define TDENGINE_DNODE_MMGMT_H +#ifndef TDENGINE_DNODE_MPEER_H +#define TDENGINE_DNODE_MPEER_H #ifdef __cplusplus extern "C" { diff --git a/src/dnode/src/dnodeMPeer.c b/src/dnode/src/dnodeMPeer.c index da1910a691c..e3ba5fcf017 100644 --- a/src/dnode/src/dnodeMPeer.c +++ b/src/dnode/src/dnodeMPeer.c @@ -119,7 +119,7 @@ void dnodeDispatchToMnodePeerQueue(SRpcMsg *pMsg) { taosWriteQitem(tsMPeerQueue, TAOS_QTYPE_RPC, pPeer); } -static void dnodeFreeMnodePeadMsg(SMnodeMsg *pPeer) { +static void dnodeFreeMnodePeerMsg(SMnodeMsg *pPeer) { mnodeCleanupMsg(pPeer); taosFreeQitem(pPeer); } @@ -135,7 +135,7 @@ static void dnodeSendRpcMnodePeerRsp(SMnodeMsg *pPeer, int32_t code) { }; rpcSendResponse(&rpcRsp); - dnodeFreeMnodePeadMsg(pPeer); + dnodeFreeMnodePeerMsg(pPeer); } static void *dnodeProcessMnodePeerQueue(void *param) { diff --git a/src/dnode/src/dnodeVRead.c b/src/dnode/src/dnodeVRead.c index 4b1ff84bec0..1ff868d0ff5 100644 --- a/src/dnode/src/dnodeVRead.c +++ b/src/dnode/src/dnodeVRead.c @@ -92,7 +92,7 @@ void dnodeCleanupVnodeRead() { } void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) { - int32_t mnodeMsgNum = 0; + int32_t queuedMsgNum = 0; int32_t leftLen = pMsg->contLen; char *pCont = (char *) pMsg->pCont; void *pVnode; @@ -124,12 +124,12 @@ void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) { // next vnode leftLen -= pHead->contLen; pCont -= pHead->contLen; - mnodeMsgNum++; + queuedMsgNum++; taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); } - if (mnodeMsgNum == 0) { + if (queuedMsgNum == 0) { SRpcMsg rpcRsp = { .handle = pMsg->handle, .pCont = NULL, From 404797b5b4ae70bfa185d667fa654a8cc067b4d4 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Thu, 28 May 2020 15:09:45 -0700 Subject: [PATCH 54/85] Re-created TD-437 --- tests/pytest/crash_gen.py | 56 +++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 43e03c4c344..472e417ab9f 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -115,7 +115,7 @@ def _doTaskLoop(self) : logger.debug("[TRD] Worker thread [{}] about to fetch task".format(self._tid)) task = tc.fetchTask() - logger.debug("[TRD] Worker thread [{}] about to execute task".format(self._tid)) + logger.debug("[TRD] Worker thread [{}] about to execute task: {}".format(self._tid, task.__class__.__name__)) task.execute(self) tc.saveExecutedTask(task) logger.debug("[TRD] Worker thread [{}] finished executing task".format(self._tid)) @@ -553,6 +553,12 @@ def hasSuccess(self, tasks, cls): return True return False + def hasTask(self, tasks, cls): + for task in tasks : + if isinstance(task, cls): + return True + return False + class StateInvalid(AnyState): def getInfo(self): return [ @@ -573,9 +579,10 @@ def getInfo(self): False, False, # can insert/read data with fixed table ] - def verifyTasksToState(self, tasks, newState): - if ( self.hasSuccess(tasks, CreateDbTask) ): - self.assertAtMostOneSuccess(tasks, CreateDbTask) # not really valid for massively parrallel tasks + def verifyTasksToState(self, tasks, newState): + if ( self.hasSuccess(tasks, CreateDbTask) ): # at EMPTY, if there's succes in creating DB + if ( not self.hasTask(tasks, DropDbTask) ) : # and no drop_db tasks + self.assertAtMostOneSuccess(tasks, CreateDbTask) # we must have at most one. TODO: compare numbers class StateDbOnly(AnyState): def getInfo(self): @@ -589,7 +596,7 @@ def getInfo(self): def verifyTasksToState(self, tasks, newState): self.assertAtMostOneSuccess(tasks, DropDbTask) # not true in massively parralel cases self.assertIfExistThenSuccess(tasks, DropDbTask) - self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) + # self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) # not true in massively parrallel cases # Nothing to be said about adding data task if ( self.hasSuccess(tasks, DropDbTask) ): # dropped the DB # self.assertHasTask(tasks, DropDbTask) # implied by hasSuccess @@ -624,12 +631,12 @@ def verifyTasksToState(self, tasks, newState): if ( self.hasSuccess(tasks, DropFixedTableTask) ): # we are able to drop the table self.assertAtMostOneSuccess(tasks, DropFixedTableTask) # self._state = self.STATE_DB_ONLY - elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data - self.assertNoTask(tasks, DropFixedTableTask) + # elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data + # self.assertNoTask(tasks, DropFixedTableTask) # not true in massively parrallel cases # self._state = self.STATE_HAS_DATA - elif ( self.hasSuccess(tasks, ReadFixedDataTask) ): # no success in prev cases, but was able to read data - self.assertNoTask(tasks, DropFixedTableTask) - self.assertNoTask(tasks, AddFixedDataTask) + # elif ( self.hasSuccess(tasks, ReadFixedDataTask) ): # no success in prev cases, but was able to read data + # self.assertNoTask(tasks, DropFixedTableTask) + # self.assertNoTask(tasks, AddFixedDataTask) # self._state = self.STATE_TABLE_ONLY # no change # else: # did not drop table, did not insert data, did not read successfully, that is impossible # raise RuntimeError("Unexpected no-success scenarios") @@ -648,8 +655,9 @@ def verifyTasksToState(self, tasks, newState): if ( newState.equals(AnyState.STATE_EMPTY) ): self.hasSuccess(tasks, DropDbTask) self.assertAtMostOneSuccess(tasks, DropDbTask) # TODO: dicy - elif ( newState.equals(AnyState.STATE_DB_ONLY) ): - self.assertNoTask(tasks, DropDbTask) + elif ( newState.equals(AnyState.STATE_DB_ONLY) ): # in DB only + if ( not self.hasTask(tasks, CreateDbTask)): # without a create_db task + self.assertNoTask(tasks, DropDbTask) # we must have drop_db task self.hasSuccess(tasks, DropFixedTableTask) self.assertAtMostOneSuccess(tasks, DropFixedTableTask) # TODO: dicy elif ( newState.equals(AnyState.STATE_TABLE_ONLY) ): # data deleted @@ -791,18 +799,23 @@ def _weighted_choice_sub(self, weights): # ref: https://eli.thegreenplace.net/20 def _findCurrentState(self): dbc = self._dbConn + ts = time.time() if dbc.query("show databases") == 0 : # no database?! # logger.debug("Found EMPTY state") + logger.debug("[STT] empty database found, between {} and {}".format(ts, time.time())) return StateEmpty() dbc.execute("use db") # did not do this when openning connection if dbc.query("show tables") == 0 : # no tables # logger.debug("Found DB ONLY state") + logger.debug("[STT] DB_ONLY found, between {} and {}".format(ts, time.time())) return StateDbOnly() if dbc.query("SELECT * FROM db.{}".format(self.getFixedTableName()) ) == 0 : # no data # logger.debug("Found TABLE_ONLY state") + logger.debug("[STT] TABLE_ONLY found, between {} and {}".format(ts, time.time())) return StateTableOnly() else: # logger.debug("Found HAS_DATA state") + logger.debug("[STT] HAS_DATA found, between {} and {}".format(ts, time.time())) return StateHasData() def transition(self, tasks): @@ -835,10 +848,9 @@ def transition(self, tasks): # Nothing for sure newState = self._findCurrentState() + logger.debug("[STT] New DB state determined: {}".format(newState)) self._state.verifyTasksToState(tasks, newState) # can old state move to new state through the tasks? - self._state = newState - logger.debug("New DB state is: {}".format(self._state)) class TaskExecutor(): def __init__(self, curStep): @@ -1039,6 +1051,7 @@ def canBeginFrom(cls, state: AnyState): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("drop database db") + logger.debug("[OPS] database dropped at {}".format(time.time())) class CreateFixedTableTask(StateTransitionTask): @classmethod @@ -1207,8 +1220,11 @@ def filter(self, record: logging.LogRecord): msg = record.msg # print("type = {}, value={}".format(type(msg), msg)) # sys.exit() - if msg.startswith("[TRD]"): - return False + + # Commenting out below to adjust... + + # if msg.startswith("[TRD]"): + # return False return True @@ -1241,7 +1257,7 @@ def main(): global logger logger = logging.getLogger('CrashGen') - # logger.addFilter(LoggingFilter()) + logger.addFilter(LoggingFilter()) if ( gConfig.debug ): logger.setLevel(logging.DEBUG) # default seems to be INFO else: @@ -1256,6 +1272,12 @@ def main(): # WorkDispatcher(dbState), # Obsolete? dbState ) + + # Sandbox testing code + # dbc = dbState.getDbConn() + # while True: + # rows = dbc.query("show databases") + # print("Rows: {}, time={}".format(rows, time.time())) tc.run() tc.logStats() From 2831779eb36548808772d6a3a6ea9ca695cc4ad7 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 29 May 2020 02:30:51 +0000 Subject: [PATCH 55/85] TD-354 --- src/cq/src/cqMain.c | 35 ++++++++++++++++------------------- src/cq/test/cqtest.c | 17 ++++++----------- src/inc/tcq.h | 3 ++- src/inc/tsdb.h | 2 ++ src/tsdb/inc/tsdbMain.h | 3 ++- src/tsdb/src/tsdbMain.c | 2 +- src/tsdb/src/tsdbMeta.c | 17 +++++++++++++++-- src/vnode/src/vnodeMain.c | 4 ++++ 8 files changed, 48 insertions(+), 35 deletions(-) diff --git a/src/cq/src/cqMain.c b/src/cq/src/cqMain.c index 6e81db7db73..9406a2fdce9 100644 --- a/src/cq/src/cqMain.c +++ b/src/cq/src/cqMain.c @@ -15,17 +15,19 @@ #define _DEFAULT_SOURCE +#include +#include #include #include -#include -#include + +#include "taos.h" #include "taosdef.h" #include "taosmsg.h" +#include "tcq.h" +#include "tdataformat.h" #include "tglobal.h" #include "tlog.h" #include "twal.h" -#include "tcq.h" -#include "taos.h" #define cError(...) { if (cqDebugFlag & DEBUG_ERROR) { taosPrintLog("ERROR CQ ", cqDebugFlag, __VA_ARGS__); }} #define cWarn(...) { if (cqDebugFlag & DEBUG_WARN) { taosPrintLog("WARN CQ ", cqDebugFlag, __VA_ARGS__); }} @@ -46,15 +48,14 @@ typedef struct { } SCqContext; typedef struct SCqObj { - int tid; // table ID - int rowSize; // bytes of a row - char *sqlStr; // SQL string - int columns; // number of columns - SSchema *pSchema; // pointer to schema array - void *pStream; - struct SCqObj *prev; - struct SCqObj *next; - SCqContext *pContext; + int tid; // table ID + int rowSize; // bytes of a row + char * sqlStr; // SQL string + STSchema * pSchema; // pointer to schema array + void * pStream; + struct SCqObj *prev; + struct SCqObj *next; + SCqContext * pContext; } SCqObj; int cqDebugFlag = 135; @@ -152,7 +153,7 @@ void cqStop(void *handle) { pthread_mutex_unlock(&pContext->mutex); } -void *cqCreate(void *handle, int tid, char *sqlStr, SSchema *pSchema, int columns) { +void *cqCreate(void *handle, int tid, char *sqlStr, STSchema *pSchema) { SCqContext *pContext = handle; SCqObj *pObj = calloc(sizeof(SCqObj), 1); @@ -162,11 +163,7 @@ void *cqCreate(void *handle, int tid, char *sqlStr, SSchema *pSchema, int column pObj->sqlStr = malloc(strlen(sqlStr)+1); strcpy(pObj->sqlStr, sqlStr); - pObj->columns = columns; - - int size = sizeof(SSchema) * columns; - pObj->pSchema = malloc(size); - memcpy(pObj->pSchema, pSchema, size); + pObj->pSchema = tdDupSchema(pSchema); cTrace("vgId:%d, id:%d CQ:%s is created", pContext->vgId, pObj->tid, pObj->sqlStr); diff --git a/src/cq/test/cqtest.c b/src/cq/test/cqtest.c index 7977bd85bc1..3aa649ee34c 100644 --- a/src/cq/test/cqtest.c +++ b/src/cq/test/cqtest.c @@ -59,21 +59,16 @@ int main(int argc, char *argv[]) { exit(-1); } - SSchema schema[2]; - schema[0].type = TSDB_DATA_TYPE_TIMESTAMP; - strcpy(schema[0].name, "ts"); - schema[0].colId = 0; - schema[0].bytes = 8; - - schema[1].type = TSDB_DATA_TYPE_INT; - strcpy(schema[1].name, "avgspeed"); - schema[1].colId = 1; - schema[1].bytes = 4; + STSchema *pSchema = tdNewSchema(2); + tdSchemaAddCol(pSchema, TSDB_DATA_TYPE_TIMESTAMP, 0, 8); + tdSchemaAddCol(pSchema, TSDB_DATA_TYPE_INT, 1, 4); for (int sid =1; sid<10; ++sid) { - cqCreate(pCq, sid, "select avg(speed) from demo.t1 sliding(1s) interval(5s)", schema, 2); + cqCreate(pCq, sid, "select avg(speed) from demo.t1 sliding(1s) interval(5s)", pSchema); } + tdFreeSchema(pSchema); + while (1) { char c = getchar(); diff --git a/src/inc/tcq.h b/src/inc/tcq.h index d0a2097c05d..e025afaa0ae 100644 --- a/src/inc/tcq.h +++ b/src/inc/tcq.h @@ -19,6 +19,7 @@ extern "C" { #endif +#include "tdataformat.h" typedef int (*FCqWrite)(void *ahandle, void *pHead, int type); @@ -40,7 +41,7 @@ void cqStart(void *handle); void cqStop(void *handle); // cqCreate is called by TSDB to start an instance of CQ -void *cqCreate(void *handle, int sid, char *sqlStr, SSchema *pSchema, int columns); +void *cqCreate(void *handle, int sid, char *sqlStr, STSchema *pSchema); // cqDrop is called by TSDB to stop an instance of CQ, handle is the return value of cqCreate void cqDrop(void *handle); diff --git a/src/inc/tsdb.h b/src/inc/tsdb.h index 341dee14769..63539e856d6 100644 --- a/src/inc/tsdb.h +++ b/src/inc/tsdb.h @@ -43,6 +43,8 @@ typedef struct { void *cqH; int (*notifyStatus)(void *, int status); int (*eventCallBack)(void *); + void *(*cqCreateFunc)(void *handle, int sid, char *sqlStr, STSchema *pSchema); + void (*cqDropFunc)(void *handle); } STsdbAppH; // --------- TSDB REPOSITORY CONFIGURATION DEFINITION diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 0839e0f8ff7..0b7c878f239 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -110,6 +110,7 @@ typedef struct { SMetaFile *mfh; // meta file handle int maxRowBytes; int maxCols; + void * pRepo; } STsdbMeta; // element put in skiplist for each table @@ -118,7 +119,7 @@ typedef struct STableIndexElem { STable* pTable; } STableIndexElem; -STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables); +STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables, void *pRepo); int32_t tsdbFreeMeta(STsdbMeta *pMeta); STSchema * tsdbGetTableSchema(STsdbMeta *pMeta, STable *pTable); STSchema * tsdbGetTableTagSchema(STsdbMeta *pMeta, STable *pTable); diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index bddb3fcaff9..9fbd822a656 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -205,7 +205,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { tsdbRestoreCfg(pRepo, &(pRepo->config)); if (pAppH) pRepo->appH = *pAppH; - pRepo->tsdbMeta = tsdbInitMeta(tsdbDir, pRepo->config.maxTables); + pRepo->tsdbMeta = tsdbInitMeta(tsdbDir, pRepo->config.maxTables, pRepo); if (pRepo->tsdbMeta == NULL) { free(pRepo->rootDir); free(pRepo); diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index e320de9827c..7d71a0ff3d4 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -142,6 +142,7 @@ int tsdbRestoreTable(void *pHandle, void *cont, int contLen) { void tsdbOrgMeta(void *pHandle) { STsdbMeta *pMeta = (STsdbMeta *)pHandle; + STsdbRepo *pRepo = (STsdbRepo *)pMeta->pRepo; for (int i = 1; i < pMeta->maxTables; i++) { STable *pTable = pMeta->tables[i]; @@ -149,13 +150,20 @@ void tsdbOrgMeta(void *pHandle) { tsdbAddTableIntoIndex(pMeta, pTable); } } + + for (int i = 0; i < pMeta->maxTables; i++) { + STable *pTable = pMeta->tables[i]; + if (pTable && pTable->type == TSDB_STREAM_TABLE) { + (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, i, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); + } + } } /** * Initialize the meta handle * ASSUMPTIONS: VALID PARAMETER */ -STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables) { +STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables, void *pRepo) { STsdbMeta *pMeta = (STsdbMeta *)malloc(sizeof(STsdbMeta)); if (pMeta == NULL) return NULL; @@ -165,6 +173,7 @@ STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables) { pMeta->tables = (STable **)calloc(maxTables, sizeof(STable *)); pMeta->maxRowBytes = 0; pMeta->maxCols = 0; + pMeta->pRepo = pRepo; if (pMeta->tables == NULL) { free(pMeta); return NULL; @@ -189,10 +198,13 @@ STsdbMeta *tsdbInitMeta(char *rootDir, int32_t maxTables) { } int32_t tsdbFreeMeta(STsdbMeta *pMeta) { + STsdbRepo *pRepo = (STsdbRepo *)pMeta->pRepo; if (pMeta == NULL) return 0; tsdbCloseMetaFile(pMeta->mfh); + (*pRepo->appH.cqDropFunc)(pRepo->appH.cqH); + for (int i = 1; i < pMeta->maxTables; i++) { if (pMeta->tables[i] != NULL) { tsdbFreeTable(pMeta->tables[i]); @@ -512,6 +524,7 @@ STable *tsdbGetTableByUid(STsdbMeta *pMeta, uint64_t uid) { } static int tsdbAddTableToMeta(STsdbMeta *pMeta, STable *pTable, bool addIdx) { + STsdbRepo *pRepo = (STsdbRepo *)pMeta->pRepo; if (pTable->type == TSDB_SUPER_TABLE) { // add super table to the linked list if (pMeta->superList == NULL) { @@ -531,7 +544,7 @@ static int tsdbAddTableToMeta(STsdbMeta *pMeta, STable *pTable, bool addIdx) { tsdbAddTableIntoIndex(pMeta, pTable); } if (pTable->type == TSDB_STREAM_TABLE && addIdx) { - // TODO + (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, pTable->tableId.tid, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); } pMeta->nTables++; diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index b25180f0f0e..d96e19a3f1b 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -220,6 +220,8 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { appH.appH = (void *)pVnode; appH.notifyStatus = vnodeProcessTsdbStatus; appH.cqH = pVnode->cq; + appH.cqCreateFunc = cqCreate; + appH.cqDropFunc = cqDrop; sprintf(temp, "%s/tsdb", rootDir); pVnode->tsdb = tsdbOpenRepo(temp, &appH); if (pVnode->tsdb == NULL) { @@ -467,6 +469,8 @@ static void vnodeNotifyFileSynced(void *ahandle, uint64_t fversion) { appH.appH = (void *)pVnode; appH.notifyStatus = vnodeProcessTsdbStatus; appH.cqH = pVnode->cq; + appH.cqCreateFunc = cqCreate; + appH.cqDropFunc = cqDrop; pVnode->tsdb = tsdbOpenRepo(rootDir, &appH); } From 61031d1d18e64074154923a1093068a652e2b5f6 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 29 May 2020 03:15:59 +0000 Subject: [PATCH 56/85] fix commit coredump data lost bug --- src/vnode/src/vnodeMain.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index d96e19a3f1b..cc92c033898 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -393,14 +393,14 @@ static void vnodeCleanUp(SVnodeObj *pVnode) { pVnode->sync = NULL; } - if (pVnode->wal) - walClose(pVnode->wal); - pVnode->wal = NULL; - if (pVnode->tsdb) tsdbCloseRepo(pVnode->tsdb, 1); pVnode->tsdb = NULL; + if (pVnode->wal) + walClose(pVnode->wal); + pVnode->wal = NULL; + if (pVnode->cq) cqClose(pVnode->cq); pVnode->cq = NULL; From 34e72ecd7ea0a81a2c14af422b01728799c7f637 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 29 May 2020 03:23:00 +0000 Subject: [PATCH 57/85] change some interface --- src/inc/tsdb.h | 2 +- src/tsdb/src/tsdbMain.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/inc/tsdb.h b/src/inc/tsdb.h index 63539e856d6..c758d3aea43 100644 --- a/src/inc/tsdb.h +++ b/src/inc/tsdb.h @@ -73,7 +73,7 @@ typedef void TsdbRepoT; // use void to hide implementation details from outside int tsdbCreateRepo(char *rootDir, STsdbCfg *pCfg, void *limiter); int32_t tsdbDropRepo(TsdbRepoT *repo); -TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH); +TsdbRepoT *tsdbOpenRepo(char *rootDir, STsdbAppH *pAppH); int32_t tsdbCloseRepo(TsdbRepoT *repo, int toCommit); int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg); diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 9fbd822a656..9c8e57d18aa 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -189,9 +189,9 @@ static int tsdbRestoreInfo(STsdbRepo *pRepo) { * * @return a TSDB repository handle on success, NULL for failure and the error number is set */ -TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { +TsdbRepoT *tsdbOpenRepo(char *rootDir, STsdbAppH *pAppH) { char dataDir[128] = "\0"; - if (access(tsdbDir, F_OK | W_OK | R_OK) < 0) { + if (access(rootDir, F_OK | W_OK | R_OK) < 0) { return NULL; } @@ -200,12 +200,12 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { return NULL; } - pRepo->rootDir = strdup(tsdbDir); + pRepo->rootDir = strdup(rootDir); tsdbRestoreCfg(pRepo, &(pRepo->config)); if (pAppH) pRepo->appH = *pAppH; - pRepo->tsdbMeta = tsdbInitMeta(tsdbDir, pRepo->config.maxTables, pRepo); + pRepo->tsdbMeta = tsdbInitMeta(rootDir, pRepo->config.maxTables, pRepo); if (pRepo->tsdbMeta == NULL) { free(pRepo->rootDir); free(pRepo); From 3ef5b844f0809f500104c709c6f140f23bbed791 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Fri, 29 May 2020 11:31:31 +0800 Subject: [PATCH 58/85] [TD-440] fix resource leak in mnodeTable.c --- src/mnode/src/mnodeTable.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 92ab990da4a..593a8714ff1 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -484,7 +484,10 @@ static int32_t mnodeSuperTableActionDecode(SSdbOper *pOper) { if (pStable == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; int32_t len = strlen(pOper->rowData); - if (len > TSDB_TABLE_ID_LEN) return TSDB_CODE_INVALID_TABLE_ID; + if (len > TSDB_TABLE_ID_LEN){ + free(pStable); + return TSDB_CODE_INVALID_TABLE_ID; + } pStable->info.tableId = strdup(pOper->rowData); len++; @@ -2369,4 +2372,4 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v mnodeDecDbRef(pDb); return numOfRows; -} \ No newline at end of file +} From 0b096647f0e0043a09cb4b078d7d873ce06e9133 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Fri, 29 May 2020 11:38:16 +0800 Subject: [PATCH 59/85] fix resource leak in dnodeVWrite.c [TD-445] --- src/dnode/src/dnodeVWrite.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dnode/src/dnodeVWrite.c b/src/dnode/src/dnodeVWrite.c index bbddfa09279..20c50c5f8c3 100644 --- a/src/dnode/src/dnodeVWrite.c +++ b/src/dnode/src/dnodeVWrite.c @@ -129,7 +129,10 @@ void *dnodeAllocateVnodeWqueue(void *pVnode) { if (pWorker->qset == NULL) { pWorker->qset = taosOpenQset(); - if (pWorker->qset == NULL) return NULL; + if (pWorker->qset == NULL) { + taosCloseQueue(queue); + return NULL; + } taosAddIntoQset(pWorker->qset, queue, pVnode); pWorker->qall = taosAllocateQall(); From 8a12fc6ef7ef0334e254fecce03091b5463de65f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 11:41:20 +0800 Subject: [PATCH 60/85] [TD-444] fix alter native role error --- src/common/src/tglobal.c | 2 +- src/mnode/inc/mnodeDnode.h | 6 ++ src/mnode/src/mnodeDnode.c | 25 ++++- tests/script/jenkins/basic.txt | 1 + tests/script/unique/dnode/alternativeRole.sim | 91 +++++++++++++++++++ 5 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 tests/script/unique/dnode/alternativeRole.sim diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index 4630ea48c9e..f439d26606a 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -427,7 +427,7 @@ static void doInitGlobalConfig() { cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); - // 0-any; 1-mnode; 2-dnode + // 0-any; 1-mnode; 2-vnode cfg.option = "alternativeRole"; cfg.ptr = &tsAlternativeRole; cfg.valType = TAOS_CFG_VTYPE_INT32; diff --git a/src/mnode/inc/mnodeDnode.h b/src/mnode/inc/mnodeDnode.h index 2b12a293907..f95a163d838 100644 --- a/src/mnode/inc/mnodeDnode.h +++ b/src/mnode/inc/mnodeDnode.h @@ -27,6 +27,12 @@ typedef enum { TAOS_DN_STATUS_READY } EDnodeStatus; +typedef enum { + TAOS_DN_ALTERNATIVE_ROLE_ANY, + TAOS_DN_ALTERNATIVE_ROLE_MNODE, + TAOS_DN_ALTERNATIVE_ROLE_VNODE +} EDnodeAlternativeRole; + int32_t mnodeInitDnodes(); void mnodeCleanupDnodes(); diff --git a/src/mnode/src/mnodeDnode.c b/src/mnode/src/mnodeDnode.c index 5aaa2049f16..506511ece9e 100644 --- a/src/mnode/src/mnodeDnode.c +++ b/src/mnode/src/mnodeDnode.c @@ -58,6 +58,7 @@ static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC static int32_t mnodeRetrieveVnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mnodeRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static char* mnodeGetDnodeAlternativeRoleStr(int32_t alternativeRole); static int32_t mnodeDnodeActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); @@ -521,6 +522,12 @@ static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC pSchema[cols].bytes = htons(pShow->bytes[cols]); cols++; + pShow->bytes[cols] = 6 + VARSTR_HEADER_SIZE; + pSchema[cols].type = TSDB_DATA_TYPE_BINARY; + strcpy(pSchema[cols].name, "alternativeRole"); + pSchema[cols].bytes = htons(pShow->bytes[cols]); + cols++; + pShow->bytes[cols] = 8; pSchema[cols].type = TSDB_DATA_TYPE_TIMESTAMP; strcpy(pSchema[cols].name, "create_time"); @@ -572,12 +579,16 @@ static int32_t mnodeRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, vo *(int16_t *)pWrite = pDnode->totalVnodes; cols++; - pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; char* status = mnodeGetDnodeStatusStr(pDnode->status); STR_TO_VARSTR(pWrite, status); cols++; + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; + char* role = mnodeGetDnodeAlternativeRoleStr(pDnode->alternativeRole); + STR_TO_VARSTR(pWrite, role); + cols++; + pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; *(int64_t *)pWrite = pDnode->createdTime; cols++; @@ -895,3 +906,13 @@ char* mnodeGetDnodeStatusStr(int32_t dnodeStatus) { default: return "undefined"; } } + +static char* mnodeGetDnodeAlternativeRoleStr(int32_t alternativeRole) { + switch (alternativeRole) { + case TAOS_DN_ALTERNATIVE_ROLE_ANY: return "any"; + case TAOS_DN_ALTERNATIVE_ROLE_MNODE: return "mnode"; + case TAOS_DN_ALTERNATIVE_ROLE_VNODE: return "vnode"; + default:return "any"; + } +} + diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index dc8c564fd95..eb392bb00be 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -269,6 +269,7 @@ cd ../../../debug; make ./test.sh -u -f unique/db/replica_reduce31.sim ./test.sh -u -f unique/db/replica_part.sim +./test.sh -u -f unique/dnode/alternativeRole.sim ./test.sh -u -f unique/dnode/balance1.sim ./test.sh -u -f unique/dnode/balance2.sim ./test.sh -u -f unique/dnode/balance3.sim diff --git a/tests/script/unique/dnode/alternativeRole.sim b/tests/script/unique/dnode/alternativeRole.sim new file mode 100644 index 00000000000..c9815fdf39e --- /dev/null +++ b/tests/script/unique/dnode/alternativeRole.sim @@ -0,0 +1,91 @@ +system sh/stop_dnodes.sh + +system sh/deploy.sh -n dnode1 -i 1 +system sh/deploy.sh -n dnode2 -i 2 +system sh/deploy.sh -n dnode3 -i 3 + +system sh/cfg.sh -n dnode1 -c alternativeRole -v 1 +system sh/cfg.sh -n dnode2 -c alternativeRole -v 2 +system sh/cfg.sh -n dnode3 -c alternativeRole -v 0 + +system sh/cfg.sh -n dnode1 -c wallevel -v 1 +system sh/cfg.sh -n dnode2 -c wallevel -v 1 +system sh/cfg.sh -n dnode3 -c wallevel -v 1 + +system sh/cfg.sh -n dnode1 -c numOfMpeers -v 3 +system sh/cfg.sh -n dnode2 -c numOfMpeers -v 3 +system sh/cfg.sh -n dnode3 -c numOfMpeers -v 3 + +print ========== step1 +system sh/exec_up.sh -n dnode1 -s start +sql connect +sql create dnode $hostname2 +system sh/exec_up.sh -n dnode2 -s start +sleep 3000 +sql create dnode $hostname3 +system sh/exec_up.sh -n dnode3 -s start +sleep 3000 + +sql show dnodes +print dnode1 $data5_1 +print dnode1 $data5_2 +print dnode1 $data5_3 + +if $data5_1 != mnode then + return -1 +endi +if $data5_2 != vnode then + return -1 +endi +if $data5_3 != any then + return -1 +endi + +sql show mnodes +print dnode1 ==> $data2_1 +print dnode2 ==> $data2_2 +print dnode3 ==> $data2_3 +if $data2_1 != master then + return -1 +endi +if $data2_2 != null then + return -1 +endi +if $data2_3 != slave then + return -1 +endi + +print ========== step2 +sql create database d1 maxTables 4 +sql create table d1.t1 (ts timestamp, i int) +sql create table d1.t2 (ts timestamp, i int) +sql create table d1.t3 (ts timestamp, i int) +sql create table d1.t4 (ts timestamp, i int) +sql create table d1.t5 (ts timestamp, i int) +sql create table d1.t6 (ts timestamp, i int) +sql create table d1.t7 (ts timestamp, i int) +sql create table d1.t8 (ts timestamp, i int) + +sql show dnodes +print dnode1 $data2_1 +print dnode2 $data2_2 +print dnode3 $data2_3 + +if $data2_1 != 0 then + return -1 +endi +if $data2_2 != 1 then + return -1 +endi +if $data2_3 != 1 then + return -1 +endi + +system sh/exec_up.sh -n dnode1 -s stop -x SIGINT +system sh/exec_up.sh -n dnode2 -s stop -x SIGINT +system sh/exec_up.sh -n dnode3 -s stop -x SIGINT +system sh/exec_up.sh -n dnode4 -s stop -x SIGINT +system sh/exec_up.sh -n dnode5 -s stop -x SIGINT +system sh/exec_up.sh -n dnode6 -s stop -x SIGINT +system sh/exec_up.sh -n dnode7 -s stop -x SIGINT +system sh/exec_up.sh -n dnode8 -s stop -x SIGINT \ No newline at end of file From 85087426bb6ad19ce1f1220d06f8acc4af1f9c6b Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Fri, 29 May 2020 11:43:27 +0800 Subject: [PATCH 61/85] fix resource leak in mnodeShow.c [TD-446] --- src/mnode/src/mnodeShow.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 0973163cf94..8ee35734026 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -132,6 +132,8 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { pShow = mnodeSaveShowObj(pShow, showObjSize); if (pShow == NULL) { + mnodeFreeShowObj(pShow); + rpcFreeCont(pShowRsp); return TSDB_CODE_SERV_OUT_OF_MEMORY; } pShowRsp->qhandle = htobe64((uint64_t) pShow); From 5ba3762fcae1608b981fbafd6c00a87b948428f8 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Fri, 29 May 2020 11:43:55 +0800 Subject: [PATCH 62/85] feat: rand timestamp --- src/kit/taosdemo/taosdemo.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 45cf474de38..db62c245554 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -260,6 +260,8 @@ typedef struct { int ncols_per_record; char **data_type; int len_of_binary; + int data_of_order; + int data_of_rate; sem_t *mutex_sem; int *notFinished; @@ -774,11 +776,11 @@ void *syncWrite(void *sarg) { int rand_num = rand() % 100; if (winfo->data_of_order ==1 && rand_num < winfo->data_of_rate) { - printf("insert out of order data: %d, time: %ld\n", rand_num, tmp_time - rand() % 100000); - generateData(data, data_type, ncols_per_record, tmp_time - rand() % 1000, len_of_binary); + long d = tmp_time - rand() % 1000000 + rand_num; + generateData(data, data_type, ncols_per_record, d, len_of_binary); } else { - generateData(data, data_type, ncols_per_record, tmp_time++, len_of_binary); + generateData(data, data_type, ncols_per_record, tmp_time += 1000, len_of_binary); } pstr += sprintf(pstr, " %s", data); inserted++; @@ -818,6 +820,8 @@ void *asyncWrite(void *sarg) { tb_info->mutex_sem = &(winfo->mutex_sem); tb_info->notFinished = &(winfo->notFinished); tb_info->lock_sem = &(winfo->lock_sem); + tb_info->data_of_order = winfo->data_of_order; + tb_info->data_of_rate = winfo->data_of_rate; /* char buff[BUFFER_SIZE] = "\0"; */ /* sprintf(buff, "insert into %s values (0, 0)", tb_info->tb_name); */ @@ -859,7 +863,15 @@ void callBack(void *param, TAOS_RES *res, int code) { pstr += sprintf(pstr, "insert into %s values", tb_info->tb_name); for (int i = 0; i < tb_info->nrecords_per_request; i++) { - generateData(data, datatype, ncols_per_record, tmp_time++, len_of_binary); + int rand_num = rand() % 100; + if (tb_info->data_of_order ==1 && rand_num < tb_info->data_of_rate) + { + long d = tmp_time - rand() % 1000000 + rand_num; + generateData(data, datatype, ncols_per_record, d, len_of_binary); + } else + { + generateData(data, datatype, ncols_per_record, tmp_time += 1000, len_of_binary); + } pstr += sprintf(pstr, "%s", data); tb_info->counter++; From 1acff35e1345ff48c1b58d238ba3bcfebf0fc116 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 29 May 2020 03:57:40 +0000 Subject: [PATCH 63/85] fix cq coredump --- src/tsdb/inc/tsdbMain.h | 1 + src/tsdb/src/tsdbMeta.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 0b7c878f239..9dd5136c959 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -87,6 +87,7 @@ typedef struct STable { struct STable *prev; tstr * name; // NOTE: there a flexible string here char * sql; + void * cqhandle; } STable; #define TSDB_GET_TABLE_LAST_KEY(tb) ((tb)->lastKey) diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index 7d71a0ff3d4..0d9e6a9cf8c 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -154,7 +154,7 @@ void tsdbOrgMeta(void *pHandle) { for (int i = 0; i < pMeta->maxTables; i++) { STable *pTable = pMeta->tables[i]; if (pTable && pTable->type == TSDB_STREAM_TABLE) { - (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, i, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); + pTable->cqhandle = (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, i, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); } } } @@ -203,11 +203,11 @@ int32_t tsdbFreeMeta(STsdbMeta *pMeta) { tsdbCloseMetaFile(pMeta->mfh); - (*pRepo->appH.cqDropFunc)(pRepo->appH.cqH); - for (int i = 1; i < pMeta->maxTables; i++) { if (pMeta->tables[i] != NULL) { - tsdbFreeTable(pMeta->tables[i]); + STable *pTable = pMeta->tables[i]; + if (pTable->type == TSDB_STREAM_TABLE) (*pRepo->appH.cqDropFunc)(pTable->cqhandle); + tsdbFreeTable(pTable); } } @@ -544,7 +544,7 @@ static int tsdbAddTableToMeta(STsdbMeta *pMeta, STable *pTable, bool addIdx) { tsdbAddTableIntoIndex(pMeta, pTable); } if (pTable->type == TSDB_STREAM_TABLE && addIdx) { - (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, pTable->tableId.tid, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); + pTable->cqhandle = (*pRepo->appH.cqCreateFunc)(pRepo->appH.cqH, pTable->tableId.tid, pTable->sql, tsdbGetTableSchema(pMeta, pTable)); } pMeta->nTables++; From 2f0d82cadb119d41ef7fb475d72756c4dff50f64 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 14:32:37 +0800 Subject: [PATCH 64/85] fix definite lost while show command failed --- src/mnode/src/mnodeShow.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index 0973163cf94..b126e734d17 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -116,12 +116,6 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { return TSDB_CODE_OPS_NOT_SUPPORT; } - int32_t size = sizeof(SCMShowRsp) + sizeof(SSchema) * TSDB_MAX_COLUMNS + TSDB_EXTRA_PAYLOAD_SIZE; - SCMShowRsp *pShowRsp = rpcMallocCont(size); - if (pShowRsp == NULL) { - return TSDB_CODE_SERV_OUT_OF_MEMORY; - } - int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen); SShowObj *pShow = (SShowObj *) calloc(1, showObjSize); pShow->signature = pShow; @@ -131,7 +125,13 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); pShow = mnodeSaveShowObj(pShow, showObjSize); - if (pShow == NULL) { + if (pShow == NULL) { + return TSDB_CODE_SERV_OUT_OF_MEMORY; + } + + int32_t size = sizeof(SCMShowRsp) + sizeof(SSchema) * TSDB_MAX_COLUMNS + TSDB_EXTRA_PAYLOAD_SIZE; + SCMShowRsp *pShowRsp = rpcMallocCont(size); + if (pShowRsp == NULL) { return TSDB_CODE_SERV_OUT_OF_MEMORY; } pShowRsp->qhandle = htobe64((uint64_t) pShow); @@ -144,6 +144,7 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { return TSDB_CODE_SUCCESS; } else { mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); + rpcFreeCont(pShowRsp); mnodeCleanupShowObj(pShow, true); return code; } From 7e0783a5a813c40c5dab87192155b301e48272b2 Mon Sep 17 00:00:00 2001 From: Hui Li Date: Fri, 29 May 2020 16:22:44 +0800 Subject: [PATCH 65/85] [TD-439] --- src/dnode/src/dnodeMgmt.c | 6 ++++-- src/dnode/src/dnodeSystem.c | 8 ++++++-- src/kit/shell/src/shellDarwin.c | 8 ++++++-- src/kit/shell/src/shellLinux.c | 5 +++++ src/kit/shell/src/shellWindows.c | 8 ++++++-- src/plugins/http/src/tgHandle.c | 2 +- src/util/src/tconfig.c | 7 ++++++- 7 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index c4a07518ea7..14c2a725d92 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -369,7 +369,8 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { } static bool dnodeReadMnodeInfos() { - char ipFile[TSDB_FILENAME_LEN] = {0}; + char ipFile[TSDB_FILENAME_LEN*2] = {0}; + sprintf(ipFile, "%s/mnodeIpList.json", tsDnodeDir); FILE *fp = fopen(ipFile, "r"); if (!fp) { @@ -537,7 +538,8 @@ static void dnodeSendStatusMsg(void *handle, void *tmrId) { } static bool dnodeReadDnodeCfg() { - char dnodeCfgFile[TSDB_FILENAME_LEN] = {0}; + char dnodeCfgFile[TSDB_FILENAME_LEN*2] = {0}; + sprintf(dnodeCfgFile, "%s/dnodeCfg.json", tsDnodeDir); FILE *fp = fopen(dnodeCfgFile, "r"); diff --git a/src/dnode/src/dnodeSystem.c b/src/dnode/src/dnodeSystem.c index a7bfc2d7d22..0f8dabd75a7 100644 --- a/src/dnode/src/dnodeSystem.c +++ b/src/dnode/src/dnodeSystem.c @@ -28,8 +28,12 @@ int32_t main(int32_t argc, char *argv[]) { // Set global configuration file for (int32_t i = 1; i < argc; ++i) { if (strcmp(argv[i], "-c") == 0) { - if (i < argc - 1) { - strcpy(configDir, argv[++i]); + if (i < argc - 1) { + if (strlen(argv[++i]) > TSDB_FILENAME_LEN - 1) { + printf("config file path overflow"); + exit(EXIT_FAILURE); + } + strcpy(configDir, argv[i]); } else { printf("'-c' requires a parameter, default:%s\n", configDir); exit(EXIT_FAILURE); diff --git a/src/kit/shell/src/shellDarwin.c b/src/kit/shell/src/shellDarwin.c index 98ea6510d7a..439ca6edada 100644 --- a/src/kit/shell/src/shellDarwin.c +++ b/src/kit/shell/src/shellDarwin.c @@ -96,8 +96,12 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { exit(EXIT_FAILURE); } } else if (strcmp(argv[i], "-c") == 0) { - if (i < argc - 1) { - strcpy(configDir, argv[++i]); + if (i < argc - 1) { + if (strlen(argv[++i]) > TSDB_FILENAME_LEN - 1) { + fprintf(stderr, "config file path: %s overflow max len %d\n", argv[i], TSDB_FILENAME_LEN - 1); + exit(EXIT_FAILURE); + } + strcpy(configDir, argv[i]); } else { fprintf(stderr, "Option -c requires an argument\n"); exit(EXIT_FAILURE); diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index b4b74eae3ab..7d035126c00 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -80,6 +80,11 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { if (wordexp(arg, &full_path, 0) != 0) { fprintf(stderr, "Invalid path %s\n", arg); return -1; + } + if (strlen(full_path.we_wordv[0]) > TSDB_FILENAME_LEN - 1) { + fprintf(stderr, "config file path: %s overflow max len %d\n", full_path.we_wordv[0], TSDB_FILENAME_LEN - 1); + wordfree(&full_path); + return -1; } strcpy(configDir, full_path.we_wordv[0]); wordfree(&full_path); diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c index 48545f537e3..cf96bce5a89 100644 --- a/src/kit/shell/src/shellWindows.c +++ b/src/kit/shell/src/shellWindows.c @@ -76,8 +76,12 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { exit(EXIT_FAILURE); } } else if (strcmp(argv[i], "-c") == 0) { - if (i < argc - 1) { - strcpy(configDir, argv[++i]); + if (i < argc - 1) { + if (strlen(argv[++i]) > TSDB_FILENAME_LEN - 1) { + fprintf(stderr, "config file path: %s overflow max len %d\n", argv[i], TSDB_FILENAME_LEN - 1); + exit(EXIT_FAILURE); + } + strcpy(configDir, argv[i]); } else { fprintf(stderr, "Option -c requires an argument\n"); exit(EXIT_FAILURE); diff --git a/src/plugins/http/src/tgHandle.c b/src/plugins/http/src/tgHandle.c index 1a55c325d5c..61f9da63688 100644 --- a/src/plugins/http/src/tgHandle.c +++ b/src/plugins/http/src/tgHandle.c @@ -281,7 +281,7 @@ int tgReadSchema(char *fileName) { } void tgInitHandle(HttpServer *pServer) { - char fileName[256] = {0}; + char fileName[TSDB_FILENAME_LEN*2] = {0}; sprintf(fileName, "%s/taos.telegraf.cfg", configDir); if (tgReadSchema(fileName) <= 0) { tgFreeSchemas(); diff --git a/src/util/src/tconfig.c b/src/util/src/tconfig.c index 32a3df844c2..203a34fd153 100644 --- a/src/util/src/tconfig.c +++ b/src/util/src/tconfig.c @@ -241,7 +241,12 @@ void taosReadGlobalLogCfg() { wordexp_t full_path; wordexp(configDir, &full_path, 0); - if (full_path.we_wordv != NULL && full_path.we_wordv[0] != NULL) { + if (full_path.we_wordv != NULL && full_path.we_wordv[0] != NULL) { + if (strlen(full_path.we_wordv[0]) > TSDB_FILENAME_LEN - 1) { + printf("\nconfig file: %s path overflow max len %d, all variables are set to default\n", full_path.we_wordv[0], TSDB_FILENAME_LEN - 1); + wordfree(&full_path); + return; + } strcpy(configDir, full_path.we_wordv[0]); } else { printf("configDir:%s not there, use default value: /etc/taos", configDir); From f9f28d030180e92ab220e19562a3fa8ce009d86f Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Fri, 29 May 2020 17:00:46 +0800 Subject: [PATCH 66/85] feat:add del tables --- src/kit/taosdemo/taosdemo.c | 80 ++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index db62c245554..0b4341f8a03 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -64,8 +64,9 @@ static struct argp_option options[] = { {0, 'n', "num_of_records_per_table", 0, "The number of records per table. Default is 100000.", 12}, {0, 'c', "config_directory", 0, "Configuration directory. Default is '/etc/taos/'.", 14}, {0, 'x', 0, 0, "Insert only flag.", 13}, - {0, 'O', "order", 0, "Insert mode--0: In order, 1: Out of order. Default is in order", 1}, - {0, 'R', "rate", 0, "Out of order data's rate--if order=1 Default 10", 1}, + {0, 'O', "order", 0, "Insert mode--0: In order, 1: Out of order. Default is in order", 1}, + {0, 'R', "rate", 0, "Out of order data's rate--if order=1 Default 10", 1}, + {0, 'D', "delete table", 0, "Delete data methods——0: don't delete, 1: delete by table, 2: delete by stable, 3: delete by database", 1}, {0}}; /* Used by main to communicate with parse_opt. */ @@ -90,6 +91,7 @@ typedef struct DemoArguments { int abort; int order; int rate; + int method_of_delete; char **arg_list; } SDemoArguments; @@ -200,12 +202,18 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { break; case 'R': arguments->rate = atoi(arg); - printf("%d", arguments->rate); if (arguments->order == 1 && (arguments->rate > 50 || arguments->rate <= 0)) { arguments->rate = 10; } break; + case 'D': + arguments->method_of_delete = atoi(arg); + if (arguments->method_of_delete < 0 || arguments->method_of_delete > 3) + { + arguments->method_of_delete = 0; + } + break; case OPT_ABORT: arguments->abort = 1; break; @@ -284,6 +292,8 @@ void *readMetric(void *sarg); void *syncWrite(void *sarg); +void *deleteTable(); + void *asyncWrite(void *sarg); void generateData(char *res, char **data_type, int num_of_cols, int64_t timestamp, int len_of_binary); @@ -324,6 +334,7 @@ int main(int argc, char *argv[]) { 0, // abort 0, // order 0, // rate + 0, // method_of_delete NULL // arg_list }; @@ -360,6 +371,7 @@ int main(int argc, char *argv[]) { int ncols_per_record = arguments.num_of_CPR; int order = arguments.order; int rate = arguments.rate; + int method_of_delete = arguments.method_of_delete; int ntables = arguments.num_of_tables; int threads = arguments.num_of_threads; int nrecords_per_table = arguments.num_of_DPT; @@ -409,10 +421,11 @@ int main(int argc, char *argv[]) { printf("# Table prefix: %s\n", tb_prefix); if (order == 1) { - printf("# Data order: %d\n", order); - printf("# Data out of order rate: %d\n", rate); + printf("# Data order: %d\n", order); + printf("# Data out of order rate: %d\n", rate); } + printf("# Delete method: %d\n", method_of_delete); printf("# Test time: %d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); printf("###################################################################\n\n"); @@ -428,12 +441,18 @@ int main(int argc, char *argv[]) { fprintf(fp, "# Binary Length(If applicable): %d\n", (strcasestr(dataString, "BINARY") != NULL) ? len_of_binary : -1); fprintf(fp, "# Number of Columns per record: %d\n", ncols_per_record); - fprintf(fp, "# Number of Threads: %d\n", threads); + fprintf(fp, "# Number of Threads: %d\n", threads); fprintf(fp, "# Number of Tables: %d\n", ntables); fprintf(fp, "# Number of Data per Table: %d\n", nrecords_per_table); fprintf(fp, "# Records/Request: %d\n", nrecords_per_request); fprintf(fp, "# Database name: %s\n", db_name); fprintf(fp, "# Table prefix: %s\n", tb_prefix); + if (order == 1) + { + printf("# Data order: %d\n", order); + printf("# Data out of order rate: %d\n", rate); + + } fprintf(fp, "# Test time: %d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); fprintf(fp, "###################################################################\n\n"); @@ -589,6 +608,55 @@ int main(int argc, char *argv[]) { free(infos); fclose(fp); + if (method_of_delete != 0) + { + TAOS *dtaos = taos_connect(ip_addr, user, pass, db_name, port); + double dts = getCurrentTime(); + printf("Deleteing %d table(s)......\n", ntables); + + switch (method_of_delete) + { + case 1: + // delete by table + /* Create all the tables; */ + for (int i = 0; i < ntables; i++) { + sprintf(command, "drop table %s.%s%d;", db_name, tb_prefix, i); + queryDB(dtaos, command); + } + break; + case 2: + // delete by stable + if (!use_metric) { + break; + } + else + { + sprintf(command, "drop table %s.meters;", db_name); + queryDB(dtaos, command); + } + break; + case 3: + // delete by database + sprintf(command, "drop database %s;", db_name); + queryDB(dtaos, command); + break; + default: + break; + } + + printf("Table(s) droped!\n"); + taos_close(dtaos); + + double dt = getCurrentTime() - dts; + printf("Spent %.4f seconds to drop %d tables\n", dt, ntables); + + FILE *fp = fopen(arguments.output_file, "a"); + fprintf(fp, "Spent %.4f seconds to drop %d tables\n", dt, ntables); + fclose(fp); + + } + + if (!insert_only) { // query data pthread_t read_id; From a2dcec3a9c78fa131b05d39d3654e22bf97e94e9 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Fri, 29 May 2020 17:34:19 +0800 Subject: [PATCH 67/85] fix: params order --- src/kit/taosdemo/taosdemo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 0b4341f8a03..cf84ecad43b 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -64,9 +64,9 @@ static struct argp_option options[] = { {0, 'n', "num_of_records_per_table", 0, "The number of records per table. Default is 100000.", 12}, {0, 'c', "config_directory", 0, "Configuration directory. Default is '/etc/taos/'.", 14}, {0, 'x', 0, 0, "Insert only flag.", 13}, - {0, 'O', "order", 0, "Insert mode--0: In order, 1: Out of order. Default is in order", 1}, - {0, 'R', "rate", 0, "Out of order data's rate--if order=1 Default 10", 1}, - {0, 'D', "delete table", 0, "Delete data methods——0: don't delete, 1: delete by table, 2: delete by stable, 3: delete by database", 1}, + {0, 'O', "order", 0, "Insert mode--0: In order, 1: Out of order. Default is in order.", 14}, + {0, 'R', "rate", 0, "Out of order data's rate--if order=1 Default 10, min: 0, max: 50.", 14}, + {0, 'D', "delete table", 0, "Delete data methods——0: don't delete, 1: delete by table, 2: delete by stable, 3: delete by database", 14}, {0}}; /* Used by main to communicate with parse_opt. */ From 116a5b04a2141b412d1e4cb48ba7981f3e1785cb Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 10:32:20 +0000 Subject: [PATCH 68/85] add config table message --- src/dnode/src/dnodeShell.c | 38 +++++++++++++++++++++++++++++++++++++ src/inc/dnode.h | 7 ++++--- src/inc/taosmsg.h | 6 +++--- src/mnode/src/mnodeTable.c | 39 +++++++++++++------------------------- 4 files changed, 58 insertions(+), 32 deletions(-) diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index b875f465c2b..1d1e41bb38d 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -168,6 +168,44 @@ static int dnodeRetrieveUserAuthInfo(char *user, char *spi, char *encrypt, char return rpcRsp.code; } +void *dnodeSendCfgTableToRecv(int32_t vgId, int32_t sid) { + dTrace("vgId:%d, sid:%d send config table msg to mnode", vgId, sid); + + int32_t contLen = sizeof(SDMConfigTableMsg); + SDMConfigTableMsg *pMsg = rpcMallocCont(contLen); + + pMsg->dnodeId = htonl(dnodeGetDnodeId()); + pMsg->vgId = htonl(vgId); + pMsg->sid = htonl(sid); + + SRpcMsg rpcMsg = {0}; + rpcMsg.pCont = pMsg; + rpcMsg.contLen = contLen; + rpcMsg.msgType = TSDB_MSG_TYPE_DM_CONFIG_TABLE; + + SRpcMsg rpcRsp = {0}; + dnodeSendMsgToDnodeRecv(&rpcMsg, &rpcRsp); + terrno = rpcRsp.code; + + if (rpcRsp.code != 0) { + rpcFreeCont(rpcRsp.pCont); + dError("vgId:%d, sid:%d failed to config table from mnode", vgId, sid); + return NULL; + } else { + dPrint("vgId:%d, sid:%d config table msg is received", vgId, sid); + + // delete this after debug finished + SMDCreateTableMsg *pTable = rpcRsp.pCont; + int16_t numOfColumns = htons(pTable->numOfColumns); + int16_t numOfTags = htons(pTable->numOfTags); + int32_t sid = htonl(pTable->sid); + uint64_t uid = htobe64(pTable->uid); + dPrint("table:%s, numOfColumns:%d numOfTags:%d sid:%d uid:%d", pTable->tableId, numOfColumns, numOfTags, sid, uid); + + return rpcRsp.pCont; + } +} + SDnodeStatisInfo dnodeGetStatisInfo() { SDnodeStatisInfo info = {0}; if (dnodeGetRunStatus() == TSDB_DNODE_RUN_STATUS_RUNING) { diff --git a/src/inc/dnode.h b/src/inc/dnode.h index 3d3616085dc..b561c407a34 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -44,9 +44,10 @@ void dnodeGetMnodeIpSetForShell(void *ipSet); void * dnodeGetMnodeInfos(); int32_t dnodeGetDnodeId(); -void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); -void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); -void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); +void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)); +void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg); +void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp); +void *dnodeSendCfgTableToRecv(int32_t vgId, int32_t sid); void *dnodeAllocateVnodeWqueue(void *pVnode); void dnodeFreeVnodeWqueue(void *queue); diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index 17b975c193d..ba95560f7d5 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -676,9 +676,9 @@ typedef struct { } SCMCreateDnodeMsg, SCMDropDnodeMsg; typedef struct { - uint32_t dnode; - int32_t vnode; - int32_t sid; + int32_t dnodeId; + int32_t vgId; + int32_t sid; } SDMConfigTableMsg; typedef struct { diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 92ab990da4a..07520fbb2b3 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -1877,38 +1877,25 @@ static SChildTableObj* mnodeGetTableByPos(int32_t vnode, int32_t sid) { static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { SDMConfigTableMsg *pCfg = pMsg->rpcMsg.pCont; - pCfg->dnode = htonl(pCfg->dnode); - pCfg->vnode = htonl(pCfg->vnode); - pCfg->sid = htonl(pCfg->sid); - mTrace("dnode:%s, vnode:%d, sid:%d, receive table config msg", taosIpStr(pCfg->dnode), pCfg->vnode, pCfg->sid); + pCfg->dnodeId = htonl(pCfg->dnodeId); + pCfg->vgId = htonl(pCfg->vgId); + pCfg->sid = htonl(pCfg->sid); + mTrace("dnode:%d, vgId:%d sid:%d, receive table config msg", pCfg->dnodeId, pCfg->vgId, pCfg->sid); - SChildTableObj *pTable = mnodeGetTableByPos(pCfg->vnode, pCfg->sid); + SChildTableObj *pTable = mnodeGetTableByPos(pCfg->vgId, pCfg->sid); if (pTable == NULL) { - mError("dnode:%s, vnode:%d, sid:%d, table not found", taosIpStr(pCfg->dnode), pCfg->vnode, pCfg->sid); + mError("dnode:%d, vgId:%d sid:%d, table not found", pCfg->dnodeId, pCfg->vgId, pCfg->sid); return TSDB_CODE_NOT_ACTIVE_TABLE; } - SMDCreateTableMsg *pMDCreate = NULL; - pMDCreate = mnodeBuildCreateChildTableMsg(NULL, (SChildTableObj *)pTable); - if (pMDCreate == NULL) { - mnodeDecTableRef(pTable); - return terrno; - } - - SDnodeObj *pDnode = mnodeGetDnode(pCfg->dnode); - SRpcIpSet ipSet = mnodeGetIpSetFromIp(pDnode->dnodeEp); - SRpcMsg rpcRsp = { - .handle = NULL, - .pCont = pMDCreate, - .contLen = htonl(pMDCreate->contLen), - .code = 0, - .msgType = TSDB_MSG_TYPE_MD_CREATE_TABLE - }; - dnodeSendMsgToDnode(&ipSet, &rpcRsp); - + SMDCreateTableMsg *pCreate = NULL; + pCreate = mnodeBuildCreateChildTableMsg(NULL, (SChildTableObj *)pTable); mnodeDecTableRef(pTable); - mnodeDecDnodeRef(pDnode); - + + if (pCreate == NULL) return terrno; + + pMsg->rpcRsp.rsp = pCreate; + pMsg->rpcRsp.len = htonl(pCreate->contLen); return TSDB_CODE_SUCCESS; } From 3c7941735995ff26e8e558c8af0c371ba6704d48 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Fri, 29 May 2020 18:36:55 +0800 Subject: [PATCH 69/85] add multi-threading test case [TD-450] --- .../random-test-multi-threading.py | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 tests/pytest/random-test/random-test-multi-threading.py diff --git a/tests/pytest/random-test/random-test-multi-threading.py b/tests/pytest/random-test/random-test-multi-threading.py new file mode 100644 index 00000000000..c6ccc44372e --- /dev/null +++ b/tests/pytest/random-test/random-test-multi-threading.py @@ -0,0 +1,215 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import random +import threading + +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + +current_tb = "" +last_tb = "" +written = 0 + + +class Test (threading.Thread): + def __init__(self, threadId, name, sleepTime): + threading.Thread.__init__(self) + self.threadId = threadId + self.name = name + self.sleepTime = sleepTime + + self.threadLock = threading.Lock() + + def create_table(self): + global current_tb + global last_tb + global written + + tdLog.info("create a table") + current_tb = "tb%d" % int(round(time.time() * 1000)) + tdLog.info("current table %s" % current_tb) + + if (current_tb == last_tb): + return + else: + tdSql.execute( + 'create table %s (ts timestamp, speed int)' % + current_tb) + last_tb = current_tb + written = 0 + + def insert_data(self): + global current_tb + global last_tb + global written + + tdLog.info("will insert data to table") + if (current_tb == ""): + tdLog.info("no table, create first") + self.create_table() + + tdLog.info("insert data to table") + for i in range(0, 10): + self.threadLock.acquire() + insertRows = 1000 + tdLog.info("insert %d rows to %s" % (insertRows, current_tb)) + + for j in range(0, insertRows): + ret = tdSql.execute( + 'insert into %s values (now + %dm, %d)' % + (current_tb, j, j)) + written = written + 1 + self.threadLock.release() + + def query_data(self): + global current_tb + global last_tb + global written + + if (written > 0): + tdLog.info("query data from table") + tdSql.query("select * from %s" % last_tb) + tdSql.checkRows(written) + + def create_stable(self): + global current_tb + global last_tb + global written + + tdLog.info("create a super table") + + def restart_database(self): + global current_tb + global last_tb + global written + + tdLog.info("restart databae") + tdDnodes.stop(1) + tdDnodes.start(1) + tdLog.sleep(5) + + def force_restart(self): + global current_tb + global last_tb + global written + + tdLog.info("force restart database") + tdDnodes.forcestop(1) + tdDnodes.start(1) + tdLog.sleep(5) + + def drop_table(self): + global current_tb + global last_tb + global written + + for i in range(0, 10): + self.threadLock.acquire() + + tdLog.info("current_tb %s" % current_tb) + + if (current_tb != ""): + tdLog.info("drop current tb %s" % current_tb) + tdSql.execute("drop table %s" % current_tb) + current_tb = "" + last_tb = "" + written = 0 + tdLog.sleep(self.sleepTime) + self.threadLock.release() + + def reset_query_cache(self): + global current_tb + global last_tb + global written + + tdLog.info("reset query cache") + tdSql.execute("reset query cache") + tdLog.sleep(1) + + def reset_database(self): + global current_tb + global last_tb + global written + + tdLog.info("reset database") + tdDnodes.forcestop(1) + tdDnodes.deploy(1) + current_tb = "" + last_tb = "" + written = 0 + tdDnodes.start(1) + tdSql.prepare() + + def delete_datafiles(self): + global current_tb + global last_tb + global written + + tdLog.info("delete data files") + dnodesDir = tdDnodes.getDnodesRootDir() + dataDir = dnodesDir + '/dnode1/*' + deleteCmd = 'rm -rf %s' % dataDir + os.system(deleteCmd) + + current_tb = "" + last_tb = "" + written = 0 + tdDnodes.start(1) + tdSql.prepare() + + def run(self): + switch = { + 1: self.create_table, + 2: self.insert_data, + 3: self.query_data, + 4: self.create_stable, + 5: self.restart_database, + 6: self.force_restart, + 7: self.drop_table, + 8: self.reset_query_cache, + 9: self.reset_database, + 10: self.delete_datafiles, + } + + switch.get(self.threadId, lambda: "ERROR")() + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + + def run(self): + tdSql.prepare() + + test1 = Test(2, "insert_data", 1) + test2 = Test(7, "drop_table", 2) + + test1.start() + test2.start() + test1.join() + test2.join() + + tdLog.info("end of test") + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From 706b535c61e8587a859099ebe6afb6a48d6a5cc7 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 11:10:34 +0000 Subject: [PATCH 70/85] fix deadlock while free tsc object --- src/client/src/tscSql.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index a9ec33c078c..7534a324099 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -591,7 +591,10 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) { tscProcessSql(pSql); // waits for response and then goes on - sem_wait(&pSql->rspSem); + STscObj* pTscObj = pSql->pTscObj; + if (pTscObj->pSql == pSql) { + sem_wait(&pSql->rspSem); + } } else { // if no free resource msg is sent to vnode, we free this object immediately. STscObj* pTscObj = pSql->pTscObj; From 356e386a5b3e1ae290f931001810846e93026b95 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Fri, 29 May 2020 12:58:29 +0000 Subject: [PATCH 71/85] set pNode->next to null, since item may be write into queue multiple times --- src/util/src/tqueue.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/util/src/tqueue.c b/src/util/src/tqueue.c index 475941dbdb9..88830fa2134 100644 --- a/src/util/src/tqueue.c +++ b/src/util/src/tqueue.c @@ -95,6 +95,7 @@ void *taosAllocateQitem(int size) { void taosFreeQitem(void *param) { if (param == NULL) return; + uTrace("item:%p is freed", param); char *temp = (char *)param; temp -= sizeof(STaosQnode); free(temp); @@ -104,6 +105,7 @@ int taosWriteQitem(taos_queue param, int type, void *item) { STaosQueue *queue = (STaosQueue *)param; STaosQnode *pNode = (STaosQnode *)(((char *)item) - sizeof(STaosQnode)); pNode->type = type; + pNode->next = NULL; pthread_mutex_lock(&queue->mutex); @@ -143,7 +145,7 @@ int taosReadQitem(taos_queue param, int *type, void **pitem) { queue->numOfItems--; if (queue->qset) atomic_sub_fetch_32(&queue->qset->numOfItems, 1); code = 1; - uTrace("item:%p is read out from queue, items:%d", *pitem, queue->numOfItems); + uTrace("item:%p is read out from queue:%p, type:%d items:%d", *pitem, *type, queue->numOfItems); } pthread_mutex_unlock(&queue->mutex); @@ -337,6 +339,7 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand queue->numOfItems--; atomic_sub_fetch_32(&qset->numOfItems, 1); code = 1; + uTrace("item:%p is read out from queue:%p, type:%d items:%d", *pitem, queue, *type, queue->numOfItems); } pthread_mutex_unlock(&queue->mutex); From aa0ac1348ea688ca513d54f3459e1eef5e7adf95 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Fri, 29 May 2020 13:09:01 +0000 Subject: [PATCH 72/85] structure style --- src/util/src/tqueue.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/util/src/tqueue.c b/src/util/src/tqueue.c index 88830fa2134..428c40ef7af 100644 --- a/src/util/src/tqueue.c +++ b/src/util/src/tqueue.c @@ -18,24 +18,24 @@ #include "taoserror.h" #include "tqueue.h" -typedef struct _taos_qnode { +typedef struct STaosQnode { int type; - struct _taos_qnode *next; + struct STaosQnode *next; char item[]; } STaosQnode; -typedef struct _taos_q { +typedef struct STaosQueue { int32_t itemSize; int32_t numOfItems; - struct _taos_qnode *head; - struct _taos_qnode *tail; - struct _taos_q *next; // for queue set - struct _taos_qset *qset; // for queue set + struct STaosQnode *head; + struct STaosQnode *tail; + struct STaosQueue *next; // for queue set + struct STaosQset *qset; // for queue set void *ahandle; // for queue set pthread_mutex_t mutex; } STaosQueue; -typedef struct _taos_qset { +typedef struct STaosQset { STaosQueue *head; STaosQueue *current; pthread_mutex_t mutex; @@ -44,7 +44,7 @@ typedef struct _taos_qset { tsem_t sem; } STaosQset; -typedef struct _taos_qall { +typedef struct STaosQall { STaosQnode *current; STaosQnode *start; int32_t itemSize; From d790d9ad091d8ac353de41029b333c03dd6c1aa8 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 14:26:16 +0000 Subject: [PATCH 73/85] [TD-437] reference count calc error when drop table --- src/mnode/src/mnodeSdb.c | 10 +++++----- src/mnode/src/mnodeTable.c | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c index 3fdb1b0dfe0..6638fba53b2 100644 --- a/src/mnode/src/mnodeSdb.c +++ b/src/mnode/src/mnodeSdb.c @@ -358,8 +358,8 @@ void sdbIncRef(void *handle, void *pObj) { SSdbTable *pTable = handle; int32_t * pRefCount = (int32_t *)(pObj + pTable->refCountPos); atomic_add_fetch_32(pRefCount, 1); - if (0 && (pTable->tableId == SDB_TABLE_MNODE || pTable->tableId == SDB_TABLE_DNODE)) { - sdbTrace("add ref to table:%s record:%s:%d", pTable->tableName, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); + if (0 && (pTable->tableId == SDB_TABLE_CTABLE || pTable->tableId == SDB_TABLE_DB)) { + sdbTrace("add ref to table:%s record:%p:%s:%d", pTable->tableName, pObj, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); } } @@ -369,13 +369,13 @@ void sdbDecRef(void *handle, void *pObj) { SSdbTable *pTable = handle; int32_t * pRefCount = (int32_t *)(pObj + pTable->refCountPos); int32_t refCount = atomic_sub_fetch_32(pRefCount, 1); - if (0 && (pTable->tableId == SDB_TABLE_MNODE || pTable->tableId == SDB_TABLE_DNODE)) { - sdbTrace("def ref of table:%s record:%s:%d", pTable->tableName, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); + if (0 && (pTable->tableId == SDB_TABLE_CTABLE || pTable->tableId == SDB_TABLE_DB)) { + sdbTrace("def ref of table:%s record:%p:%s:%d", pTable->tableName, pObj, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); } int8_t *updateEnd = pObj + pTable->refCountPos - 1; if (refCount <= 0 && *updateEnd) { - sdbTrace("table:%s, record:%s:%d is destroyed", pTable->tableName, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); + sdbTrace("table:%s, record:%p:%s:%d is destroyed", pTable->tableName, pObj, sdbGetKeyStrFromObj(pTable, pObj), *pRefCount); SSdbOper oper = {.pObj = pObj}; (*pTable->destroyFp)(&oper); } diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 3befeab4aa1..b2d7ec768f6 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -1916,7 +1916,6 @@ static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg) { if (rpcMsg->code != TSDB_CODE_SUCCESS) { mError("table:%s, failed to drop in dnode, reason:%s", pTable->info.tableId, tstrerror(rpcMsg->code)); dnodeSendRpcMnodeWriteRsp(mnodeMsg, rpcMsg->code); - mnodeDecTableRef(pTable); return; } From 94e10bb13232dafd1d84f54bd9f9914bb5724ed0 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Fri, 29 May 2020 14:58:49 +0000 Subject: [PATCH 74/85] clean up some configurations parameters --- src/client/src/tscServer.c | 5 ++--- src/client/src/tscSystem.c | 8 ++++---- src/common/inc/tglobal.h | 6 ++---- src/common/src/tglobal.c | 42 +++++++++----------------------------- src/dnode/src/dnodeShell.c | 2 +- src/inc/taosdef.h | 3 --- src/inc/taoserror.h | 22 +++++++++----------- src/mnode/src/mnodeMain.c | 4 ++-- 8 files changed, 31 insertions(+), 61 deletions(-) diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 417108dfce9..4cb2775ca24 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -238,9 +238,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) { } else { STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); if (rpcMsg->code == TSDB_CODE_NOT_ACTIVE_TABLE || rpcMsg->code == TSDB_CODE_INVALID_TABLE_ID || - rpcMsg->code == TSDB_CODE_INVALID_VNODE_ID || rpcMsg->code == TSDB_CODE_NOT_ACTIVE_VNODE || - rpcMsg->code == TSDB_CODE_NETWORK_UNAVAIL || rpcMsg->code == TSDB_CODE_NOT_ACTIVE_TABLE || - rpcMsg->code == TSDB_CODE_TABLE_ID_MISMATCH) { + rpcMsg->code == TSDB_CODE_INVALID_VGROUP_ID || rpcMsg->code == TSDB_CODE_NOT_ACTIVE_VNODE || + rpcMsg->code == TSDB_CODE_NETWORK_UNAVAIL || rpcMsg->code == TSDB_CODE_TABLE_ID_MISMATCH) { /* * not_active_table: 1. the virtual node may fail to create table, since the procedure of create table is asynchronized, * the virtual node may have not create table till now, so try again by using the new metermeta. diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c index 2ca53bade1a..75249e44eef 100644 --- a/src/client/src/tscSystem.c +++ b/src/client/src/tscSystem.c @@ -57,9 +57,9 @@ int32_t tscInitRpc(const char *user, const char *secret, void** pDnodeConn) { memset(&rpcInit, 0, sizeof(rpcInit)); rpcInit.localPort = 0; rpcInit.label = "TSC"; - rpcInit.numOfThreads = tscNumOfThreads; + rpcInit.numOfThreads = 1; // every DB connection has only one thread rpcInit.cfp = tscProcessMsgFromServer; - rpcInit.sessions = tsMaxVnodeConnections; + rpcInit.sessions = tsMaxConnections; rpcInit.connType = TAOS_CONN_CLIENT; rpcInit.user = (char*)user; rpcInit.idleTime = 2000; @@ -121,7 +121,7 @@ void taos_init_imp() { } tscInitMsgsFp(); - int queueSize = tsMaxVnodeConnections + tsMaxMeterConnections + tsMaxMgmtConnections + tsMaxMgmtConnections; + int queueSize = tsMaxConnections*2; if (tscEmbedded == 0) { tscNumOfThreads = tsNumOfCores * tsNumOfThreadsPerCore / 2.0; @@ -137,7 +137,7 @@ void taos_init_imp() { return; } - tscTmr = taosTmrInit(tsMaxMgmtConnections * 2, 200, 60000, "TSC"); + tscTmr = taosTmrInit(tsMaxConnections * 2, 200, 60000, "TSC"); if(0 == tscEmbedded){ taosTmrReset(tscCheckDiskUsage, 10, NULL, tscTmr, &tscCheckDiskUsageTmr); } diff --git a/src/common/inc/tglobal.h b/src/common/inc/tglobal.h index 3cae25aead8..0af8430ab17 100644 --- a/src/common/inc/tglobal.h +++ b/src/common/inc/tglobal.h @@ -87,16 +87,14 @@ extern int16_t tsWAL; extern int32_t tsReplications; extern int16_t tsAffectedRowsMod; -extern int32_t tsNumOfMPeers; +extern int32_t tsNumOfMnodes; extern int32_t tsMaxShellConns; extern int32_t tsMaxTables; extern char tsDefaultDB[]; extern char tsDefaultUser[]; extern char tsDefaultPass[]; -extern int32_t tsMaxMeterConnections; -extern int32_t tsMaxVnodeConnections; -extern int32_t tsMaxMgmtConnections; +extern int32_t tsMaxConnections; extern int32_t tsBalanceInterval; extern int32_t tsOfflineThreshold; diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index f439d26606a..2b4e59e92ad 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -105,15 +105,13 @@ int32_t tsReplications = TSDB_DEFAULT_REPLICA_NUM; * 1: affected rows include those duplicate records */ int16_t tsAffectedRowsMod = 0; -int32_t tsNumOfMPeers = 3; -int32_t tsMaxShellConns = 2000; +int32_t tsNumOfMnodes = 3; +int32_t tsMaxShellConns = 5000; char tsDefaultDB[TSDB_DB_NAME_LEN] = {0}; char tsDefaultUser[64] = "root"; char tsDefaultPass[64] = "taosdata"; -int32_t tsMaxMeterConnections = 10000; -int32_t tsMaxMgmtConnections = 2000; -int32_t tsMaxVnodeConnections = 10000; +int32_t tsMaxConnections = 50; int32_t tsBalanceInterval = 300; // seconds int32_t tsOfflineThreshold = 86400*100; // seconds 10days @@ -407,8 +405,8 @@ static void doInitGlobalConfig() { cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); - cfg.option = "numOfMPeers"; - cfg.ptr = &tsNumOfMPeers; + cfg.option = "numOfMnodes"; + cfg.ptr = &tsNumOfMnodes; cfg.valType = TAOS_CFG_VTYPE_INT32; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; cfg.minValue = 1; @@ -680,7 +678,7 @@ static void doInitGlobalConfig() { cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); - cfg.option = "wallevel"; + cfg.option = "walLevel"; cfg.ptr = &tsWAL; cfg.valType = TAOS_CFG_VTYPE_INT16; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; @@ -814,32 +812,12 @@ static void doInitGlobalConfig() { cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); - cfg.option = "maxMeterConnections"; - cfg.ptr = &tsMaxMeterConnections; + cfg.option = "maxConnections"; + cfg.ptr = &tsMaxConnections; cfg.valType = TAOS_CFG_VTYPE_INT32; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 50000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosInitConfigOption(cfg); - - cfg.option = "maxMgmtConnections"; - cfg.ptr = &tsMaxMgmtConnections; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 50000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosInitConfigOption(cfg); - - cfg.option = "maxVnodeConnections"; - cfg.ptr = &tsMaxVnodeConnections; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 50000000; + cfg.minValue = 1; + cfg.maxValue = 100; cfg.ptrLength = 0; cfg.unitType = TAOS_CFG_UTYPE_NONE; taosInitConfigOption(cfg); diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c index 1d1e41bb38d..b09e14e2830 100644 --- a/src/dnode/src/dnodeShell.c +++ b/src/dnode/src/dnodeShell.c @@ -84,7 +84,7 @@ int32_t dnodeInitShell() { rpcInit.label = "SHELL"; rpcInit.numOfThreads = numOfThreads; rpcInit.cfp = dnodeProcessMsgFromShell; - rpcInit.sessions = TSDB_SESSIONS_PER_DNODE; + rpcInit.sessions = tsMaxShellConns; rpcInit.connType = TAOS_CONN_SERVER; rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.afp = dnodeRetrieveUserAuthInfo; diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index b2bfe7c590a..548a39ad424 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -338,9 +338,6 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); #define TSDB_ORDER_ASC 1 #define TSDB_ORDER_DESC 2 -#define TSDB_SESSIONS_PER_VNODE (300) -#define TSDB_SESSIONS_PER_DNODE (TSDB_SESSIONS_PER_VNODE * TSDB_MAX_VNODES) - #define TSDB_DEFAULT_MNODES_HASH_SIZE 5 #define TSDB_DEFAULT_DNODES_HASH_SIZE 10 #define TSDB_DEFAULT_ACCOUNTS_HASH_SIZE 10 diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index ca520ff803e..61e81dfeabe 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -72,9 +72,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_NO_RESOURCE, 0, 0x0018, "no resource" TAOS_DEFINE_ERROR(TSDB_CODE_OPS_NOT_SUPPORT, 0, 0x0019, "operations not support") TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_OPTION, 0, 0x001A, "invalid option") TAOS_DEFINE_ERROR(TSDB_CODE_NOT_CONFIGURED, 0, 0x001B, "not configured") -TAOS_DEFINE_ERROR(TSDB_CODE_NODE_OFFLINE, 0, 0x001C, "node offline") -TAOS_DEFINE_ERROR(TSDB_CODE_NETWORK_UNAVAIL, 0, 0x001D, "network unavailable") -TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_REQUIRED, 0, 0x001E, "auth required") +TAOS_DEFINE_ERROR(TSDB_CODE_NETWORK_UNAVAIL, 0, 0x001C, "network unavailable") +TAOS_DEFINE_ERROR(TSDB_CODE_AUTH_REQUIRED, 0, 0x001D, "auth required") // db TAOS_DEFINE_ERROR(TSDB_CODE_DB_NOT_SELECTED, 0, 0x0100, "db not selected") @@ -148,15 +147,14 @@ TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CPU_LIMITED, 0, 0x038F, "grant cpu li // server TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VGROUP_ID, 0, 0x0400, "invalid vgroup id") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VNODE_ID, 0, 0x0401, "invalid vnode id") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_VNODE, 0, 0x0402, "not active vnode") -TAOS_DEFINE_ERROR(TSDB_CODE_VG_INIT_FAILED, 0, 0x0403, "vg init failed") -TAOS_DEFINE_ERROR(TSDB_CODE_SERV_NO_DISKSPACE, 0, 0x0404, "server no diskspace") -TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 0x0405, "server out of memory") -TAOS_DEFINE_ERROR(TSDB_CODE_NO_DISK_PERMISSIONS, 0, 0x0406, "no disk permissions") -TAOS_DEFINE_ERROR(TSDB_CODE_FILE_CORRUPTED, 0, 0x0407, "file corrupted") -TAOS_DEFINE_ERROR(TSDB_CODE_MEMORY_CORRUPTED, 0, 0x0408, "memory corrupted") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUCH_FILE_OR_DIR, 0, 0x0409, "no such file or directory") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_VNODE, 0, 0x0401, "not active vnode") +TAOS_DEFINE_ERROR(TSDB_CODE_VG_INIT_FAILED, 0, 0x0402, "vgroup init failed") +TAOS_DEFINE_ERROR(TSDB_CODE_SERV_NO_DISKSPACE, 0, 0x0403, "server no diskspace") +TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 0x0404, "server out of memory") +TAOS_DEFINE_ERROR(TSDB_CODE_NO_DISK_PERMISSIONS, 0, 0x0405, "no disk permissions") +TAOS_DEFINE_ERROR(TSDB_CODE_FILE_CORRUPTED, 0, 0x0406, "file corrupted") +TAOS_DEFINE_ERROR(TSDB_CODE_MEMORY_CORRUPTED, 0, 0x0407, "memory corrupted") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUCH_FILE_OR_DIR, 0, 0x0408, "no such file or directory") // client TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CLIENT_VERSION, 0, 0x0481, "invalid client version") diff --git a/src/mnode/src/mnodeMain.c b/src/mnode/src/mnodeMain.c index ac119477579..baecfac0775 100644 --- a/src/mnode/src/mnodeMain.c +++ b/src/mnode/src/mnodeMain.c @@ -160,7 +160,7 @@ void mnodeStopSystem() { static void mnodeInitTimer() { if (tsMnodeTmr == NULL) { - tsMnodeTmr = taosTmrInit((tsMaxShellConns)*3, 200, 3600000, "MND"); + tsMnodeTmr = taosTmrInit(tsMaxShellConns, 200, 3600000, "MND"); } } @@ -185,4 +185,4 @@ static bool mnodeNeedStart() { bool mnodeIsRunning() { return tsMgmtIsRunning; -} \ No newline at end of file +} From b825a904c7fcaae9298cc51d51d676aeaf78b0f8 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 29 May 2020 15:31:36 +0000 Subject: [PATCH 75/85] scripts after change numOfMpeers to numOfMnodes --- tests/pytest/util/dnodes.py | 2 +- tests/script/general/alter/count.sim | 2 +- tests/script/general/alter/import.sim | 2 +- tests/script/general/db/backup/keep.sim | 6 +++--- tests/script/general/db/delete_reuse1.sim | 8 ++++---- tests/script/general/db/delete_reuse2.sim | 8 ++++---- tests/script/general/db/delete_writing1.sim | 8 ++++---- tests/script/general/import/basic.sim | 8 ++++---- tests/script/general/import/commit.sim | 8 ++++---- tests/script/general/import/large.sim | 8 ++++---- tests/script/general/import/replica1.sim | 8 ++++---- tests/script/general/table/delete_reuse1.sim | 8 ++++---- tests/script/general/table/delete_reuse2.sim | 8 ++++---- tests/script/general/table/delete_writing.sim | 8 ++++---- tests/script/sh/clear.sh | 2 +- tests/script/sh/deploy.sh | 2 +- tests/script/tmp/mnodes.sim | 6 +++--- tests/script/tmp/prepare.sim | 8 ++++---- .../dn3_mn1_replica2_wal1_AddDelDnode.sim | 10 +++++----- .../arbitrator/replica_changeWithArbitrator.sim | 6 +++--- tests/script/unique/cluster/balance1.sim | 16 ++++++++-------- tests/script/unique/cluster/balance2.sim | 16 ++++++++-------- tests/script/unique/cluster/balance3.sim | 16 ++++++++-------- tests/script/unique/column/replica3.sim | 6 +++--- tests/script/unique/db/commit.sim | 6 +++--- tests/script/unique/db/delete.sim | 6 +++--- tests/script/unique/db/delete_part.sim | 8 ++++---- tests/script/unique/db/replica_add12.sim | 8 ++++---- tests/script/unique/db/replica_add13.sim | 8 ++++---- tests/script/unique/db/replica_add23.sim | 8 ++++---- tests/script/unique/db/replica_part.sim | 6 +++--- tests/script/unique/db/replica_reduce21.sim | 6 +++--- tests/script/unique/db/replica_reduce31.sim | 6 +++--- tests/script/unique/db/replica_reduce32.sim | 6 +++--- tests/script/unique/dnode/alternativeRole.sim | 6 +++--- tests/script/unique/import/replica2.sim | 8 ++++---- tests/script/unique/import/replica3.sim | 8 ++++---- tests/script/unique/mnode/mgmt22.sim | 6 +++--- tests/script/unique/mnode/mgmt23.sim | 8 ++++---- tests/script/unique/mnode/mgmt24.sim | 6 +++--- tests/script/unique/mnode/mgmt25.sim | 6 +++--- tests/script/unique/mnode/mgmt26.sim | 8 ++++---- tests/script/unique/mnode/mgmt33.sim | 8 ++++---- tests/script/unique/mnode/mgmt34.sim | 10 +++++----- tests/script/unique/mnode/mgmtr2.sim | 6 +++--- tests/script/unique/stream/metrics_balance.sim | 4 ++-- .../script/unique/stream/metrics_vnode_stop.sim | 4 ++-- tests/script/unique/stream/table_balance.sim | 4 ++-- tests/script/unique/stream/table_move.sim | 8 ++++---- tests/script/unique/stream/table_vnode_stop.sim | 4 ++-- tests/script/unique/vnode/many.sim | 8 ++++---- tests/script/unique/vnode/replica2_basic2.sim | 8 ++++---- tests/script/unique/vnode/replica2_repeat.sim | 8 ++++---- tests/script/unique/vnode/replica3_basic.sim | 6 +++--- tests/script/unique/vnode/replica3_repeat.sim | 8 ++++---- tests/script/unique/vnode/replica3_vgroup.sim | 6 +++--- 56 files changed, 198 insertions(+), 198 deletions(-) diff --git a/tests/pytest/util/dnodes.py b/tests/pytest/util/dnodes.py index 998c996ca2a..13038f4ddaa 100644 --- a/tests/pytest/util/dnodes.py +++ b/tests/pytest/util/dnodes.py @@ -163,7 +163,7 @@ def deploy(self): self.cfg("clog", "1") self.cfg("statusInterval", "1") self.cfg("numOfTotalVnodes", "64") - self.cfg("numOfMPeers", "3") + self.cfg("numOfMnodes", "3") self.cfg("numOfThreadsPerCore", "2.0") self.cfg("monitor", "0") self.cfg("maxVnodeConnections", "30000") diff --git a/tests/script/general/alter/count.sim b/tests/script/general/alter/count.sim index 11b2f6e2442..4728433dd2a 100644 --- a/tests/script/general/alter/count.sim +++ b/tests/script/general/alter/count.sim @@ -3,7 +3,7 @@ system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c wallevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master diff --git a/tests/script/general/alter/import.sim b/tests/script/general/alter/import.sim index 801e716e8c4..0ad52373fc5 100644 --- a/tests/script/general/alter/import.sim +++ b/tests/script/general/alter/import.sim @@ -3,7 +3,7 @@ system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c wallevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 print ========= start dnode1 as master diff --git a/tests/script/general/db/backup/keep.sim b/tests/script/general/db/backup/keep.sim index f48ce0e4144..156b32ba4c8 100644 --- a/tests/script/general/db/backup/keep.sim +++ b/tests/script/general/db/backup/keep.sim @@ -9,9 +9,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c walLevel -v 0 system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/db/delete_reuse1.sim b/tests/script/general/db/delete_reuse1.sim index 75a4cfaff03..7b8687d340a 100644 --- a/tests/script/general/db/delete_reuse1.sim +++ b/tests/script/general/db/delete_reuse1.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/db/delete_reuse2.sim b/tests/script/general/db/delete_reuse2.sim index 103242ee1bb..d27a54ad95c 100644 --- a/tests/script/general/db/delete_reuse2.sim +++ b/tests/script/general/db/delete_reuse2.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/db/delete_writing1.sim b/tests/script/general/db/delete_writing1.sim index 01914e91a8e..96783be030e 100644 --- a/tests/script/general/db/delete_writing1.sim +++ b/tests/script/general/db/delete_writing1.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/import/basic.sim b/tests/script/general/import/basic.sim index b6e064c845d..07febb2bd52 100644 --- a/tests/script/general/import/basic.sim +++ b/tests/script/general/import/basic.sim @@ -4,10 +4,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/general/import/commit.sim b/tests/script/general/import/commit.sim index 93bd93cf21d..498bb4f2e6d 100644 --- a/tests/script/general/import/commit.sim +++ b/tests/script/general/import/commit.sim @@ -4,10 +4,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/general/import/large.sim b/tests/script/general/import/large.sim index 751eef785b8..5bf05a57fbd 100644 --- a/tests/script/general/import/large.sim +++ b/tests/script/general/import/large.sim @@ -4,10 +4,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/general/import/replica1.sim b/tests/script/general/import/replica1.sim index 771f2a8cbbe..c212e8723e7 100644 --- a/tests/script/general/import/replica1.sim +++ b/tests/script/general/import/replica1.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/general/table/delete_reuse1.sim b/tests/script/general/table/delete_reuse1.sim index 4727796a624..753d1e8a354 100644 --- a/tests/script/general/table/delete_reuse1.sim +++ b/tests/script/general/table/delete_reuse1.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/table/delete_reuse2.sim b/tests/script/general/table/delete_reuse2.sim index 9dfc0c5d4e3..1c74399348d 100644 --- a/tests/script/general/table/delete_reuse2.sim +++ b/tests/script/general/table/delete_reuse2.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/general/table/delete_writing.sim b/tests/script/general/table/delete_writing.sim index ac056f2212b..853637967d0 100644 --- a/tests/script/general/table/delete_writing.sim +++ b/tests/script/general/table/delete_writing.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 0 system sh/cfg.sh -n dnode3 -c walLevel -v 0 system sh/cfg.sh -n dnode4 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/sh/clear.sh b/tests/script/sh/clear.sh index 3be31d15f9e..0d58b5aec47 100755 --- a/tests/script/sh/clear.sh +++ b/tests/script/sh/clear.sh @@ -111,7 +111,7 @@ echo "clog 0" >> $TAOS_CFG echo "statusInterval 1" >> $TAOS_CFG echo "numOfTotalVnodes 4" >> $TAOS_CFG echo "asyncLog 0" >> $TAOS_CFG -echo "numOfMPeers 1" >> $TAOS_CFG +echo "numOfMnodes 1" >> $TAOS_CFG echo "locale en_US.UTF-8" >> $TAOS_CFG diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index db40fb0457e..47f9f7109d8 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -119,7 +119,7 @@ echo "clog 2" >> $TAOS_CFG echo "statusInterval 1" >> $TAOS_CFG echo "numOfTotalVnodes 4" >> $TAOS_CFG echo "asyncLog 0" >> $TAOS_CFG -echo "numOfMPeers 1" >> $TAOS_CFG +echo "numOfMnodes 1" >> $TAOS_CFG echo "locale en_US.UTF-8" >> $TAOS_CFG echo "anyIp 0" >> $TAOS_CFG diff --git a/tests/script/tmp/mnodes.sim b/tests/script/tmp/mnodes.sim index 38d99bd214c..67f3648f642 100644 --- a/tests/script/tmp/mnodes.sim +++ b/tests/script/tmp/mnodes.sim @@ -2,6 +2,6 @@ system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 diff --git a/tests/script/tmp/prepare.sim b/tests/script/tmp/prepare.sim index be9e255eb89..a71401d6e47 100644 --- a/tests/script/tmp/prepare.sim +++ b/tests/script/tmp/prepare.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c walLevel -v 2 system sh/cfg.sh -n dnode3 -c walLevel -v 2 system sh/cfg.sh -n dnode4 -c walLevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim index eabaefd6785..b3b1e0fe226 100644 --- a/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim +++ b/tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim @@ -5,11 +5,11 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 system sh/deploy.sh -n dnode5 -i 5 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode5 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode5 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c walLevel -v 1 system sh/cfg.sh -n dnode2 -c walLevel -v 1 diff --git a/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim b/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim index d1b4a2ec72e..fd69d955c3a 100644 --- a/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim +++ b/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 system sh/cfg.sh -n dnode1 -c walLevel -v 1 system sh/cfg.sh -n dnode2 -c walLevel -v 1 diff --git a/tests/script/unique/cluster/balance1.sim b/tests/script/unique/cluster/balance1.sim index 9130493a93b..47b23d16c99 100644 --- a/tests/script/unique/cluster/balance1.sim +++ b/tests/script/unique/cluster/balance1.sim @@ -17,14 +17,14 @@ system sh/cfg.sh -n dnode6 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode7 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode8 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode5 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode6 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode7 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode8 -c numOfMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode5 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode6 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode7 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode8 -c numOfMnodes -v 3 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 diff --git a/tests/script/unique/cluster/balance2.sim b/tests/script/unique/cluster/balance2.sim index 56c0d538b6c..48670ee9b1f 100644 --- a/tests/script/unique/cluster/balance2.sim +++ b/tests/script/unique/cluster/balance2.sim @@ -17,14 +17,14 @@ system sh/cfg.sh -n dnode6 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode7 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode8 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode5 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode6 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode7 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode8 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode5 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode6 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode7 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode8 -c numOfMnodes -v 3 system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 diff --git a/tests/script/unique/cluster/balance3.sim b/tests/script/unique/cluster/balance3.sim index 346f027526c..4f53a04daf1 100644 --- a/tests/script/unique/cluster/balance3.sim +++ b/tests/script/unique/cluster/balance3.sim @@ -18,14 +18,14 @@ system sh/cfg.sh -n dnode6 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode7 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode8 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode5 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode6 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode7 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode8 -c numOfMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode5 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode6 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode7 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode8 -c numOfMnodes -v 3 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 diff --git a/tests/script/unique/column/replica3.sim b/tests/script/unique/column/replica3.sim index 4e45edc02d1..d294bf0a577 100644 --- a/tests/script/unique/column/replica3.sim +++ b/tests/script/unique/column/replica3.sim @@ -6,9 +6,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 system sh/exec_up.sh -n dnode1 -s start sql connect diff --git a/tests/script/unique/db/commit.sim b/tests/script/unique/db/commit.sim index 95a6b92bb29..4cef0c56380 100644 --- a/tests/script/unique/db/commit.sim +++ b/tests/script/unique/db/commit.sim @@ -6,9 +6,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c walLevel -v 2 system sh/cfg.sh -n dnode2 -c walLevel -v 2 system sh/cfg.sh -n dnode3 -c walLevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/delete.sim b/tests/script/unique/db/delete.sim index 5688333d20f..1f9d2721832 100644 --- a/tests/script/unique/db/delete.sim +++ b/tests/script/unique/db/delete.sim @@ -6,9 +6,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 10 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 10 system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 10 diff --git a/tests/script/unique/db/delete_part.sim b/tests/script/unique/db/delete_part.sim index 1bd103137b4..a4ad615f602 100644 --- a/tests/script/unique/db/delete_part.sim +++ b/tests/script/unique/db/delete_part.sim @@ -9,10 +9,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_add12.sim b/tests/script/unique/db/replica_add12.sim index ce7121db2e8..ec376d4e15f 100644 --- a/tests/script/unique/db/replica_add12.sim +++ b/tests/script/unique/db/replica_add12.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_add13.sim b/tests/script/unique/db/replica_add13.sim index b2bfef2b580..f6d1c9012ba 100644 --- a/tests/script/unique/db/replica_add13.sim +++ b/tests/script/unique/db/replica_add13.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_add23.sim b/tests/script/unique/db/replica_add23.sim index 6df09d0cac7..4defaef1533 100644 --- a/tests/script/unique/db/replica_add23.sim +++ b/tests/script/unique/db/replica_add23.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_part.sim b/tests/script/unique/db/replica_part.sim index 6a41c430ea9..3011fac02c4 100644 --- a/tests/script/unique/db/replica_part.sim +++ b/tests/script/unique/db/replica_part.sim @@ -7,9 +7,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_reduce21.sim b/tests/script/unique/db/replica_reduce21.sim index 931382d8c40..efaa4fa95c2 100644 --- a/tests/script/unique/db/replica_reduce21.sim +++ b/tests/script/unique/db/replica_reduce21.sim @@ -7,9 +7,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_reduce31.sim b/tests/script/unique/db/replica_reduce31.sim index 22c89d91b9a..98aec8dd19b 100644 --- a/tests/script/unique/db/replica_reduce31.sim +++ b/tests/script/unique/db/replica_reduce31.sim @@ -7,9 +7,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/db/replica_reduce32.sim b/tests/script/unique/db/replica_reduce32.sim index 54069cb1336..735f9abb820 100644 --- a/tests/script/unique/db/replica_reduce32.sim +++ b/tests/script/unique/db/replica_reduce32.sim @@ -7,9 +7,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/dnode/alternativeRole.sim b/tests/script/unique/dnode/alternativeRole.sim index c9815fdf39e..7c33cac0dc1 100644 --- a/tests/script/unique/dnode/alternativeRole.sim +++ b/tests/script/unique/dnode/alternativeRole.sim @@ -12,9 +12,9 @@ system sh/cfg.sh -n dnode1 -c wallevel -v 1 system sh/cfg.sh -n dnode2 -c wallevel -v 1 system sh/cfg.sh -n dnode3 -c wallevel -v 1 -system sh/cfg.sh -n dnode1 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 print ========== step1 system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/import/replica2.sim b/tests/script/unique/import/replica2.sim index 3f21fcf00d2..fab26a31cd7 100644 --- a/tests/script/unique/import/replica2.sim +++ b/tests/script/unique/import/replica2.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/unique/import/replica3.sim b/tests/script/unique/import/replica3.sim index 8eb2df9942d..3939bc2e1be 100644 --- a/tests/script/unique/import/replica3.sim +++ b/tests/script/unique/import/replica3.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 10 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 10 diff --git a/tests/script/unique/mnode/mgmt22.sim b/tests/script/unique/mnode/mgmt22.sim index c6ea026af9a..e306b1b02a9 100644 --- a/tests/script/unique/mnode/mgmt22.sim +++ b/tests/script/unique/mnode/mgmt22.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/mnode/mgmt23.sim b/tests/script/unique/mnode/mgmt23.sim index 8c144dd0c44..2a28f8daf98 100644 --- a/tests/script/unique/mnode/mgmt23.sim +++ b/tests/script/unique/mnode/mgmt23.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start @@ -91,7 +91,7 @@ print ============== step5 sleep 2000 sql create dnode $hostname2 system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 system sh/exec_up.sh -n dnode2 -s start sleep 8000 diff --git a/tests/script/unique/mnode/mgmt24.sim b/tests/script/unique/mnode/mgmt24.sim index 4813d96f5f3..c989faca818 100644 --- a/tests/script/unique/mnode/mgmt24.sim +++ b/tests/script/unique/mnode/mgmt24.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/mnode/mgmt25.sim b/tests/script/unique/mnode/mgmt25.sim index 8c8eeba466c..f955ac70c39 100644 --- a/tests/script/unique/mnode/mgmt25.sim +++ b/tests/script/unique/mnode/mgmt25.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/mnode/mgmt26.sim b/tests/script/unique/mnode/mgmt26.sim index 373a0abaed1..170905195be 100644 --- a/tests/script/unique/mnode/mgmt26.sim +++ b/tests/script/unique/mnode/mgmt26.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start @@ -89,7 +89,7 @@ endi print ============== step5 system sh/exec_up.sh -n dnode2 -s stop system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 sleep 5000 system sh/exec_up.sh -n dnode2 -s start sql create dnode $hostname2 diff --git a/tests/script/unique/mnode/mgmt33.sim b/tests/script/unique/mnode/mgmt33.sim index e3a62a2d22c..4a1fbf00b67 100644 --- a/tests/script/unique/mnode/mgmt33.sim +++ b/tests/script/unique/mnode/mgmt33.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 print ============== step1 system sh/exec_up.sh -n dnode1 -s start @@ -97,7 +97,7 @@ system sh/exec_up.sh -n dnode2 -s stop sleep 3000 system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 system sh/exec_up.sh -n dnode2 -s start print ============== step5 diff --git a/tests/script/unique/mnode/mgmt34.sim b/tests/script/unique/mnode/mgmt34.sim index 4409c825c81..ada5321f1b2 100644 --- a/tests/script/unique/mnode/mgmt34.sim +++ b/tests/script/unique/mnode/mgmt34.sim @@ -5,10 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3 print ============== step1 system sh/exec_up.sh -n dnode1 -s start @@ -145,7 +145,7 @@ system sh/exec_up.sh -n dnode2 -s stop sleep 3000 system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 system sh/exec_up.sh -n dnode2 -s start print ============== step6 diff --git a/tests/script/unique/mnode/mgmtr2.sim b/tests/script/unique/mnode/mgmtr2.sim index 625e42a334d..77e5e601bb6 100644 --- a/tests/script/unique/mnode/mgmtr2.sim +++ b/tests/script/unique/mnode/mgmtr2.sim @@ -3,9 +3,9 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2 print ============== step1 system sh/exec_up.sh -n dnode1 -s start diff --git a/tests/script/unique/stream/metrics_balance.sim b/tests/script/unique/stream/metrics_balance.sim index 6ca5de96f61..e306da3cce9 100644 --- a/tests/script/unique/stream/metrics_balance.sim +++ b/tests/script/unique/stream/metrics_balance.sim @@ -18,8 +18,8 @@ system sh/cfg.sh -n dnode1 -c maxTablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxTablesPerVnode -v 4 system sh/cfg.sh -n dnode1 -c tableMetaKeepTimer -v 5 system sh/cfg.sh -n dnode2 -c tableMetaKeepTimer -v 5 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 $dbPrefix = db $tbPrefix = tb diff --git a/tests/script/unique/stream/metrics_vnode_stop.sim b/tests/script/unique/stream/metrics_vnode_stop.sim index 4f85d75e7f9..1f9cab48e5f 100644 --- a/tests/script/unique/stream/metrics_vnode_stop.sim +++ b/tests/script/unique/stream/metrics_vnode_stop.sim @@ -6,8 +6,8 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/cfg.sh -n dnode1 -c walLevel -v 0 system sh/cfg.sh -n dnode2 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 system sh/exec.sh -n dnode1 -s start sql connect diff --git a/tests/script/unique/stream/table_balance.sim b/tests/script/unique/stream/table_balance.sim index 9cb87557d14..992b4c08eeb 100644 --- a/tests/script/unique/stream/table_balance.sim +++ b/tests/script/unique/stream/table_balance.sim @@ -16,8 +16,8 @@ system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 0 system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 $dbPrefix = tb_db $tbPrefix = tb_tb diff --git a/tests/script/unique/stream/table_move.sim b/tests/script/unique/stream/table_move.sim index 41fbcae4ce7..0f264ade33f 100644 --- a/tests/script/unique/stream/table_move.sim +++ b/tests/script/unique/stream/table_move.sim @@ -40,10 +40,10 @@ system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4 system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3 system sh/cfg.sh -n dnode1 -c maxVnodeConnections -v 1000 system sh/cfg.sh -n dnode1 -c maxMeterConnections -v 1000 diff --git a/tests/script/unique/stream/table_vnode_stop.sim b/tests/script/unique/stream/table_vnode_stop.sim index 8528ee67558..16350949b12 100644 --- a/tests/script/unique/stream/table_vnode_stop.sim +++ b/tests/script/unique/stream/table_vnode_stop.sim @@ -6,8 +6,8 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/cfg.sh -n dnode1 -c walLevel -v 0 system sh/cfg.sh -n dnode2 -c walLevel -v 0 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2 system sh/exec.sh -n dnode1 -s start sql connect diff --git a/tests/script/unique/vnode/many.sim b/tests/script/unique/vnode/many.sim index 2b4ec01c2d7..4b7fb8ffc47 100644 --- a/tests/script/unique/vnode/many.sim +++ b/tests/script/unique/vnode/many.sim @@ -8,10 +8,10 @@ system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/vnode/replica2_basic2.sim b/tests/script/unique/vnode/replica2_basic2.sim index 114ac9b29f3..6468538ec62 100644 --- a/tests/script/unique/vnode/replica2_basic2.sim +++ b/tests/script/unique/vnode/replica2_basic2.sim @@ -10,10 +10,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/vnode/replica2_repeat.sim b/tests/script/unique/vnode/replica2_repeat.sim index 57f51316ad5..4b024bfc9cb 100644 --- a/tests/script/unique/vnode/replica2_repeat.sim +++ b/tests/script/unique/vnode/replica2_repeat.sim @@ -8,10 +8,10 @@ system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/vnode/replica3_basic.sim b/tests/script/unique/vnode/replica3_basic.sim index 62910b947af..288996548f8 100644 --- a/tests/script/unique/vnode/replica3_basic.sim +++ b/tests/script/unique/vnode/replica3_basic.sim @@ -6,9 +6,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 system sh/exec_up.sh -n dnode1 -s start sql connect diff --git a/tests/script/unique/vnode/replica3_repeat.sim b/tests/script/unique/vnode/replica3_repeat.sim index a6f423bf9a3..b184bf194ca 100644 --- a/tests/script/unique/vnode/replica3_repeat.sim +++ b/tests/script/unique/vnode/replica3_repeat.sim @@ -8,10 +8,10 @@ system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 system sh/cfg.sh -n dnode4 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 1 -system sh/cfg.sh -n dnode4 -c numofMpeers -v 1 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1 +system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1 system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4 diff --git a/tests/script/unique/vnode/replica3_vgroup.sim b/tests/script/unique/vnode/replica3_vgroup.sim index 6315a4335cf..beb0667d08a 100644 --- a/tests/script/unique/vnode/replica3_vgroup.sim +++ b/tests/script/unique/vnode/replica3_vgroup.sim @@ -6,9 +6,9 @@ system sh/deploy.sh -n dnode3 -i 3 system sh/cfg.sh -n dnode1 -c wallevel -v 2 system sh/cfg.sh -n dnode2 -c wallevel -v 2 system sh/cfg.sh -n dnode3 -c wallevel -v 2 -system sh/cfg.sh -n dnode1 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode2 -c numofMpeers -v 3 -system sh/cfg.sh -n dnode3 -c numofMpeers -v 3 +system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3 +system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3 system sh/exec_up.sh -n dnode1 -s start sql connect From 467ca437bbaff79b2c5af45e77397af8b69a30b7 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Fri, 29 May 2020 15:48:11 -0700 Subject: [PATCH 76/85] Found invalid pointer access with -t 2 -s 5 --- tests/pytest/crash_gen.py | 122 ++++++++++++++++++++++++-------------- 1 file changed, 79 insertions(+), 43 deletions(-) diff --git a/tests/pytest/crash_gen.py b/tests/pytest/crash_gen.py index 472e417ab9f..2e5d84d45f1 100755 --- a/tests/pytest/crash_gen.py +++ b/tests/pytest/crash_gen.py @@ -152,12 +152,18 @@ def tapStepGate(self): # give it a tap, release the thread waiting there self._stepGate.set() # wake up! time.sleep(0) # let the released thread run a bit - def execSql(self, sql): # not "execute", since we are out side the DB context + def execSql(self, sql): # TODO: expose DbConn directly if ( gConfig.per_thread_db_connection ): return self._dbConn.execute(sql) else: return self._tc.getDbState().getDbConn().execute(sql) + def getDbConn(self): + if ( gConfig.per_thread_db_connection ): + return self._dbConn + else: + return self._tc.getDbState().getDbConn() + # def querySql(self, sql): # not "execute", since we are out side the DB context # if ( gConfig.per_thread_db_connection ): # return self._dbConn.query(sql) @@ -432,14 +438,23 @@ def close(self): def execute(self, sql): if ( not self.isOpen ): raise RuntimeError("Cannot execute database commands until connection is open") - return self._tdSql.execute(sql) + logger.debug("[SQL] Executing SQL: {}".format(sql)) + nRows = self._tdSql.execute(sql) + logger.debug("[SQL] Execution Result, nRows = {}, SQL = {}".format(nRows, sql)) + return nRows def query(self, sql) : # return rows affected if ( not self.isOpen ): raise RuntimeError("Cannot query database until connection is open") - return self._tdSql.query(sql) + logger.debug("[SQL] Executing SQL: {}".format(sql)) + nRows = self._tdSql.query(sql) + logger.debug("[SQL] Execution Result, nRows = {}, SQL = {}".format(nRows, sql)) + return nRows # results are in: return self._tdSql.queryResult + def getQueryResult(self): + return self._tdSql.queryResult + def _queryAny(self, sql) : # actual query result as an int if ( not self.isOpen ): raise RuntimeError("Cannot query database until connection is open") @@ -468,8 +483,8 @@ class AnyState: STATE_VAL_IDX = 0 CAN_CREATE_DB = 1 CAN_DROP_DB = 2 - CAN_CREATE_FIXED_TABLE = 3 - CAN_DROP_FIXED_TABLE = 4 + CAN_CREATE_FIXED_SUPER_TABLE = 3 + CAN_DROP_FIXED_SUPER_TABLE = 4 CAN_ADD_DATA = 5 CAN_READ_DATA = 6 @@ -502,10 +517,10 @@ def canCreateDb(self): return self._info[self.CAN_CREATE_DB] def canDropDb(self): return self._info[self.CAN_DROP_DB] - def canCreateFixedTable(self): - return self._info[self.CAN_CREATE_FIXED_TABLE] - def canDropFixedTable(self): - return self._info[self.CAN_DROP_FIXED_TABLE] + def canCreateFixedSuperTable(self): + return self._info[self.CAN_CREATE_FIXED_SUPER_TABLE] + def canDropFixedSuperTable(self): + return self._info[self.CAN_DROP_FIXED_SUPER_TABLE] def canAddData(self): return self._info[self.CAN_ADD_DATA] def canReadData(self): @@ -602,9 +617,9 @@ def verifyTasksToState(self, tasks, newState): # self.assertHasTask(tasks, DropDbTask) # implied by hasSuccess self.assertAtMostOneSuccess(tasks, DropDbTask) # self._state = self.STATE_EMPTY - elif ( self.hasSuccess(tasks, CreateFixedTableTask) ): # did not drop db, create table success + elif ( self.hasSuccess(tasks, CreateFixedSuperTableTask) ): # did not drop db, create table success # self.assertHasTask(tasks, CreateFixedTableTask) # tried to create table - self.assertAtMostOneSuccess(tasks, CreateFixedTableTask) # at most 1 attempt is successful + self.assertAtMostOneSuccess(tasks, CreateFixedSuperTableTask) # at most 1 attempt is successful self.assertNoTask(tasks, DropDbTask) # should have have tried # if ( not self.hasSuccess(tasks, AddFixedDataTask) ): # just created table, no data yet # # can't say there's add-data attempts, since they may all fail @@ -618,7 +633,7 @@ def verifyTasksToState(self, tasks, newState): # # raise RuntimeError("Unexpected no-success scenario") # We might just landed all failure tasks, # self._state = self.STATE_DB_ONLY # no change -class StateTableOnly(AnyState): +class StateSuperTableOnly(AnyState): def getInfo(self): return [ self.STATE_TABLE_ONLY, @@ -628,8 +643,8 @@ def getInfo(self): ] def verifyTasksToState(self, tasks, newState): - if ( self.hasSuccess(tasks, DropFixedTableTask) ): # we are able to drop the table - self.assertAtMostOneSuccess(tasks, DropFixedTableTask) + if ( self.hasSuccess(tasks, DropFixedSuperTableTask) ): # we are able to drop the table + self.assertAtMostOneSuccess(tasks, DropFixedSuperTableTask) # self._state = self.STATE_DB_ONLY # elif ( self.hasSuccess(tasks, AddFixedDataTask) ): # no success dropping the table, but added data # self.assertNoTask(tasks, DropFixedTableTask) # not true in massively parrallel cases @@ -658,16 +673,16 @@ def verifyTasksToState(self, tasks, newState): elif ( newState.equals(AnyState.STATE_DB_ONLY) ): # in DB only if ( not self.hasTask(tasks, CreateDbTask)): # without a create_db task self.assertNoTask(tasks, DropDbTask) # we must have drop_db task - self.hasSuccess(tasks, DropFixedTableTask) - self.assertAtMostOneSuccess(tasks, DropFixedTableTask) # TODO: dicy + self.hasSuccess(tasks, DropFixedSuperTableTask) + self.assertAtMostOneSuccess(tasks, DropFixedSuperTableTask) # TODO: dicy elif ( newState.equals(AnyState.STATE_TABLE_ONLY) ): # data deleted self.assertNoTask(tasks, DropDbTask) - self.assertNoTask(tasks, DropFixedTableTask) + self.assertNoTask(tasks, DropFixedSuperTableTask) self.assertNoTask(tasks, AddFixedDataTask) # self.hasSuccess(tasks, DeleteDataTasks) else: self.assertNoTask(tasks, DropDbTask) - self.assertNoTask(tasks, DropFixedTableTask) + self.assertNoTask(tasks, DropFixedSuperTableTask) self.assertIfExistThenSuccess(tasks, ReadFixedDataTask) @@ -681,7 +696,7 @@ def __init__(self): self._lock = threading.RLock() self._state = StateInvalid() # starting state - self._stateWeights = [1,3,5,10] + self._stateWeights = [1,3,5,10] # indexed with value of STATE_EMPTY, STATE_DB_ONLY, etc. # self.openDbServerConnection() self._dbConn = DbConn() @@ -711,8 +726,8 @@ def addTable(self): tIndex = self.tableNumQueue.push() return tIndex - def getFixedTableName(self): - return "fixed_table" + def getFixedSuperTableName(self): + return "fs_table" def releaseTable(self, i): # return the table back, so others can use it self.tableNumQueue.release(i) @@ -726,6 +741,12 @@ def getNextInt(self): with self._lock: self._lastInt += 1 return self._lastInt + + def getNextBinary(self): + return "Los_Angeles_{}".format(self.getNextInt()) + + def getNextFloat(self): + return 0.9 + self.getNextInt() def getTableNameToDelete(self): tblNum = self.tableNumQueue.pop() # TODO: race condition! @@ -752,11 +773,12 @@ def getTaskTypesAtState(self): if endState == None: continue for tc in allTaskClasses: # what task can further begin from there? - if tc.canBeginFrom(endState) and (endState not in firstTaskTypes): + if tc.canBeginFrom(endState) and (tc not in firstTaskTypes): taskTypes.append(tc) # gather it if len(taskTypes) <= 0: - raise RuntimeError("No suitable task types found for state: {}".format(self._state)) + raise RuntimeError("No suitable task types found for state: {}".format(self._state)) + logger.debug("[OPS] Tasks found for state {}: {}".format(self._state, taskTypes)) return taskTypes # tasks.append(ReadFixedDataTask(self)) # always for everybody @@ -809,10 +831,10 @@ def _findCurrentState(self): # logger.debug("Found DB ONLY state") logger.debug("[STT] DB_ONLY found, between {} and {}".format(ts, time.time())) return StateDbOnly() - if dbc.query("SELECT * FROM db.{}".format(self.getFixedTableName()) ) == 0 : # no data + if dbc.query("SELECT * FROM db.{}".format(self.getFixedSuperTableName()) ) == 0 : # no data # logger.debug("Found TABLE_ONLY state") - logger.debug("[STT] TABLE_ONLY found, between {} and {}".format(ts, time.time())) - return StateTableOnly() + logger.debug("[STT] SUPER_TABLE_ONLY found, between {} and {}".format(ts, time.time())) + return StateSuperTableOnly() else: # logger.debug("Found HAS_DATA state") logger.debug("[STT] HAS_DATA found, between {} and {}".format(ts, time.time())) @@ -933,7 +955,7 @@ def execSql(self, sql): return self._dbState.execute(sql) -class ExecutionStats: +class ExecutionStats: def __init__(self): self._execTimes: Dict[str, [int, int]] = {} # total/success times for a task self._tasksInProgress = 0 @@ -984,7 +1006,7 @@ def logStats(self): logger.info("| Task Execution Times (success/total):") execTimesAny = 0 for k, n in self._execTimes.items(): - execTimesAny += n[1] + execTimesAny += n[0] logger.info("| {0:<24}: {1}/{2}".format(k,n[1],n[0])) logger.info("| Total Tasks Executed (success or not): {} ".format(execTimesAny)) @@ -1035,7 +1057,7 @@ def canBeginFrom(cls, state: AnyState): return state.canCreateDb() def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - wt.execSql("create database db") + wt.execSql("create database db") class DropDbTask(StateTransitionTask): @classmethod @@ -1053,21 +1075,23 @@ def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): wt.execSql("drop database db") logger.debug("[OPS] database dropped at {}".format(time.time())) -class CreateFixedTableTask(StateTransitionTask): +class CreateFixedSuperTableTask(StateTransitionTask): @classmethod def getInfo(cls): return [ # [AnyState.STATE_DB_ONLY], - StateTableOnly() + StateSuperTableOnly() ] @classmethod def canBeginFrom(cls, state: AnyState): - return state.canCreateFixedTable() + return state.canCreateFixedSuperTable() def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - tblName = self._dbState.getFixedTableName() - wt.execSql("create table db.{} (ts timestamp, speed int)".format(tblName)) + tblName = self._dbState.getFixedSuperTableName() + wt.execSql("create table db.{} (ts timestamp, speed int) tags (b binary(20), f float) ".format(tblName)) + # No need to create the regular tables, INSERT will do that automatically + class ReadFixedDataTask(StateTransitionTask): @classmethod @@ -1082,11 +1106,17 @@ def canBeginFrom(cls, state: AnyState): return state.canReadData() def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - tblName = self._dbState.getFixedTableName() - wt.execSql("select * from db.{}".format(tblName)) # TODO: analyze result set later + sTbName = self._dbState.getFixedSuperTableName() + dbc = wt.getDbConn() + dbc.query("select TBNAME from db.{}".format(sTbName)) # TODO: analyze result set later + rTables = dbc.getQueryResult() + # print("rTables[0] = {}, type = {}".format(rTables[0], type(rTables[0]))) + for rTbName in rTables : # regular tables + dbc.query("select * from db.{}".format(rTbName[0])) # TODO: check success failure + # tdSql.query(" cars where tbname in ('carzero', 'carone')") -class DropFixedTableTask(StateTransitionTask): +class DropFixedSuperTableTask(StateTransitionTask): @classmethod def getInfo(cls): return [ @@ -1096,10 +1126,10 @@ def getInfo(cls): @classmethod def canBeginFrom(cls, state: AnyState): - return state.canDropFixedTable() + return state.canDropFixedSuperTable() def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): - tblName = self._dbState.getFixedTableName() + tblName = self._dbState.getFixedSuperTableName() wt.execSql("drop table db.{}".format(tblName)) class AddFixedDataTask(StateTransitionTask): @@ -1116,8 +1146,14 @@ def canBeginFrom(cls, state: AnyState): def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): ds = self._dbState - sql = "insert into db.{} values ('{}', {});".format(ds.getFixedTableName(), ds.getNextTick(), ds.getNextInt()) - wt.execSql(sql) + wt.execSql("use db") # TODO: seems to be an INSERT bug to require this + for i in range(10): # 0 to 9 + sql = "insert into db.reg_table_{} using {} tags ('{}', {}) values ('{}', {});".format( + i, + ds.getFixedSuperTableName(), + ds.getNextBinary(), ds.getNextFloat(), + ds.getNextTick(), ds.getNextInt()) + wt.execSql(sql) #---------- Non State-Transition Related Tasks ----------# @@ -1150,10 +1186,10 @@ def _executeInternal(self, te: TaskExecutor, wt: WorkerThread): self.logInfo("No table found to add data, skipping...") return sql = "insert into db.table_{} values ('{}', {});".format(tIndex, ds.getNextTick(), ds.getNextInt()) - self.logDebug("Executing SQL: {}".format(sql)) + self.logDebug("[SQL] Executing SQL: {}".format(sql)) wt.execSql(sql) ds.releaseTable(tIndex) - self.logDebug("Finished adding data") + self.logDebug("[OPS] Finished adding data") # Deterministic random number generator From 9569e376a0ae00792e09fbc4522fbb2603517868 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Sat, 30 May 2020 03:45:22 +0000 Subject: [PATCH 77/85] remove some redundant error codes --- src/client/src/tscServer.c | 5 ++--- src/inc/taoserror.h | 18 +++++++----------- src/mnode/src/mnodeTable.c | 12 ++++++------ src/mnode/src/mnodeVgroup.c | 4 ++-- src/plugins/http/src/httpJson.c | 4 ++-- src/plugins/http/src/tgJson.c | 4 ++-- src/vnode/src/vnodeRead.c | 2 +- src/vnode/src/vnodeWrite.c | 2 +- 8 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 4cb2775ca24..9123318d3bf 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -237,9 +237,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) { rpcMsg->code = TSDB_CODE_NETWORK_UNAVAIL; } else { STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); - if (rpcMsg->code == TSDB_CODE_NOT_ACTIVE_TABLE || rpcMsg->code == TSDB_CODE_INVALID_TABLE_ID || - rpcMsg->code == TSDB_CODE_INVALID_VGROUP_ID || rpcMsg->code == TSDB_CODE_NOT_ACTIVE_VNODE || - rpcMsg->code == TSDB_CODE_NETWORK_UNAVAIL || rpcMsg->code == TSDB_CODE_TABLE_ID_MISMATCH) { + if (rpcMsg->code == TSDB_CODE_INVALID_TABLE_ID || rpcMsg->code == TSDB_CODE_INVALID_VGROUP_ID || + rpcMsg->code == TSDB_CODE_NETWORK_UNAVAIL) { /* * not_active_table: 1. the virtual node may fail to create table, since the procedure of create table is asynchronized, * the virtual node may have not create table till now, so try again by using the new metermeta. diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index 61e81dfeabe..db910c9caea 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -93,16 +93,13 @@ TAOS_DEFINE_ERROR(TSDB_CODE_NO_USER_FROM_CONN, 0, 0x0185, "can not get TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ALREADY_EXIST, 0, 0x0200, "table already exist") TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_ID, 0, 0x0201, "invalid table id") TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE_TYPE, 0, 0x0202, "invalid table typee") -TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_TABLE, 0, 0x0203, "invalid table name") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUPER_TABLE, 0, 0x0204, "no super table") // operation only available for super table -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_TABLE, 0, 0x0205, "not active table") -TAOS_DEFINE_ERROR(TSDB_CODE_TABLE_ID_MISMATCH, 0, 0x0206, "table id mismatch") -TAOS_DEFINE_ERROR(TSDB_CODE_TAG_ALREAY_EXIST, 0, 0x0207, "tag already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_TAG_NOT_EXIST, 0, 0x0208, "tag not exist") -TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_ALREAY_EXIST, 0, 0x0209, "field already exist") -TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_NOT_EXIST, 0, 0x020A, "field not exist") -TAOS_DEFINE_ERROR(TSDB_CODE_COL_NAME_TOO_LONG, 0, 0x020B, "column name too long") -TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TAGS, 0, 0x020C, "too many tags") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUPER_TABLE, 0, 0x0203, "no super table") // operation only available for super table +TAOS_DEFINE_ERROR(TSDB_CODE_TAG_ALREAY_EXIST, 0, 0x0204, "tag already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_TAG_NOT_EXIST, 0, 0x0205, "tag not exist") +TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_ALREAY_EXIST, 0, 0x0206, "field already exist") +TAOS_DEFINE_ERROR(TSDB_CODE_FIELD_NOT_EXIST, 0, 0x0207, "field not exist") +TAOS_DEFINE_ERROR(TSDB_CODE_COL_NAME_TOO_LONG, 0, 0x0209, "column name too long") +TAOS_DEFINE_ERROR(TSDB_CODE_TOO_MANY_TAGS, 0, 0x0209, "too many tags") // dnode & mnode @@ -147,7 +144,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_CPU_LIMITED, 0, 0x038F, "grant cpu li // server TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VGROUP_ID, 0, 0x0400, "invalid vgroup id") -TAOS_DEFINE_ERROR(TSDB_CODE_NOT_ACTIVE_VNODE, 0, 0x0401, "not active vnode") TAOS_DEFINE_ERROR(TSDB_CODE_VG_INIT_FAILED, 0, 0x0402, "vgroup init failed") TAOS_DEFINE_ERROR(TSDB_CODE_SERV_NO_DISKSPACE, 0, 0x0403, "server no diskspace") TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 0x0404, "server out of memory") diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 3befeab4aa1..1037ff30ccd 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -721,7 +721,7 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) { return TSDB_CODE_SUCCESS; } else { mError("table:%s, failed to drop table, table not exist", pDrop->tableId); - return TSDB_CODE_INVALID_TABLE; + return TSDB_CODE_INVALID_TABLE_ID; } } @@ -749,7 +749,7 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) { if (pMsg->pTable == NULL) { if (!pInfo->createFlag) { mError("table:%s, failed to get table meta, table not exist", pInfo->tableId); - return TSDB_CODE_INVALID_TABLE; + return TSDB_CODE_INVALID_TABLE_ID; } else { mTrace("table:%s, failed to get table meta, start auto create table ", pInfo->tableId); return mnodeAutoCreateChildTable(pMsg); @@ -786,7 +786,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) { if (pStable->schema == NULL) { free(pStable); mError("table:%s, failed to create, no schema input", pCreate->tableId); - return TSDB_CODE_INVALID_TABLE; + return TSDB_CODE_INVALID_TABLE_ID; } memcpy(pStable->schema, pCreate->schema, numOfCols * sizeof(SSchema)); @@ -1430,7 +1430,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb if (pSuperTable == NULL) { mError("table:%s, corresponding super table:%s does not exist", pCreate->tableId, pTagData->name); free(pTable); - terrno = TSDB_CODE_INVALID_TABLE; + terrno = TSDB_CODE_INVALID_TABLE_ID; return NULL; } mnodeDecTableRef(pSuperTable); @@ -1888,7 +1888,7 @@ static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) { SChildTableObj *pTable = mnodeGetTableByPos(pCfg->vgId, pCfg->sid); if (pTable == NULL) { mError("dnode:%d, vgId:%d sid:%d, table not found", pCfg->dnodeId, pCfg->vgId, pCfg->sid); - return TSDB_CODE_NOT_ACTIVE_TABLE; + return TSDB_CODE_INVALID_TABLE_ID; } SMDCreateTableMsg *pCreate = NULL; @@ -2200,7 +2200,7 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) { if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pAlter->tableId); if (pMsg->pTable == NULL) { mError("table:%s, failed to alter table, table not exist", pMsg->pTable->tableId); - return TSDB_CODE_INVALID_TABLE; + return TSDB_CODE_INVALID_TABLE_ID; } pAlter->type = htons(pAlter->type); diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index c8ff6566b6b..fb6250e7c05 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -716,14 +716,14 @@ static int32_t mnodeProcessVnodeCfgMsg(SMnodeMsg *pMsg) { SDnodeObj *pDnode = mnodeGetDnode(pCfg->dnodeId); if (pDnode == NULL) { mTrace("dnode:%s, invalid dnode", taosIpStr(pCfg->dnodeId), pCfg->vgId); - return TSDB_CODE_NOT_ACTIVE_VNODE; + return TSDB_CODE_INVALID_VGROUP_ID; } mnodeDecDnodeRef(pDnode); SVgObj *pVgroup = mnodeGetVgroup(pCfg->vgId); if (pVgroup == NULL) { mTrace("dnode:%s, vgId:%d, no vgroup info", taosIpStr(pCfg->dnodeId), pCfg->vgId); - return TSDB_CODE_NOT_ACTIVE_VNODE; + return TSDB_CODE_INVALID_VGROUP_ID; } mnodeDecVgroupRef(pVgroup); diff --git a/src/plugins/http/src/httpJson.c b/src/plugins/http/src/httpJson.c index cbca19b57f0..74e3c409a1c 100644 --- a/src/plugins/http/src/httpJson.c +++ b/src/plugins/http/src/httpJson.c @@ -445,10 +445,10 @@ void httpJsonPairStatus(JsonBuf* buf, int code) { httpJsonItemToken(buf); if (code == TSDB_CODE_DB_NOT_SELECTED) { httpJsonPair(buf, "desc", 4, "failed to create database", 23); - } else if (code == TSDB_CODE_INVALID_TABLE) { + } else if (code == TSDB_CODE_INVALID_TABLE_ID) { httpJsonPair(buf, "desc", 4, "failed to create table", 22); } else httpJsonPair(buf, "desc", 4, (char*)tstrerror(code), (int)strlen(tstrerror(code))); } } -} \ No newline at end of file +} diff --git a/src/plugins/http/src/tgJson.c b/src/plugins/http/src/tgJson.c index cb9c42e7920..27059010b87 100644 --- a/src/plugins/http/src/tgJson.c +++ b/src/plugins/http/src/tgJson.c @@ -111,7 +111,7 @@ bool tgCheckFinished(struct HttpContext *pContext, HttpSqlCmd *cmd, int code) { pContext->ipstr); return false; } - } else if (code == TSDB_CODE_INVALID_TABLE) { + } else if (code == TSDB_CODE_INVALID_TABLE_ID) { cmd->cmdState = HTTP_CMD_STATE_RUN_FINISHED; if (multiCmds->cmds[multiCmds->pos - 1].cmdState == HTTP_CMD_STATE_NOT_RUN_YET) { multiCmds->pos = (int16_t)(multiCmds->pos - 2); @@ -151,4 +151,4 @@ void tgSetNextCmd(struct HttpContext *pContext, HttpSqlCmd *cmd, int code) { } else { multiCmds->pos++; } -} \ No newline at end of file +} diff --git a/src/vnode/src/vnodeRead.c b/src/vnode/src/vnodeRead.c index 03407a5aa21..c41171a36e1 100644 --- a/src/vnode/src/vnodeRead.c +++ b/src/vnode/src/vnodeRead.c @@ -43,7 +43,7 @@ int32_t vnodeProcessRead(void *param, int msgType, void *pCont, int32_t contLen, return TSDB_CODE_MSG_NOT_PROCESSED; if (pVnode->status == TAOS_VN_STATUS_DELETING || pVnode->status == TAOS_VN_STATUS_CLOSING) - return TSDB_CODE_NOT_ACTIVE_VNODE; + return TSDB_CODE_INVALID_VGROUP_ID; return (*vnodeProcessReadMsgFp[msgType])(pVnode, pCont, contLen, ret); } diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 6d65d10335e..09cb2d3fac8 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -53,7 +53,7 @@ int32_t vnodeProcessWrite(void *param1, int qtype, void *param2, void *item) { if (pHead->version == 0) { // from client or CQ if (pVnode->status != TAOS_VN_STATUS_READY) - return TSDB_CODE_NOT_ACTIVE_VNODE; + return TSDB_CODE_INVALID_VGROUP_ID; // it may be in deleting or closing state if (pVnode->syncCfg.replica > 1 && pVnode->role != TAOS_SYNC_ROLE_MASTER) return TSDB_CODE_NOT_READY; From 6482d537234fac3e427783d3814c76afb86dda69 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sat, 30 May 2020 05:55:51 +0000 Subject: [PATCH 78/85] [TD-437] fix invalid read while auto create table --- src/mnode/src/mnodeTable.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index b2d7ec768f6..f51b242ca38 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -1754,14 +1754,14 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) { pCreateMsg->contLen = htonl(contLen); memcpy(pCreateMsg->schema, pInfo->tags, contLen - sizeof(SCMCreateTableMsg)); + mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, pInfo->tags); rpcFreeCont(pMsg->rpcMsg.pCont); pMsg->rpcMsg.msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; pMsg->rpcMsg.pCont = pCreateMsg; pMsg->rpcMsg.contLen = contLen; - mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, pInfo->tags); - + return TSDB_CODE_ACTION_NEED_REPROCESSED; } From 488addaf448881ed902bac6c58522604f7264682 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sat, 30 May 2020 05:56:24 +0000 Subject: [PATCH 79/85] [TD-437] fix definite lost while process show msg in mnode --- src/mnode/inc/mnodeDef.h | 2 +- src/mnode/src/mnodeShow.c | 80 +++++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/src/mnode/inc/mnodeDef.h b/src/mnode/inc/mnodeDef.h index aacf8f419ff..594fd3fd50b 100644 --- a/src/mnode/inc/mnodeDef.h +++ b/src/mnode/inc/mnodeDef.h @@ -220,6 +220,7 @@ typedef struct SAcctObj { typedef struct { int8_t type; + int32_t index; char db[TSDB_DB_NAME_LEN + 1]; void * pIter; int16_t numOfColumns; @@ -228,7 +229,6 @@ typedef struct { int32_t numOfReads; int16_t offset[TSDB_MAX_COLUMNS]; int16_t bytes[TSDB_MAX_COLUMNS]; - void * signature; uint16_t payloadLen; char payload[]; } SShowObj; diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index d28d0b5b307..d342ea2d650 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -47,13 +47,14 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *mnodeMsg); static int32_t mnodeProcessUseMsg(SMnodeMsg *mnodeMsg); static void mnodeFreeShowObj(void *data); -static bool mnodeCheckShowObj(SShowObj *pShow); +static bool mnodeAccquireShowObj(SShowObj *pShow); static bool mnodeCheckShowFinished(SShowObj *pShow); -static void *mnodeSaveShowObj(SShowObj *pShow, int32_t size); -static void mnodeCleanupShowObj(void *pShow, bool forceRemove); +static void *mnodePutShowObj(SShowObj *pShow, int32_t size); +static void mnodeReleaseShowObj(void *pShow, bool forceRemove); extern void *tsMnodeTmr; -static void *tsQhandleCache = NULL; +static void *tsMnodeShowCache = NULL; +static int32_t tsShowObjIndex = 0; static SShowMetaFp tsMnodeShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; static SShowRetrieveFp tsMnodeShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; @@ -64,14 +65,15 @@ int32_t mnodeInitShow() { mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mnodeProcessConnectMsg); mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mnodeProcessUseMsg); - tsQhandleCache = taosCacheInitWithCb(tsMnodeTmr, 10, mnodeFreeShowObj); + tsMnodeShowCache = taosCacheInitWithCb(tsMnodeTmr, 10, mnodeFreeShowObj); return 0; } void mnodeCleanUpShow() { - if (tsQhandleCache != NULL) { - taosCacheCleanup(tsQhandleCache); - tsQhandleCache = NULL; + if (tsMnodeShowCache != NULL) { + mPrint("show cache is cleanup"); + taosCacheCleanup(tsMnodeShowCache); + tsMnodeShowCache = NULL; } } @@ -118,13 +120,12 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen); SShowObj *pShow = (SShowObj *) calloc(1, showObjSize); - pShow->signature = pShow; pShow->type = pShowMsg->type; pShow->payloadLen = htons(pShowMsg->payloadLen); strcpy(pShow->db, pShowMsg->db); memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); - pShow = mnodeSaveShowObj(pShow, showObjSize); + pShow = mnodePutShowObj(pShow, showObjSize); if (pShow == NULL) { return TSDB_CODE_SERV_OUT_OF_MEMORY; } @@ -132,21 +133,22 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) { int32_t size = sizeof(SCMShowRsp) + sizeof(SSchema) * TSDB_MAX_COLUMNS + TSDB_EXTRA_PAYLOAD_SIZE; SCMShowRsp *pShowRsp = rpcMallocCont(size); if (pShowRsp == NULL) { - mnodeFreeShowObj(pShow); + mnodeReleaseShowObj(pShow, true); return TSDB_CODE_SERV_OUT_OF_MEMORY; } pShowRsp->qhandle = htobe64((uint64_t) pShow); - mTrace("show:%p, type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); + mTrace("%p, show type:%s, start to get meta", pShow, mnodeGetShowType(pShowMsg->type)); int32_t code = (*tsMnodeShowMetaFp[pShowMsg->type])(&pShowRsp->tableMeta, pShow, pMsg->rpcMsg.handle); if (code == 0) { pMsg->rpcRsp.rsp = pShowRsp; pMsg->rpcRsp.len = sizeof(SCMShowRsp) + sizeof(SSchema) * pShow->numOfColumns; + mnodeReleaseShowObj(pShow, false); return TSDB_CODE_SUCCESS; } else { - mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); + mError("%p, show type:%s, failed to get meta, reason:%s", pShow, mnodeGetShowType(pShowMsg->type), tstrerror(code)); rpcFreeCont(pShowRsp); - mnodeCleanupShowObj(pShow, true); + mnodeReleaseShowObj(pShow, true); return code; } } @@ -159,22 +161,20 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { pRetrieve->qhandle = htobe64(pRetrieve->qhandle); SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; - mTrace("show:%p, type:%s, retrieve data", pShow, mnodeGetShowType(pShow->type)); + mTrace("%p, show type:%s, retrieve data", pShow, mnodeGetShowType(pShow->type)); /* * in case of server restart, apps may hold qhandle created by server before * restart, which is actually invalid, therefore, signature check is required. */ - if (!mnodeCheckShowObj(pShow)) { - mError("retrieve:%p, qhandle:%p is invalid", pRetrieve, pShow); + if (!mnodeAccquireShowObj(pShow)) { + mError("%p, show is invalid", pShow); return TSDB_CODE_INVALID_QHANDLE; } if (mnodeCheckShowFinished(pShow)) { - mTrace("retrieve:%p, qhandle:%p already read finished, numOfReads:%d numOfRows:%d", pRetrieve, pShow, pShow->numOfReads, pShow->numOfRows); + mTrace("%p, show is already read finished, numOfReads:%d numOfRows:%d", pShow, pShow->numOfReads, pShow->numOfRows); pShow->numOfReads = pShow->numOfRows; - //mnodeCleanupShowObj(pShow, true); - //return TSDB_CODE_SUCCESS; } if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) { @@ -200,7 +200,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { if (rowsRead < 0) { rpcFreeCont(pRsp); - mnodeCleanupShowObj(pShow, false); + mnodeReleaseShowObj(pShow, false); assert(false); return TSDB_CODE_ACTION_IN_PROGRESS; } @@ -211,10 +211,11 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { pMsg->rpcRsp.rsp = pRsp; pMsg->rpcRsp.len = size; - if (rowsToRead == 0) { - mnodeCleanupShowObj(pShow, true); + if (rowsToRead == 0 || (rowsRead == rowsToRead)) { + pRsp->completed = 1; + mnodeReleaseShowObj(pShow, true); } else { - mnodeCleanupShowObj(pShow, false); + mnodeReleaseShowObj(pShow, false); } return TSDB_CODE_SUCCESS; @@ -318,24 +319,29 @@ static bool mnodeCheckShowFinished(SShowObj *pShow) { return false; } -static bool mnodeCheckShowObj(SShowObj *pShow) { - SShowObj *pSaved = taosCacheAcquireByData(tsQhandleCache, pShow); +static bool mnodeAccquireShowObj(SShowObj *pShow) { + char key[10]; + sprintf(key, "%d", pShow->index); + + SShowObj *pSaved = taosCacheAcquireByName(tsMnodeShowCache, key); if (pSaved == pShow) { + mTrace("%p, show is accquired from cache", pShow); return true; } else { - mTrace("show:%p, is already released", pShow); return false; } } -static void *mnodeSaveShowObj(SShowObj *pShow, int32_t size) { - if (tsQhandleCache != NULL) { - char key[24]; - sprintf(key, "show:%p", pShow); - SShowObj *newQhandle = taosCachePut(tsQhandleCache, key, pShow, size, 60); +static void *mnodePutShowObj(SShowObj *pShow, int32_t size) { + if (tsMnodeShowCache != NULL) { + char key[10]; + pShow->index = atomic_add_fetch_32(&tsShowObjIndex, 1); + sprintf(key, "%d", pShow->index); + + SShowObj *newQhandle = taosCachePut(tsMnodeShowCache, key, pShow, size, 60); free(pShow); - mTrace("show:%p, is saved", newQhandle); + mTrace("%p, show is put into cache", newQhandle); return newQhandle; } @@ -345,10 +351,10 @@ static void *mnodeSaveShowObj(SShowObj *pShow, int32_t size) { static void mnodeFreeShowObj(void *data) { SShowObj *pShow = data; sdbFreeIter(pShow->pIter); - mTrace("show:%p, is destroyed", pShow); + mTrace("%p, show is destroyed", pShow); } -static void mnodeCleanupShowObj(void *pShow, bool forceRemove) { - mTrace("show:%p, is released, force:%s", pShow, forceRemove ? "true" : "false"); - taosCacheRelease(tsQhandleCache, &pShow, forceRemove); +static void mnodeReleaseShowObj(void *pShow, bool forceRemove) { + mTrace("%p, show is released, force:%s", pShow, forceRemove ? "true" : "false"); + taosCacheRelease(tsMnodeShowCache, &pShow, forceRemove); } From 87e4d500df3b7ffb56059af3b2371b67d3c1e01b Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sat, 30 May 2020 08:34:56 +0000 Subject: [PATCH 80/85] [TD-437] stable refcount error while drop db --- src/mnode/inc/mnodeVgroup.h | 3 ++- src/mnode/src/mnodeDb.c | 18 +++---------- src/mnode/src/mnodeShow.c | 4 +-- src/mnode/src/mnodeTable.c | 51 ++++++++++++++++--------------------- src/mnode/src/mnodeVgroup.c | 28 ++++++++++++++++---- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/mnode/inc/mnodeVgroup.h b/src/mnode/inc/mnodeVgroup.h index ac8eb73296e..d61145d9b82 100644 --- a/src/mnode/inc/mnodeVgroup.h +++ b/src/mnode/inc/mnodeVgroup.h @@ -27,7 +27,8 @@ void mnodeCleanupVgroups(); SVgObj *mnodeGetVgroup(int32_t vgId); void mnodeIncVgroupRef(SVgObj *pVgroup); void mnodeDecVgroupRef(SVgObj *pVgroup); -void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg); +void mnodeDropAllDbVgroups(SDbObj *pDropDb); +void mnodeSendDropAllDbVgroupsMsg(SDbObj *pDropDb); void mnodeDropAllDnodeVgroups(SDnodeObj *pDropDnode); void mnodeUpdateAllDbVgroups(SDbObj *pAlterDb); diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index b904e06e977..0ad835279e4 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -81,10 +81,10 @@ static int32_t mnodeDbActionDelete(SSdbOper *pOper) { SDbObj *pDb = pOper->pObj; SAcctObj *pAcct = mnodeGetAcct(pDb->acct); - mnodeDropDbFromAcct(pAcct, pDb); mnodeDropAllChildTables(pDb); mnodeDropAllSuperTables(pDb); - mnodeDropAllDbVgroups(pDb, false); + mnodeDropAllDbVgroups(pDb); + mnodeDropDbFromAcct(pAcct, pDb); mnodeDecAcctRef(pAcct); return TSDB_CODE_SUCCESS; @@ -998,19 +998,7 @@ static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg) { return code; } -#if 1 - mnodeDropAllDbVgroups(pMsg->pDb, true); -#else - SVgObj *pVgroup = pMsg->pDb->pHead; - if (pVgroup != NULL) { - mPrint("vgId:%d, will be dropped", pVgroup->vgId); - SMnodeMsg *newMsg = mnodeCloneMsg(pMsg); - newMsg->ahandle = pVgroup; - newMsg->expected = pVgroup->numOfVnodes; - mnodeDropVgroup(pVgroup, newMsg); - return; - } -#endif + mnodeSendDropAllDbVgroupsMsg(pMsg->pDb); mTrace("db:%s, all vgroups is dropped", pMsg->pDb->name); return mnodeDropDb(pMsg); diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c index d342ea2d650..20616bfbcda 100644 --- a/src/mnode/src/mnodeShow.c +++ b/src/mnode/src/mnodeShow.c @@ -211,13 +211,13 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) { pMsg->rpcRsp.rsp = pRsp; pMsg->rpcRsp.len = size; - if (rowsToRead == 0 || (rowsRead == rowsToRead)) { + if (rowsToRead == 0 || rowsRead == rowsToRead) { pRsp->completed = 1; mnodeReleaseShowObj(pShow, true); } else { mnodeReleaseShowObj(pShow, false); } - + return TSDB_CODE_SUCCESS; } diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index f51b242ca38..7a24cb08789 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -148,37 +148,30 @@ static int32_t mnodeChildTableActionDelete(SSdbOper *pOper) { return TSDB_CODE_INVALID_VGROUP_ID; } - SVgObj *pVgroup = mnodeGetVgroup(pTable->vgId); - if (pVgroup == NULL) { - return TSDB_CODE_INVALID_VGROUP_ID; - } - mnodeDecVgroupRef(pVgroup); - - SDbObj *pDb = mnodeGetDb(pVgroup->dbName); - if (pDb == NULL) { - mError("ctable:%s, vgId:%d not in DB:%s", pTable->info.tableId, pVgroup->vgId, pVgroup->dbName); - return TSDB_CODE_INVALID_DB; - } - mnodeDecDbRef(pDb); - - SAcctObj *pAcct = mnodeGetAcct(pDb->acct); - if (pAcct == NULL) { - mError("ctable:%s, acct:%s not exists", pTable->info.tableId, pDb->acct); - return TSDB_CODE_INVALID_ACCT; - } - mnodeDecAcctRef(pAcct); + SVgObj *pVgroup = NULL; + SDbObj *pDb = NULL; + SAcctObj *pAcct = NULL; + + pVgroup = mnodeGetVgroup(pTable->vgId); + if (pVgroup != NULL) pDb = mnodeGetDb(pVgroup->dbName); + if (pDb != NULL) pAcct = mnodeGetAcct(pDb->acct); if (pTable->info.type == TSDB_CHILD_TABLE) { grantRestore(TSDB_GRANT_TIMESERIES, pTable->superTable->numOfColumns - 1); - pAcct->acctInfo.numOfTimeSeries -= (pTable->superTable->numOfColumns - 1); + if (pAcct != NULL) pAcct->acctInfo.numOfTimeSeries -= (pTable->superTable->numOfColumns - 1); mnodeRemoveTableFromStable(pTable->superTable, pTable); mnodeDecTableRef(pTable->superTable); } else { grantRestore(TSDB_GRANT_TIMESERIES, pTable->numOfColumns - 1); - pAcct->acctInfo.numOfTimeSeries -= (pTable->numOfColumns - 1); + if (pAcct != NULL) pAcct->acctInfo.numOfTimeSeries -= (pTable->numOfColumns - 1); } - mnodeRemoveTableFromDb(pDb); - mnodeRemoveTableFromVgroup(pVgroup, pTable); + + if (pDb != NULL) mnodeRemoveTableFromDb(pDb); + if (pVgroup != NULL) mnodeRemoveTableFromVgroup(pVgroup, pTable); + + mnodeDecVgroupRef(pVgroup); + mnodeDecDbRef(pDb); + mnodeDecAcctRef(pAcct); return TSDB_CODE_SUCCESS; } @@ -693,10 +686,10 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) { } if (pCreate->numOfTags != 0) { - mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); + mTrace("table:%s, create stable msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); return mnodeProcessCreateSuperTableMsg(pMsg); } else { - mTrace("table:%s, create msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); + mTrace("table:%s, create ctable msg is received from thandle:%p", pCreate->tableId, pMsg->rpcMsg.handle); return mnodeProcessCreateChildTableMsg(pMsg); } } @@ -1288,7 +1281,7 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { } pRsp->numOfTables = htonl(numOfTable); - char* msg = (char*) pRsp + sizeof(SCMSTableVgroupRspMsg); + char *msg = (char *)pRsp + sizeof(SCMSTableVgroupRspMsg); for (int32_t i = 0; i < numOfTable; ++i) { char *stableName = (char*)pInfo + sizeof(SCMSTableVgroupMsg) + (TSDB_TABLE_ID_LEN) * i; @@ -1318,6 +1311,7 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { } taosHashDestroyIter(pIter); + mnodeDecTableRef(pTable); pVgroupInfo->numOfVgroups = htonl(vgSize); @@ -1738,7 +1732,7 @@ static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) { static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) { SCMTableInfoMsg *pInfo = pMsg->rpcMsg.pCont; - STagData* pTag = (STagData*)pInfo->tags; + STagData *pTag = (STagData *)pInfo->tags; int32_t contLen = sizeof(SCMCreateTableMsg) + offsetof(STagData, data) + ntohl(pTag->dataLen); SCMCreateTableMsg *pCreateMsg = rpcMallocCont(contLen); @@ -1754,13 +1748,12 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) { pCreateMsg->contLen = htonl(contLen); memcpy(pCreateMsg->schema, pInfo->tags, contLen - sizeof(SCMCreateTableMsg)); - mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, pInfo->tags); + mTrace("table:%s, start to create on demand, stable:%s", pInfo->tableId, ((STagData *)(pCreateMsg->schema))->name); rpcFreeCont(pMsg->rpcMsg.pCont); pMsg->rpcMsg.msgType = TSDB_MSG_TYPE_CM_CREATE_TABLE; pMsg->rpcMsg.pCont = pCreateMsg; pMsg->rpcMsg.contLen = contLen; - return TSDB_CODE_ACTION_NEED_REPROCESSED; } diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index c8ff6566b6b..76f87b441c9 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -784,7 +784,7 @@ void mnodeUpdateAllDbVgroups(SDbObj *pAlterDb) { mPrint("db:%s, all vgroups is updated in sdb", pAlterDb->name); } -void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { +void mnodeDropAllDbVgroups(SDbObj *pDropDb) { void * pIter = NULL; int32_t numOfVgroups = 0; SVgObj *pVgroup = NULL; @@ -802,10 +802,6 @@ void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { }; sdbDeleteRow(&oper); numOfVgroups++; - - if (sendMsg) { - mnodeSendDropVgroupMsg(pVgroup, NULL); - } } mnodeDecVgroupRef(pVgroup); @@ -815,3 +811,25 @@ void mnodeDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { mPrint("db:%s, all vgroups:%d is dropped from sdb", pDropDb->name, numOfVgroups); } + +void mnodeSendDropAllDbVgroupsMsg(SDbObj *pDropDb) { + void * pIter = NULL; + int32_t numOfVgroups = 0; + SVgObj *pVgroup = NULL; + + mPrint("db:%s, all vgroups will be dropped in dnode", pDropDb->name); + while (1) { + pIter = mnodeGetNextVgroup(pIter, &pVgroup); + if (pVgroup == NULL) break; + + if (pVgroup->pDb == pDropDb) { + mnodeSendDropVgroupMsg(pVgroup, NULL); + } + + mnodeDecVgroupRef(pVgroup); + } + + sdbFreeIter(pIter); + + mPrint("db:%s, all vgroups:%d drop msg is sent to dnode", pDropDb->name, numOfVgroups); +} \ No newline at end of file From 713ebff1c0ca8fecd8bc60ebec9fa037f536c42f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sat, 30 May 2020 10:12:11 +0000 Subject: [PATCH 81/85] [TD-437] fix crash in client, while mnode return unexpceted msg --- src/client/src/tscSql.c | 6 +++--- src/client/src/tscUtil.c | 3 +-- src/mnode/src/mnodeTable.c | 32 +++++++++++++++++++++++++------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 7534a324099..1ab14a4eae1 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -579,9 +579,9 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) { if ((pCmd->command == TSDB_SQL_SELECT || pCmd->command == TSDB_SQL_SHOW || pCmd->command == TSDB_SQL_RETRIEVE || - pCmd->command == TSDB_SQL_FETCH) && - (pRes->code != TSDB_CODE_QUERY_CANCELLED && ((pCmd->command < TSDB_SQL_LOCAL && pRes->completed == false) || - (pRes->code == TSDB_CODE_SUCCESS && pCmd->command == TSDB_SQL_SELECT && pSql->pStream == NULL && pTableMetaInfo->pTableMeta != NULL)))) { + pCmd->command == TSDB_SQL_FETCH) && pRes->code == TSDB_CODE_SUCCESS && + ((pCmd->command < TSDB_SQL_LOCAL && pRes->completed == false) || + (pCmd->command == TSDB_SQL_SELECT && pSql->pStream == NULL && pTableMetaInfo->pTableMeta != NULL))) { pCmd->command = (pCmd->command > TSDB_SQL_MGMT) ? TSDB_SQL_RETRIEVE : TSDB_SQL_FETCH; tscTrace("%p send msg to free qhandle in vnode, code:%d, numOfRows:%d, command:%s", pSql, pRes->code, pRes->numOfRows, diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 4c8722ecea4..19255462225 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1850,8 +1850,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, void (*fp)(), void STableMetaInfo* pFinalInfo = NULL; if (pPrevSql == NULL) { - STableMeta* pTableMeta = taosCacheAcquireByName(tscCacheHandle, name); - // todo handle error + STableMeta* pTableMeta = taosCacheAcquireByData(tscCacheHandle, pTableMetaInfo->pTableMeta); // get by name may failed due to the cache cleanup assert(pTableMeta != NULL); pFinalInfo = tscAddTableMetaInfo(pNewQueryInfo, name, pTableMeta, pTableMetaInfo->vgroupList, pTableMetaInfo->tagColList); } else { // transfer the ownership of pTableMeta to the newly create sql object. diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index 7a24cb08789..97d7422cca3 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -1269,9 +1269,9 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { for (int32_t i = 0; i < numOfTable; ++i) { char *stableName = (char*)pInfo + sizeof(SCMSTableVgroupMsg) + (TSDB_TABLE_ID_LEN) * i; SSuperTableObj *pTable = mnodeGetSuperTable(stableName); - if (pTable->vgHash != NULL) { + if (pTable != NULL && pTable->vgHash != NULL) { contLen += (taosHashGetSize(pTable->vgHash) * sizeof(SCMVgroupInfo) + sizeof(SVgroupsInfo)); - } + } mnodeDecTableRef(pTable); } @@ -1280,12 +1280,23 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { return TSDB_CODE_SERV_OUT_OF_MEMORY; } - pRsp->numOfTables = htonl(numOfTable); + pRsp->numOfTables = 0; char *msg = (char *)pRsp + sizeof(SCMSTableVgroupRspMsg); for (int32_t i = 0; i < numOfTable; ++i) { char *stableName = (char*)pInfo + sizeof(SCMSTableVgroupMsg) + (TSDB_TABLE_ID_LEN) * i; SSuperTableObj *pTable = mnodeGetSuperTable(stableName); + if (pTable == NULL) { + mError("stable:%s, not exist while get stable vgroup info", stableName); + mnodeDecTableRef(pTable); + continue; + } + if (pTable->vgHash == NULL) { + mError("stable:%s, not vgroup exist while get stable vgroup info", stableName); + mnodeDecTableRef(pTable); + continue; + } + SVgroupsInfo *pVgroupInfo = (SVgroupsInfo *)msg; SHashMutableIterator *pIter = taosHashCreateIter(pTable->vgHash); @@ -1317,12 +1328,19 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) { // one table is done, try the next table msg += sizeof(SVgroupsInfo) + vgSize * sizeof(SCMVgroupInfo); + pRsp->numOfTables++; } - pMsg->rpcRsp.rsp = pRsp; - pMsg->rpcRsp.len = msg - (char *)pRsp; + if (pRsp->numOfTables != numOfTable) { + rpcFreeCont(pRsp); + return TSDB_CODE_INVALID_TABLE_ID; + } else { + pRsp->numOfTables = htonl(pRsp->numOfTables); + pMsg->rpcRsp.rsp = pRsp; + pMsg->rpcRsp.len = msg - (char *)pRsp; - return TSDB_CODE_SUCCESS; + return TSDB_CODE_SUCCESS; + } } static void mnodeProcessDropSuperTableRsp(SRpcMsg *rpcMsg) { @@ -1423,7 +1441,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb SSuperTableObj *pSuperTable = mnodeGetSuperTable(pTagData->name); if (pSuperTable == NULL) { mError("table:%s, corresponding super table:%s does not exist", pCreate->tableId, pTagData->name); - free(pTable); + mnodeDestroyChildTable(pTable); terrno = TSDB_CODE_INVALID_TABLE; return NULL; } From 109e09b4a33de8fe309d93879db08d68c941cdfb Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sat, 30 May 2020 10:20:26 +0000 Subject: [PATCH 82/85] [TD-437] fix compile error after merge develop --- src/mnode/src/mnodeTable.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index b96ddb52555..84a1f659d58 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -1442,7 +1442,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb if (pSuperTable == NULL) { mError("table:%s, corresponding super table:%s does not exist", pCreate->tableId, pTagData->name); mnodeDestroyChildTable(pTable); - terrno = TSDB_CODE_INVALID_TABLE; + terrno = TSDB_CODE_INVALID_TABLE_ID; return NULL; } mnodeDecTableRef(pSuperTable); From 08b087ec9132f57c022d3aeb7e21529fb16ba657 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Sat, 30 May 2020 10:47:57 +0000 Subject: [PATCH 83/85] add a queue for mgmt message from mnode --- src/dnode/inc/dnodeMgmt.h | 2 +- src/dnode/src/dnodeMgmt.c | 104 +++++++++++++++++++++++++++++++------- src/dnode/src/dnodePeer.c | 8 +-- 3 files changed, 91 insertions(+), 23 deletions(-) diff --git a/src/dnode/inc/dnodeMgmt.h b/src/dnode/inc/dnodeMgmt.h index 4d15dc5a863..826f4ff1c1d 100644 --- a/src/dnode/inc/dnodeMgmt.h +++ b/src/dnode/inc/dnodeMgmt.h @@ -22,7 +22,7 @@ extern "C" { int32_t dnodeInitMgmt(); void dnodeCleanupMgmt(); -void dnodeDispatchToDnodeMgmt(SRpcMsg *rpcMsg); +void dnodeDispatchToMgmtQueue(SRpcMsg *rpcMsg); void* dnodeGetVnode(int32_t vgId); int32_t dnodeGetVnodeStatus(void *pVnode); diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 14c2a725d92..1dd6952c6e9 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -22,6 +22,7 @@ #include "ttimer.h" #include "tsdb.h" #include "twal.h" +#include "tqueue.h" #include "tsync.h" #include "ttime.h" #include "ttimer.h" @@ -46,6 +47,9 @@ static SRpcIpSet tsDMnodeIpSetForPeer = {0}; static SRpcIpSet tsDMnodeIpSetForShell = {0}; static SDMMnodeInfos tsDMnodeInfos = {0}; static SDMDnodeCfg tsDnodeCfg = {0}; +static taos_qset tsMgmtQset = NULL; +static taos_queue tsMgmtQueue = NULL; +static pthread_t tsQthread; static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes); static bool dnodeReadMnodeInfos(); @@ -55,6 +59,7 @@ static bool dnodeReadDnodeCfg(); static void dnodeSaveDnodeCfg(); static void dnodeProcessStatusRsp(SRpcMsg *pMsg); static void dnodeSendStatusMsg(void *handle, void *tmrId); +static void *dnodeProcessMgmtQueue(void *param); static int32_t dnodeOpenVnodes(); static void dnodeCloseVnodes(); @@ -74,12 +79,6 @@ int32_t dnodeInitMgmt() { dnodeReadDnodeCfg(); tsRebootTime = taosGetTimestampSec(); - tsDnodeTmr = taosTmrInit(100, 200, 60000, "DND-DM"); - if (tsDnodeTmr == NULL) { - dError("failed to init dnode timer"); - return -1; - } - if (!dnodeReadMnodeInfos()) { memset(&tsDMnodeIpSetForPeer, 0, sizeof(SRpcIpSet)); memset(&tsDMnodeIpSetForShell, 0, sizeof(SRpcIpSet)); @@ -118,8 +117,45 @@ int32_t dnodeInitMgmt() { } } - int32_t code = dnodeOpenVnodes(); + // create the queue and thread to handle the message + tsMgmtQset = taosOpenQset(); + if (tsMgmtQset == NULL) { + dError("failed to create the mgmt queue set"); + dnodeCleanupMgmt(); + return -1; + } + + tsMgmtQueue = taosOpenQueue(); + if (tsMgmtQueue == NULL) { + dError("failed to create the mgmt queue"); + dnodeCleanupMgmt(); + return -1; + } + + taosAddIntoQset(tsMgmtQset, tsMgmtQueue, NULL); + + pthread_attr_t thAttr; + pthread_attr_init(&thAttr); + pthread_attr_setdetachstate(&thAttr, PTHREAD_CREATE_JOINABLE); + + int32_t code = pthread_create(&tsQthread, &thAttr, dnodeProcessMgmtQueue, NULL); + pthread_attr_destroy(&thAttr); + if (code != 0) { + dError("failed to create thread to process mgmt queue, reason:%s", strerror(errno)); + dnodeCleanupMgmt(); + return -1; + } + + code = dnodeOpenVnodes(); if (code != TSDB_CODE_SUCCESS) { + dnodeCleanupMgmt(); + return -1; + } + + tsDnodeTmr = taosTmrInit(100, 200, 60000, "DND-DM"); + if (tsDnodeTmr == NULL) { + dError("failed to init dnode timer"); + dnodeCleanupMgmt(); return -1; } @@ -142,22 +178,54 @@ void dnodeCleanupMgmt() { } dnodeCloseVnodes(); + + if (tsMgmtQset) taosQsetThreadResume(tsMgmtQset); + if (tsQthread) pthread_join(tsQthread, NULL); + + if (tsMgmtQueue) taosCloseQueue(tsMgmtQueue); + if (tsMgmtQset) taosCloseQset(tsMgmtQset); + tsMgmtQset = NULL; + tsMgmtQueue = NULL; + } -void dnodeDispatchToDnodeMgmt(SRpcMsg *pMsg) { - SRpcMsg rsp; +void dnodeDispatchToMgmtQueue(SRpcMsg *pMsg) { + void *item; - if (dnodeProcessMgmtMsgFp[pMsg->msgType]) { - rsp.code = (*dnodeProcessMgmtMsgFp[pMsg->msgType])(pMsg); - } else { - rsp.code = TSDB_CODE_MSG_NOT_PROCESSED; - } + item = taosAllocateQitem(sizeof(SRpcMsg)); + memcpy(item, pMsg, sizeof(SRpcMsg)); + + taosWriteQitem(tsMgmtQueue, 1, item); +} + +static void *dnodeProcessMgmtQueue(void *param) { + SRpcMsg *pMsg; + SRpcMsg rsp; + int type; + void *handle; - rsp.handle = pMsg->handle; - rsp.pCont = NULL; - rpcSendResponse(&rsp); + while (1) { + if (taosReadQitemFromQset(tsMgmtQset, &type, (void **) &pMsg, &handle) == 0) { + dTrace("dnode mgmt got no message from qset, exit ..."); + break; + } + + dTrace("%p, msg:%s will be processed", pMsg->ahandle, taosMsg[pMsg->msgType]); + if (dnodeProcessMgmtMsgFp[pMsg->msgType]) { + rsp.code = (*dnodeProcessMgmtMsgFp[pMsg->msgType])(pMsg); + } else { + rsp.code = TSDB_CODE_MSG_NOT_PROCESSED; + } + + rsp.handle = pMsg->handle; + rsp.pCont = NULL; + rpcSendResponse(&rsp); + + rpcFreeCont(pMsg->pCont); + taosFreeQitem(pMsg); + } - rpcFreeCont(pMsg->pCont); + return NULL; } static int32_t dnodeGetVnodeList(int32_t vnodeList[], int32_t *numOfVnodes) { diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c index 9a7b0837e81..ea3af08d714 100644 --- a/src/dnode/src/dnodePeer.c +++ b/src/dnode/src/dnodePeer.c @@ -43,10 +43,10 @@ int32_t dnodeInitServer() { dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_ALTER_TABLE] = dnodeDispatchToVnodeWriteQueue; dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_DROP_STABLE] = dnodeDispatchToVnodeWriteQueue; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CREATE_VNODE] = dnodeDispatchToDnodeMgmt; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_DROP_VNODE] = dnodeDispatchToDnodeMgmt; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_ALTER_STREAM] = dnodeDispatchToDnodeMgmt; - dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CONFIG_DNODE] = dnodeDispatchToDnodeMgmt; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CREATE_VNODE] = dnodeDispatchToMgmtQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_DROP_VNODE] = dnodeDispatchToMgmtQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_ALTER_STREAM] = dnodeDispatchToMgmtQueue; + dnodeProcessReqMsgFp[TSDB_MSG_TYPE_MD_CONFIG_DNODE] = dnodeDispatchToMgmtQueue; dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_TABLE] = dnodeDispatchToMnodePeerQueue; dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = dnodeDispatchToMnodePeerQueue; From a0dd5664898dcae3a06ada13388ffdc8f2547f7e Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Sat, 30 May 2020 12:46:43 +0000 Subject: [PATCH 84/85] tune the code --- src/dnode/src/dnodeMgmt.c | 86 ++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 50 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 1dd6952c6e9..c5325a43d36 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -43,8 +43,7 @@ void * tsDnodeTmr = NULL; static void * tsStatusTimer = NULL; static uint32_t tsRebootTime; -static SRpcIpSet tsDMnodeIpSetForPeer = {0}; -static SRpcIpSet tsDMnodeIpSetForShell = {0}; +static SRpcIpSet tsDMnodeIpSet = {0}; static SDMMnodeInfos tsDMnodeInfos = {0}; static SDMDnodeCfg tsDnodeCfg = {0}; static taos_qset tsMgmtQset = NULL; @@ -80,40 +79,21 @@ int32_t dnodeInitMgmt() { tsRebootTime = taosGetTimestampSec(); if (!dnodeReadMnodeInfos()) { - memset(&tsDMnodeIpSetForPeer, 0, sizeof(SRpcIpSet)); - memset(&tsDMnodeIpSetForShell, 0, sizeof(SRpcIpSet)); + memset(&tsDMnodeIpSet, 0, sizeof(SRpcIpSet)); memset(&tsDMnodeInfos, 0, sizeof(SDMMnodeInfos)); - tsDMnodeIpSetForPeer.numOfIps = 1; - taosGetFqdnPortFromEp(tsFirst, tsDMnodeIpSetForPeer.fqdn[0], &tsDMnodeIpSetForPeer.port[0]); - tsDMnodeIpSetForPeer.port[0] += TSDB_PORT_DNODEDNODE; - - tsDMnodeIpSetForShell.numOfIps = 1; - taosGetFqdnPortFromEp(tsFirst, tsDMnodeIpSetForShell.fqdn[0], &tsDMnodeIpSetForShell.port[0]); - tsDMnodeIpSetForShell.port[0] += TSDB_PORT_DNODESHELL; + tsDMnodeIpSet.numOfIps = 1; + taosGetFqdnPortFromEp(tsFirst, tsDMnodeIpSet.fqdn[0], &tsDMnodeIpSet.port[0]); if (strcmp(tsSecond, tsFirst) != 0) { - tsDMnodeIpSetForPeer.numOfIps = 2; - taosGetFqdnPortFromEp(tsSecond, tsDMnodeIpSetForPeer.fqdn[1], &tsDMnodeIpSetForPeer.port[1]); - tsDMnodeIpSetForPeer.port[1] += TSDB_PORT_DNODEDNODE; - - tsDMnodeIpSetForShell.numOfIps = 2; - taosGetFqdnPortFromEp(tsSecond, tsDMnodeIpSetForShell.fqdn[1], &tsDMnodeIpSetForShell.port[1]); - tsDMnodeIpSetForShell.port[1] += TSDB_PORT_DNODESHELL; + tsDMnodeIpSet.numOfIps = 2; + taosGetFqdnPortFromEp(tsSecond, tsDMnodeIpSet.fqdn[1], &tsDMnodeIpSet.port[1]); } } else { - tsDMnodeIpSetForPeer.inUse = tsDMnodeInfos.inUse; - tsDMnodeIpSetForPeer.numOfIps = tsDMnodeInfos.nodeNum; - for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForPeer.fqdn[i], &tsDMnodeIpSetForPeer.port[i]); - tsDMnodeIpSetForPeer.port[i] += TSDB_PORT_DNODEDNODE; - } - - tsDMnodeIpSetForShell.inUse = tsDMnodeInfos.inUse; - tsDMnodeIpSetForShell.numOfIps = tsDMnodeInfos.nodeNum; + tsDMnodeIpSet.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSet.numOfIps = tsDMnodeInfos.nodeNum; for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForShell.fqdn[i], &tsDMnodeIpSetForShell.port[i]); - tsDMnodeIpSetForShell.port[i] += TSDB_PORT_DNODESHELL; + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSet.fqdn[i], &tsDMnodeIpSet.port[i]); } } @@ -193,9 +173,17 @@ void dnodeDispatchToMgmtQueue(SRpcMsg *pMsg) { void *item; item = taosAllocateQitem(sizeof(SRpcMsg)); - memcpy(item, pMsg, sizeof(SRpcMsg)); - - taosWriteQitem(tsMgmtQueue, 1, item); + if (item) { + memcpy(item, pMsg, sizeof(SRpcMsg)); + taosWriteQitem(tsMgmtQueue, 1, item); + } else { + SRpcMsg rsp; + rsp.handle = pMsg->handle; + rsp.pCont = NULL; + rsp.code = TSDB_CODE_SERV_OUT_OF_MEMORY; + rpcSendResponse(&rsp); + rpcFreeCont(pMsg->pCont); + } } static void *dnodeProcessMgmtQueue(void *param) { @@ -352,22 +340,26 @@ static int32_t dnodeProcessConfigDnodeMsg(SRpcMsg *pMsg) { } void dnodeUpdateMnodeIpSetForPeer(SRpcIpSet *pIpSet) { - dPrint("mnode IP list for peer is changed, numOfIps:%d inUse:%d", pIpSet->numOfIps, pIpSet->inUse); + dPrint("mnode IP list for is changed, numOfIps:%d inUse:%d", pIpSet->numOfIps, pIpSet->inUse); for (int i = 0; i < pIpSet->numOfIps; ++i) { + pIpSet->port[i] -= TSDB_PORT_DNODEDNODE; dPrint("mnode index:%d %s:%u", i, pIpSet->fqdn[i], pIpSet->port[i]) } - tsDMnodeIpSetForPeer = *pIpSet; + tsDMnodeIpSet = *pIpSet; } void dnodeGetMnodeIpSetForPeer(void *ipSetRaw) { SRpcIpSet *ipSet = ipSetRaw; - *ipSet = tsDMnodeIpSetForPeer; + *ipSet = tsDMnodeIpSet; + + for (int i=0; inumOfIps; ++i) + ipSet->port[i] += TSDB_PORT_DNODEDNODE; } void dnodeGetMnodeIpSetForShell(void *ipSetRaw) { SRpcIpSet *ipSet = ipSetRaw; - *ipSet = tsDMnodeIpSetForShell; + *ipSet = tsDMnodeIpSet; } static void dnodeProcessStatusRsp(SRpcMsg *pMsg) { @@ -417,19 +409,11 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { dPrint("mnode index:%d, %s", tsDMnodeInfos.nodeInfos[i].nodeId, tsDMnodeInfos.nodeInfos[i].nodeEp); } - tsDMnodeIpSetForPeer.inUse = tsDMnodeInfos.inUse; - tsDMnodeIpSetForPeer.numOfIps = tsDMnodeInfos.nodeNum; - for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForPeer.fqdn[i], &tsDMnodeIpSetForPeer.port[i]); - tsDMnodeIpSetForPeer.port[i] += TSDB_PORT_DNODEDNODE; - dPrint("mnode index:%d, for peer %s %d", i, tsDMnodeIpSetForPeer.fqdn[i], tsDMnodeIpSetForPeer.port[i]); - } - - tsDMnodeIpSetForShell.inUse = tsDMnodeInfos.inUse; - tsDMnodeIpSetForShell.numOfIps = tsDMnodeInfos.nodeNum; + tsDMnodeIpSet.inUse = tsDMnodeInfos.inUse; + tsDMnodeIpSet.numOfIps = tsDMnodeInfos.nodeNum; for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { - taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSetForShell.fqdn[i], &tsDMnodeIpSetForShell.port[i]); - dPrint("mnode index:%d, for shell %s %d", i, tsDMnodeIpSetForShell.fqdn[i], tsDMnodeIpSetForShell.port[i]); + taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSet.fqdn[i], &tsDMnodeIpSet.port[i]); + dPrint("mnode index:%d, for peer %s %d", i, tsDMnodeIpSet.fqdn[i], tsDMnodeIpSet.port[i]); } dnodeSaveMnodeInfos(); @@ -555,7 +539,7 @@ static void dnodeSaveMnodeInfos() { } char *dnodeGetMnodeMasterEp() { - return tsDMnodeInfos.nodeInfos[tsDMnodeIpSetForPeer.inUse].nodeEp; + return tsDMnodeInfos.nodeInfos[tsDMnodeIpSet.inUse].nodeEp; } void* dnodeGetMnodeInfos() { @@ -602,7 +586,9 @@ static void dnodeSendStatusMsg(void *handle, void *tmrId) { .msgType = TSDB_MSG_TYPE_DM_STATUS }; - dnodeSendMsgToDnode(&tsDMnodeIpSetForPeer, &rpcMsg); + SRpcIpSet ipSet; + dnodeGetMnodeIpSetForPeer(&ipSet); + dnodeSendMsgToDnode(&ipSet, &rpcMsg); } static bool dnodeReadDnodeCfg() { From 3fbc2ebc67303fe30a4ad3377e514aa468ec05d6 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Sat, 30 May 2020 13:22:59 +0000 Subject: [PATCH 85/85] put more protection on RPC --- src/dnode/src/dnodeMgmt.c | 1 - src/rpc/src/rpcMain.c | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index c5325a43d36..7c457defca9 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -413,7 +413,6 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) { tsDMnodeIpSet.numOfIps = tsDMnodeInfos.nodeNum; for (int32_t i = 0; i < tsDMnodeInfos.nodeNum; i++) { taosGetFqdnPortFromEp(tsDMnodeInfos.nodeInfos[i].nodeEp, tsDMnodeIpSet.fqdn[i], &tsDMnodeIpSet.port[i]); - dPrint("mnode index:%d, for peer %s %d", i, tsDMnodeIpSet.fqdn[i], tsDMnodeIpSet.port[i]); } dnodeSaveMnodeInfos(); diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index 297ff31ed98..fa46c3a0f35 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -420,13 +420,13 @@ void rpcSendResponse(const SRpcMsg *pRsp) { pConn->rspMsgLen = msgLen; if (pMsg->code == TSDB_CODE_ACTION_IN_PROGRESS) pConn->inTranId--; - rpcUnlockConn(pConn); - taosTmrStopA(&pConn->pTimer); // taosTmrReset(rpcProcessIdleTimer, pRpc->idleTime, pConn, pRpc->tmrCtrl, &pConn->pIdleTimer); rpcSendMsgToPeer(pConn, msg, msgLen); pConn->secured = 1; // connection shall be secured + rpcUnlockConn(pConn); + return; } @@ -1095,10 +1095,10 @@ static void rpcSendReqToServer(SRpcInfo *pRpc, SRpcReqContext *pContext) { pConn->reqMsgLen = msgLen; pConn->pContext = pContext; - rpcUnlockConn(pConn); - taosTmrReset(rpcProcessRetryTimer, tsRpcTimer, pConn, pRpc->tmrCtrl, &pConn->pTimer); rpcSendMsgToPeer(pConn, msg, msgLen); + + rpcUnlockConn(pConn); } static void rpcSendMsgToPeer(SRpcConn *pConn, void *msg, int msgLen) {

h@zKioP&8XKa~<2Hbk-A= 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�{Bz_=p_MoNdUIR62ced5Nu@-e#fa$ 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 z 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Ð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