Navigation Menu

Skip to content

Commit

Permalink
Merge branch '3.7' of https://github.com/JumpMind/symmetric-ds into 3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Nov 16, 2015
2 parents 82f5fb7 + 42ecf2a commit 79cffb1
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 50 deletions.
1 change: 0 additions & 1 deletion symmetric-client-clib/inc/db/sqlite/SqliteSqlTemplate.h
Expand Up @@ -33,7 +33,6 @@
typedef struct SymSqliteSqlTemplate {
SymSqlTemplate super;
sqlite3 *db;
void (*destroy)(struct SymSqliteSqlTemplate *this);
} SymSqliteSqlTemplate;

SymSqliteSqlTemplate * SymSqliteSqlTemplate_new(SymSqliteSqlTemplate *this, sqlite3 *db);
Expand Down
11 changes: 7 additions & 4 deletions symmetric-client-clib/src/core/JobManager.c
Expand Up @@ -42,7 +42,6 @@ unsigned short SymJobManager_shouldRun(SymJobManager *this, char* startJobProper

void SymJobManager_invoke(SymJobManager *this) {
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_SYNCTRIGGERS_JOB, SYM_PARAMETER_SYNCTRIGGERS_PERIOD_MS, this->lastSyncTriggersTime)) {

SymLog_info("SYNC TRIGGERS ============================)");
this->engine->syncTriggers(this->engine);
time(&this->lastSyncTriggersTime);
Expand All @@ -64,11 +63,13 @@ void SymJobManager_invoke(SymJobManager *this) {
}
}
time(&this->lastPushTime);
pushStatus->destroy(pushStatus);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PULL_JOB, SYM_PARAMETER_PULL_PERIOD_MS, this->lastPullTime)) {
SymLog_info("PULL ============================)");
this->engine->pull(this->engine);
SymRemoteNodeStatuses *statuses = this->engine->pull(this->engine);
time(&this->lastPullTime);
statuses->destroy(statuses);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PURGE_JOB, SYM_PARAMETER_PURGE_PERIOD_MS, this->lastPurgeTime)) {
SymLog_info("PURGE ============================)");
Expand All @@ -77,13 +78,15 @@ void SymJobManager_invoke(SymJobManager *this) {
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_OFFLINE_PUSH_JOB, SYM_PARAMETER_OFFLINE_PUSH_PERIOD_MS, this->lastOfflinePushTime)) {
SymLog_info("OFFLINE PUSH ============================)");
this->engine->offlinePushService->pushData(this->engine->offlinePushService);
SymRemoteNodeStatuses *statuses = this->engine->offlinePushService->pushData(this->engine->offlinePushService);
time(&this->lastOfflinePushTime);
statuses->destroy(statuses);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_OFFLINE_PULL_JOB, SYM_PARAMETER_OFFLINE_PULL_PERIOD_MS, this->lastOfflinePullTime)) {
SymLog_info("OFFLINE PULL ============================)");
this->engine->offlinePullService->pullData(this->engine->offlinePullService);
SymRemoteNodeStatuses *statuses = this->engine->offlinePullService->pullData(this->engine->offlinePullService);
time(&this->lastOfflinePullTime);
statuses->destroy(statuses);
}
}

Expand Down
6 changes: 3 additions & 3 deletions symmetric-client-clib/src/db/platform/sqlite/SqlitePlatform.c
Expand Up @@ -48,11 +48,11 @@ SymSqliteSqlTemplate * SymSqlitePlatform_getSqlTemplate(SymSqlitePlatform *this)

void SymSqlitePlatform_destroy(SymDatabasePlatform *super) {
SymLog_info("Closing SQLite database");
// SymSqlitePlatform *this = (SymSqlitePlatform *) super;
SymSqlitePlatform *this = (SymSqlitePlatform *) super;
// sqlite3_close(this->db);
// this->sqlTemplate->destroy(this->sqlTemplate);
this->sqlTemplate->destroy(this->sqlTemplate);
// free(super->ddlReader);
// free(super);
free(this);
}

