Skip to content

Commit 9da24a0

Browse files
AndreAugusto11petermetz
authored andcommitted
fix(odap-plugin): fixes #2198 - two gateways are using the same database
* getLogsMoreRecentThanTimestamp() was returning more logs than supposed because * both gateways were using the same database, instead of each having its own Signed-off-by: André Augusto <[email protected]>
1 parent 4bbe012 commit 9da24a0

15 files changed

+57
-10
lines changed

packages/cactus-plugin-odap-hermes/knex/knex.js

-4
This file was deleted.

packages/cactus-plugin-odap-hermes/src/main/typescript/gateway/besu-odap-gateway.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export class BesuOdapGateway extends PluginOdapGateway {
4545
ipfsPath: options.ipfsPath,
4646
clientHelper: options.clientHelper,
4747
serverHelper: options.serverHelper,
48+
knexConfig: options.knexConfig,
4849
});
4950

5051
if (options.besuPath != undefined) this.defineBesuConnection(options);

packages/cactus-plugin-odap-hermes/src/main/typescript/gateway/fabric-odap-gateway.ts

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export class FabricOdapGateway extends PluginOdapGateway {
4444
ipfsPath: options.ipfsPath,
4545
clientHelper: options.clientHelper,
4646
serverHelper: options.serverHelper,
47+
knexConfig: options.knexConfig,
4748
});
4849

4950
if (options.fabricPath != undefined) this.defineFabricConnection(options);

packages/cactus-plugin-odap-hermes/src/main/typescript/gateway/plugin-odap-gateway.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export interface IPluginOdapGatewayConstructorOptions {
114114
ipfsPath?: string;
115115
clientHelper: ClientGatewayHelper;
116116
serverHelper: ServerGatewayHelper;
117+
knexConfig?: Knex.Config;
117118
}
118119
export interface IOdapPluginKeyPair {
119120
publicKey: Uint8Array;
@@ -185,16 +186,16 @@ export abstract class PluginOdapGateway
185186

186187
if (options.ipfsPath != undefined) this.defineIpfsConnection(options);
187188

188-
this.defineKnexConnection();
189+
this.defineKnexConnection(options.knexConfig);
189190
}
190191

