Skip to content

Commit cdf3ff1

Browse files
Merge pull request #3808 from RedisInsight/be/bugfix/RI-6095-enhance-client-conn-config
disable ready-check
2 parents 54c2a4a + d052e49 commit cdf3ff1

File tree

6 files changed

+31
-7
lines changed

6 files changed

+31
-7
lines changed

redisinsight/api/src/modules/database/database.service.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,7 @@ describe('DatabaseService', () => {
555555
privateKey: null,
556556
},
557557
},
558+
{},
558559
);
559560
});
560561

@@ -590,6 +591,7 @@ describe('DatabaseService', () => {
590591
passphrase: 'ssh-passphrase',
591592
},
592593
},
594+
{},
593595
);
594596
});
595597

@@ -621,6 +623,7 @@ describe('DatabaseService', () => {
621623
name: 'name',
622624
},
623625
},
626+
{},
624627
);
625628
});
626629

@@ -650,6 +653,7 @@ describe('DatabaseService', () => {
650653
id: 'new id',
651654
},
652655
},
656+
{},
653657
);
654658
});
655659

redisinsight/api/src/modules/database/database.service.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { ExportDatabase } from 'src/modules/database/models/export-database';
2323
import { deepMerge } from 'src/common/utils';
2424
import { CaCertificate } from 'src/modules/certificate/models/ca-certificate';
2525
import { ClientCertificate } from 'src/modules/certificate/models/client-certificate';
26-
import { RedisClientFactory } from 'src/modules/redis/redis.client.factory';
26+
import { IRedisConnectionOptions, RedisClientFactory } from 'src/modules/redis/redis.client.factory';
2727
import { RedisClientStorage } from 'src/modules/redis/redis.client.storage';
2828

2929
@Injectable()
@@ -149,15 +149,25 @@ export class DatabaseService {
149149
* @param sessionMetadata
150150
* @param dto
151151
* @param uniqueCheck
152+
* @param options
152153
*/
153-
async create(sessionMetadata: SessionMetadata, dto: CreateDatabaseDto, uniqueCheck = false): Promise<Database> {
154+
async create(
155+
sessionMetadata: SessionMetadata,
156+
dto: CreateDatabaseDto,
157+
uniqueCheck = false,
158+
options: IRedisConnectionOptions = {},
159+
): Promise<Database> {
154160
try {
155161
this.logger.log('Creating new database.');
156162

157163
const database = await this.repository.create(
158164
sessionMetadata,
159165
{
160-
...await this.databaseFactory.createDatabaseModel(sessionMetadata, classToClass(Database, dto)),
166+
...await this.databaseFactory.createDatabaseModel(
167+
sessionMetadata,
168+
classToClass(Database, dto),
169+
options,
170+
),
161171
new: true,
162172
},
163173
uniqueCheck,

redisinsight/api/src/modules/database/providers/database.factory.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { DatabaseInfoProvider } from 'src/modules/database/providers/database-in
99
import { RedisErrorCodes } from 'src/constants';
1010
import { CaCertificateService } from 'src/modules/certificate/ca-certificate.service';
1111
import { ClientCertificateService } from 'src/modules/certificate/client-certificate.service';
12-
import { RedisClientFactory } from 'src/modules/redis/redis.client.factory';
12+
import { IRedisConnectionOptions, RedisClientFactory } from 'src/modules/redis/redis.client.factory';
1313
import {
1414
discoverClusterNodes, discoverSentinelMasterGroups, isCluster, isSentinel,
1515
} from 'src/modules/redis/utils';
@@ -28,9 +28,15 @@ export class DatabaseFactory {
2828

2929
/**
3030
* Create model
31+
* @param sessionMetadata
3132
* @param database
33+
* @param options
3234
*/
33-
async createDatabaseModel(sessionMetadata: SessionMetadata, database: Database): Promise<Database> {
35+
async createDatabaseModel(
36+
sessionMetadata: SessionMetadata,
37+
database: Database,
38+
options: IRedisConnectionOptions = {},
39+
): Promise<Database> {
3440
let model = await this.createStandaloneDatabaseModel(database);
3541

3642
const client = await this.redisClientFactory.getConnectionStrategy().createStandaloneClient(
@@ -40,7 +46,7 @@ export class DatabaseFactory {
4046
context: ClientContext.Common,
4147
},
4248
database,
43-
{ useRetry: true },
49+
{ ...options, useRetry: true },
4450
);
4551

4652
if (!HostingProvider[model.provider]) {

redisinsight/api/src/modules/redis-sentinel/redis-sentinel.service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ export class RedisSentinelService {
8484
password,
8585
},
8686
} as Database,
87+
undefined,
88+
{ enableReadyCheck: false },
8789
);
8890

8991
result.push({
@@ -124,7 +126,7 @@ export class RedisSentinelService {
124126
sessionMetadata: this.constantsProvider.getSystemSessionMetadata(),
125127
databaseId: database.id || uuidv4(),
126128
context: ClientContext.Common,
127-
}, database, { useRetry: false });
129+
}, database, { useRetry: false, enableReadyCheck: false });
128130
result = await discoverSentinelMasterGroups(client);
129131
this.redisSentinelAnalytics.sendGetSentinelMastersSucceedEvent(result);
130132

redisinsight/api/src/modules/redis/connection/ioredis.redis.connection.strategy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export class IoredisRedisConnectionStrategy extends RedisConnectionStrategy {
6060
maxRetriesPerRequest: REDIS_CLIENTS_CONFIG.maxRetriesPerRequest,
6161
retryStrategy: options?.useRetry ? this.retryStrategy.bind(this) : this.dummyFn.bind(this),
6262
autoResendUnfulfilledCommands: false,
63+
enableReadyCheck: options.enableReadyCheck ?? true,
6364
};
6465

6566
if (tls) {

redisinsight/api/src/modules/redis/redis.client.factory.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface IRedisConnectionOptions {
2222
useRetry?: boolean,
2323
connectionName?: string,
2424
clientLib?: RedisClientLib,
25+
enableReadyCheck?: boolean,
2526
}
2627

2728
@Injectable()

0 commit comments

Comments
 (0)