SymSqlitePlatform * SymSqlitePlatform_new(SymSqlitePlatform *this, SymProperties *properties) {
Expand Down
Expand Up @@ -207,6 +207,6 @@ SymSqliteSqlTemplate * SymSqliteSqlTemplate_new(SymSqliteSqlTemplate *this, sqli
super->queryWithUserData = (void *) &SymSqliteSqlTemplate_queryWithUserData;
super->update = (void *) &SymSqliteSqlTemplate_update;
super->startSqlTransaction = (void *) &SymSqliteSqlTemplate_startSqlTransaction;
this->destroy = (void *) &SymSqliteSqlTemplate_destroy;
super->destroy = (void *) &SymSqliteSqlTemplate_destroy;
return this;
}
2 changes: 2 additions & 0 deletions symmetric-client-clib/src/io/writer/DefaultDatabaseWriter.c
Expand Up @@ -280,6 +280,8 @@ void SymDefaultDatabaseWriter_endBatch(SymDefaultDatabaseWriter *this, SymBatch

void SymDefaultDatabaseWriter_close(SymDefaultDatabaseWriter *this) {
this->sqlTransaction->close(this->sqlTransaction);
this->sqlTransaction->destroy(this->sqlTransaction);
this->sqlTransaction = NULL;
}

void SymDefaultDatabaseWriter_destroy(SymDefaultDatabaseWriter *this) {
Expand Down
17 changes: 17 additions & 0 deletions symmetric-client-clib/src/model/TriggerHistory.c
Expand Up @@ -62,6 +62,23 @@ char * SymTriggerHistory_getTriggerNameForDmlType(SymTriggerHistory *this, SymDa
}

void SymTriggerHistory_destroy(SymTriggerHistory *this) {
if (this->nameForInsertTrigger) {
free(this->nameForInsertTrigger);
}
if (this->nameForUpdateTrigger) {
free(this->nameForUpdateTrigger);
}
if (this->nameForDeleteTrigger) {
free(this->nameForDeleteTrigger);
}
if (this->columnNames) {
free(this->columnNames);
this->columnNames = NULL;
}
if (this->pkColumnNames) {
free(this->pkColumnNames);
this->pkColumnNames = NULL;
}
if (this->createTime) {
this->createTime->destroy(this->createTime);
}
Expand Down
86 changes: 45 additions & 41 deletions symmetric-client-clib/src/service/TriggerRouterService.c
Expand Up @@ -212,6 +212,10 @@ SymList * SymTriggerRouterService_getActiveTriggerHistories(SymTriggerRouterServ
SymList *histories = sqlTemplate->query(sqlTemplate, sb->str, NULL, NULL, &error, (void *) SymTriggerRouterService_triggerHistoryMapper);
sb->destroy(sb);

if (this->historyMap->size > 0) {
this->historyMap->resetAll(this->historyMap, (void *)SymTriggerHistory_destroy);
}

SymIterator *iter = histories->iterator(histories);
while (iter->hasNext(iter)) {
SymTriggerHistory *triggerHistory = (SymTriggerHistory *) iter->next(iter);
Expand Down Expand Up @@ -516,46 +520,46 @@ void SymTriggerRouterService_destroyTriggerRouters(SymTriggerRouterService *this
// freedRouters and Triggers because there are multiple pointers to the same
// memory location within these objects and we can't free the same pointer
// twice.
// SymList *freedRouters = SymList_new(NULL);
// SymList *freedTriggers = SymList_new(NULL);
//
// int i;
// for (i = 0; i < triggerRouters->size; i++) {
// SymTriggerRouter *triggerRouter = triggerRouters->get(triggerRouters, i);
// unsigned short shouldFreeRouter = 1;
// int j =0;
// for (j =0; j < freedRouters->size; j++) {
// if (freedRouters->get(freedRouters, j) == triggerRouter->router) {
// shouldFreeRouter = 0;
// break; //already freed.
// }
// }
//
// if (shouldFreeRouter && triggerRouter->router) {
// free(triggerRouter->router->routerId);
// triggerRouter->router->destroy(triggerRouter->router);
// freedRouters->add(freedRouters, triggerRouter->router);
// triggerRouter->router = NULL;
// }
// unsigned short shouldFreeTrigger = 1;
//
// for (j =0; j < freedTriggers->size; j++) {
// if (freedTriggers->get(freedTriggers, j) == triggerRouter->trigger) {
// shouldFreeTrigger = 0;
// break; //already freed.
// }
// }
//
// if (shouldFreeTrigger && triggerRouter->trigger) {
// triggerRouter->trigger->destroy(triggerRouter->trigger);
// freedTriggers->add(freedRouters, triggerRouter->trigger);
// triggerRouter->trigger = NULL;
// }
// }
//
// triggerRouters->destroyAll(triggerRouters, (void *)SymTriggerRouter_destroy);
// freedRouters->destroy(freedRouters);
// freedTriggers->destroy(freedTriggers);
SymList *freedRouters = SymList_new(NULL);
SymList *freedTriggers = SymList_new(NULL);

int i;
for (i = 0; i < triggerRouters->size; i++) {
SymTriggerRouter *triggerRouter = triggerRouters->get(triggerRouters, i);
unsigned short shouldFreeRouter = 1;
int j =0;
for (j =0; j < freedRouters->size; j++) {
if (freedRouters->get(freedRouters, j) == triggerRouter->router) {
shouldFreeRouter = 0;
break; //already freed.
}
}

if (shouldFreeRouter && triggerRouter->router) {
free(triggerRouter->router->routerId);
triggerRouter->router->destroy(triggerRouter->router);
freedRouters->add(freedRouters, triggerRouter->router);
triggerRouter->router = NULL;
}
unsigned short shouldFreeTrigger = 1;

for (j =0; j < freedTriggers->size; j++) {
if (freedTriggers->get(freedTriggers, j) == triggerRouter->trigger) {
shouldFreeTrigger = 0;
break; //already freed.
}
}

if (shouldFreeTrigger && triggerRouter->trigger) {
triggerRouter->trigger->destroy(triggerRouter->trigger);
freedTriggers->add(freedRouters, triggerRouter->trigger);
triggerRouter->trigger = NULL;
}
}

triggerRouters->destroyAll(triggerRouters, (void *)SymTriggerRouter_destroy);
freedRouters->destroy(freedRouters);
freedTriggers->destroy(freedTriggers);
}

SymList * SymTriggerRouterService_getTriggersToSync(SymTriggerRouterService *this) {
Expand Down Expand Up @@ -929,7 +933,7 @@ void SymTriggerRouterService_syncTriggers(SymTriggerRouterService *this, unsigne

symmetricTableTriggers->destroy(symmetricTableTriggers); // shallow destroy here because these objects are also in 'triggers'.
triggers->destroyAll(triggers, (void *)SymTrigger_destroy);
// activeTriggerHistories is cached - don't destroy.
activeTriggerHistories->destroy(activeTriggerHistories); // shallow destroy, these trigger histories are used in the cache.
}
}

Expand Down

0 comments on commit 79cffb1

Please sign in to comment.