191-
public defineKnexConnection(): void {
192+
public defineKnexConnection(config: Knex.Config | undefined): void {
192193
// eslint-disable-next-line @typescript-eslint/no-var-requires
193-
const config = require("../../../../knex/knexfile.ts")[
194+
const configFile = require("../../../../knex/knexfile.ts")[
194195
process.env.ENVIRONMENT || "development"
195196
];
196197

197-
this.database = knex(config);
198+
this.database = knex(config || configFile);
198199
}
199200

200201
private defineIpfsConnection(

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/backup-gateway-after-client-crash.test.ts

+6
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ import {
6666
} from "../../../main/typescript/gateway/besu-odap-gateway";
6767
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
6868
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
69+
70+
import { knexClientConnection, knexServerConnection } from "../knex.config";
71+
6972
/**
7073
* Use this to debug issues with the fabric node SDK
7174
* ```sh
@@ -577,6 +580,7 @@ beforeAll(async () => {
577580
backupGatewaysAllowed: allowedGateways,
578581
clientHelper: new ClientGatewayHelper(),
579582
serverHelper: new ServerGatewayHelper(),
583+
knexConfig: knexClientConnection,
580584
};
581585

582586
odapServerGatewayPluginOptions = {
@@ -591,6 +595,7 @@ beforeAll(async () => {
591595
besuKeychainId: besuKeychainId,
592596
clientHelper: new ClientGatewayHelper(),
593597
serverHelper: new ServerGatewayHelper(),
598+
knexConfig: knexServerConnection,
594599
};
595600

596601
pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
@@ -810,6 +815,7 @@ test("client gateway crashes after lock fabric asset", async () => {
810815
fabricContractName: fabricContractName,
811816
clientHelper: new ClientGatewayHelper(),
812817
serverHelper: new ServerGatewayHelper(),
818+
knexConfig: knexClientConnection,
813819
};
814820

815821
pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/client-crash-after-delete-asset.test.ts

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ import {
6565
} from "../../../main/typescript/gateway/besu-odap-gateway";
6666
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
6767
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
68+
69+
import { knexClientConnection, knexServerConnection } from "../knex.config";
70+
6871
/**
6972
* Use this to debug issues with the fabric node SDK
7073
* ```sh
@@ -567,6 +570,7 @@ beforeAll(async () => {
567570
fabricContractName: fabricContractName,
568571
clientHelper: new ClientGatewayHelper(),
569572
serverHelper: new ServerGatewayHelper(),
573+
knexConfig: knexServerConnection,
570574
};
571575

572576
odapServerGatewayPluginOptions = {
@@ -581,6 +585,7 @@ beforeAll(async () => {
581585
besuKeychainId: besuKeychainId,
582586
clientHelper: new ClientGatewayHelper(),
583587
serverHelper: new ServerGatewayHelper(),
588+
knexConfig: knexClientConnection,
584589
};
585590

586591
pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/client-crash-after-lock-asset.test.ts

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ import {
6565
} from "../../../main/typescript/gateway/fabric-odap-gateway";
6666
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
6767
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
68+
69+
import { knexClientConnection, knexServerConnection } from "../knex.config";
70+
6871
/**
6972
* Use this to debug issues with the fabric node SDK
7073
* ```sh
@@ -568,6 +571,7 @@ beforeAll(async () => {
568571
fabricContractName: fabricContractName,
569572
clientHelper: new ClientGatewayHelper(),
570573
serverHelper: new ServerGatewayHelper(),
574+
knexConfig: knexServerConnection,
571575
};
572576

573577
odapServerGatewayPluginOptions = {
@@ -582,6 +586,7 @@ beforeAll(async () => {
582586
besuKeychainId: besuKeychainId,
583587
clientHelper: new ClientGatewayHelper(),
584588
serverHelper: new ServerGatewayHelper(),
589+
knexConfig: knexClientConnection,
585590
};
586591

587592
pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/client-crash-after-transfer-initiation.test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ import { FabricOdapGateway } from "../../../main/typescript/gateway/fabric-odap-
3030
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
3131
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
3232

33+
import { knexClientConnection, knexServerConnection } from "../knex.config";
34+
3335
const MAX_RETRIES = 5;
3436
const MAX_TIMEOUT = 5000;
3537

@@ -116,6 +118,7 @@ beforeAll(async () => {
116118
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
117119
clientHelper: new ClientGatewayHelper(),
118120
serverHelper: new ServerGatewayHelper(),
121+
knexConfig: knexServerConnection,
119122
};
120123

121124
serverExpressApp = express();
@@ -155,6 +158,7 @@ beforeAll(async () => {
155158
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
156159
clientHelper: new ClientGatewayHelper(),
157160
serverHelper: new ServerGatewayHelper(),
161+
knexConfig: knexClientConnection,
158162
};
159163

160164
clientExpressApp = express();

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/server-crash-after-create-asset.test.ts

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ import {
6565
} from "../../../main/typescript/gateway/fabric-odap-gateway";
6666
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
6767
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
68+
69+
import { knexClientConnection, knexServerConnection } from "../knex.config";
70+
6871
/**
6972
* Use this to debug issues with the fabric node SDK
7073
* ```sh
@@ -568,6 +571,7 @@ beforeEach(async () => {
568571
fabricContractName: fabricContractName,
569572
clientHelper: new ClientGatewayHelper(),
570573
serverHelper: new ServerGatewayHelper(),
574+
knexConfig: knexClientConnection,
571575
};
572576

573577
odapServerGatewayPluginOptions = {
@@ -582,6 +586,7 @@ beforeEach(async () => {
582586
besuKeychainId: besuKeychainId,
583587
clientHelper: new ClientGatewayHelper(),
584588
serverHelper: new ServerGatewayHelper(),
589+
knexConfig: knexServerConnection,
585590
};
586591

587592
pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);

packages/cactus-plugin-odap-hermes/src/test/typescript/integration/server-crash-after-transfer-initiation.test.ts

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import {
3131
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
3232
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
3333

34+
import { knexClientConnection } from "../knex.config";
35+
3436
const MAX_RETRIES = 5;
3537
const MAX_TIMEOUT = 5000;
3638

@@ -155,6 +157,7 @@ beforeAll(async () => {
155157
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
156158
clientHelper: new ClientGatewayHelper(),
157159
serverHelper: new ServerGatewayHelper(),
160+
knexConfig: knexClientConnection,
158161
};
159162

160163
clientExpressApp = express();

packages/cactus-plugin-odap-hermes/src/test/typescript/unit/recovery/logging.test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import {
3333
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
3434
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";
3535

36+
import { knexClientConnection, knexServerConnection } from "../../knex.config";
37+
3638
const logLevel: LogLevelDesc = "TRACE";
3739

3840
let sourceGatewayConstructor: IFabricOdapGatewayConstructorOptions;
@@ -107,6 +109,7 @@ beforeAll(async () => {
107109
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
108110
clientHelper: new ClientGatewayHelper(),
109111
serverHelper: new ServerGatewayHelper(),
112+
knexConfig: knexClientConnection,
110113
};
111114
recipientGatewayConstructor = {
112115
name: "plugin-odap-gateway#recipientGateway",
@@ -115,6 +118,7 @@ beforeAll(async () => {
115118
ipfsPath: ipfsApiHost,
116119
clientHelper: new ClientGatewayHelper(),
117120
serverHelper: new ServerGatewayHelper(),
121+
knexConfig: knexServerConnection,
118122
};
119123
});
120124

packages/cactus-plugin-odap-hermes/src/test/typescript/unit/recovery/recover-success.test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
2727
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
2828
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";
2929

30+
import { knexClientConnection, knexServerConnection } from "../../knex.config";
31+
3032
const logLevel: LogLevelDesc = "TRACE";
3133

3234
let pluginSourceGateway: PluginOdapGateway;
@@ -92,6 +94,7 @@ beforeEach(async () => {
9294
ipfsPath: ipfsApiHost,
9395
clientHelper: new ClientGatewayHelper(),
9496
serverHelper: new ServerGatewayHelper(),
97+
knexConfig: knexClientConnection,
9598
};
9699
const recipientGatewayConstructor = {
97100
name: "plugin-odap-gateway#recipientGateway",
@@ -100,6 +103,7 @@ beforeEach(async () => {
100103
ipfsPath: ipfsApiHost,
101104
clientHelper: new ClientGatewayHelper(),
102105
serverHelper: new ServerGatewayHelper(),
106+
knexConfig: knexServerConnection,
103107
};
104108

105109
pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);

packages/cactus-plugin-odap-hermes/src/test/typescript/unit/recovery/recover-update-ack.test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
2727
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
2828
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";
2929

30+
import { knexClientConnection, knexServerConnection } from "../../knex.config";
31+
3032
const logLevel: LogLevelDesc = "TRACE";
3133

3234
let pluginSourceGateway: PluginOdapGateway;
@@ -92,13 +94,15 @@ beforeEach(async () => {
9294
ipfsPath: ipfsApiHost,
9395
clientHelper: new ClientGatewayHelper(),
9496
serverHelper: new ServerGatewayHelper(),
97+
knexConfig: knexClientConnection,
9598
};
9699
const recipientGatewayConstructor = {
97100
name: "plugin-odap-gateway#recipientGateway",
98101
dltIDs: ["DLT1"],
99102
instanceId: uuidV4(),
100103
clientHelper: new ClientGatewayHelper(),
101104
serverHelper: new ServerGatewayHelper(),
105+
knexConfig: knexServerConnection,
102106
};
103107

104108
pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);

packages/cactus-plugin-odap-hermes/src/test/typescript/unit/recovery/recover-update.test.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
3535
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
3636
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";
3737

38+
import { knexClientConnection, knexServerConnection } from "../../knex.config";
39+
3840
const logLevel: LogLevelDesc = "TRACE";
3941

4042
const MAX_RETRIES = 5;
@@ -104,6 +106,7 @@ beforeEach(async () => {
104106
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
105107
clientHelper: new ClientGatewayHelper(),
106108
serverHelper: new ServerGatewayHelper(),
109+
knexConfig: knexClientConnection,
107110
};
108111
const recipientGatewayConstructor = {
109112
name: "plugin-odap-gateway#recipientGateway",
@@ -113,6 +116,7 @@ beforeEach(async () => {
113116
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
114117
clientHelper: new ClientGatewayHelper(),
115118
serverHelper: new ServerGatewayHelper(),
119+
knexConfig: knexServerConnection,
116120
};
117121

118122
pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);
@@ -201,9 +205,8 @@ test("check valid built of recover update message", async () => {
201205
data: JSON.stringify(sessionData),
202206
};
203207

204-
new Promise((resolve) => setTimeout(resolve, 1000));
205208
const firstTimestamp = Date.now().toString();
206-
new Promise((resolve) => setTimeout(resolve, 1000));
209+
await new Promise((resolve) => setTimeout(resolve, 5000));
207210

208211
await pluginSourceGateway.storeOdapLog(odapLog1);
209212

@@ -260,6 +263,7 @@ test("check valid built of recover update message", async () => {
260263
throw new Error("Test Failed");
261264
}
262265

266+
console.log(recoverUpdateMessage.recoveredLogs);
263267
expect(recoverUpdateMessage.recoveredLogs.length).toBe(3);
264268

265269
await checkValidRecoverUpdateMessage(

packages/cactus-plugin-odap-hermes/src/test/typescript/unit/recovery/recover.test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
2929
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
3030
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";
3131

32+
import { knexClientConnection, knexServerConnection } from "../../knex.config";
33+
3234
const logLevel: LogLevelDesc = "TRACE";
3335

3436
let sourceGatewayConstructor: IPluginOdapGatewayConstructorOptions;
@@ -94,6 +96,7 @@ beforeAll(async () => {
9496
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
9597
clientHelper: new ClientGatewayHelper(),
9698
serverHelper: new ServerGatewayHelper(),
99+
knexConfig: knexClientConnection,
97100
};
98101
recipientGatewayConstructor = {
99102
name: "plugin-odap-gateway#recipientGateway",
@@ -103,6 +106,7 @@ beforeAll(async () => {
103106
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
104107
clientHelper: new ClientGatewayHelper(),
105108
serverHelper: new ServerGatewayHelper(),
109+
knexConfig: knexServerConnection,
106110
};
107111
});
108112

0 commit comments

Comments
 (0)