From b6a5bf751f9b663fd5562fd7b7e4f4b52878662f Mon Sep 17 00:00:00 2001 From: Mengwei Ding Date: Tue, 15 Jan 2019 16:08:40 +0800 Subject: [PATCH] [Code] Remove absolute local path from esqueue payload --- x-pack/plugins/code/index.ts | 11 +++++++++-- x-pack/plugins/code/server/__tests__/clone_worker.ts | 6 +++--- .../plugins/code/server/queue/abstract_git_worker.ts | 7 ++++--- x-pack/plugins/code/server/queue/clone_worker.ts | 10 +++++----- .../plugins/code/server/queue/delete_worker.test.ts | 7 ++++--- x-pack/plugins/code/server/queue/delete_worker.ts | 6 ++++-- x-pack/plugins/code/server/queue/index_worker.test.ts | 4 ---- .../plugins/code/server/queue/update_worker.test.ts | 3 ++- x-pack/plugins/code/server/queue/update_worker.ts | 8 +++++--- .../plugins/code/server/repository_service_factory.ts | 4 ++-- x-pack/plugins/code/server/routes/repository.ts | 6 ------ .../plugins/code/server/scheduler/index_scheduler.ts | 1 - .../plugins/code/server/scheduler/update_scheduler.ts | 1 - 13 files changed, 38 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/code/index.ts b/x-pack/plugins/code/index.ts index 670f4403ce074..fdb667b751c23 100644 --- a/x-pack/plugins/code/index.ts +++ b/x-pack/plugins/code/index.ts @@ -153,6 +153,7 @@ export const code = (kibana: any) => queue, log, esClient, + serverOptions, indexWorker, repoServiceFactory, socketService @@ -161,12 +162,19 @@ export const code = (kibana: any) => queue, log, esClient, + serverOptions, cancellationService, lspService, repoServiceFactory, socketService ).bind(); - const updateWorker = new UpdateWorker(queue, log, esClient, repoServiceFactory).bind(); + const updateWorker = new UpdateWorker( + queue, + log, + esClient, + serverOptions, + repoServiceFactory + ).bind(); // Initialize schedulers. const updateScheduler = new UpdateScheduler(updateWorker, serverOptions, esClient, log); @@ -179,7 +187,6 @@ export const code = (kibana: any) => // Add server routes and initialize the plugin here repositoryRoute( server, - serverOptions, cloneWorker, deleteWorker, indexWorker, diff --git a/x-pack/plugins/code/server/__tests__/clone_worker.ts b/x-pack/plugins/code/server/__tests__/clone_worker.ts index 0fccc6c7a0acb..7f12e824b27f1 100644 --- a/x-pack/plugins/code/server/__tests__/clone_worker.ts +++ b/x-pack/plugins/code/server/__tests__/clone_worker.ts @@ -115,6 +115,7 @@ describe('clone_worker_tests', () => { esQueue as Esqueue, log, {} as EsClient, + serverOptions, {} as IndexWorker, (repoServiceFactory as any) as RepositoryServiceFactory, {} as SocketService @@ -123,7 +124,6 @@ describe('clone_worker_tests', () => { await cloneWorker.executeJob({ payload: { url: 'https://github.com/Microsoft/TypeScript-Node-Starter.git', - dataPath: serverOptions.repoPath, }, options: {}, }); @@ -158,6 +158,7 @@ describe('clone_worker_tests', () => { esQueue as Esqueue, log, esClient as EsClient, + serverOptions, (indexWorker as any) as IndexWorker, {} as RepositoryServiceFactory, (socketService as any) as SocketService @@ -167,7 +168,6 @@ describe('clone_worker_tests', () => { { payload: { url: 'https://github.com/Microsoft/TypeScript-Node-Starter.git', - dataPath: serverOptions.repoPath, }, options: {}, }, @@ -202,6 +202,7 @@ describe('clone_worker_tests', () => { esQueue as Esqueue, log, (esClient as any) as EsClient, + serverOptions, {} as IndexWorker, {} as RepositoryServiceFactory, {} as SocketService @@ -210,7 +211,6 @@ describe('clone_worker_tests', () => { await cloneWorker.onJobEnqueued({ payload: { url: 'https://github.com/Microsoft/TypeScript-Node-Starter.git', - dataPath: serverOptions.repoPath, }, options: {}, }); diff --git a/x-pack/plugins/code/server/queue/abstract_git_worker.ts b/x-pack/plugins/code/server/queue/abstract_git_worker.ts index dfe34dfdb1d4e..c8e0e595b2197 100644 --- a/x-pack/plugins/code/server/queue/abstract_git_worker.ts +++ b/x-pack/plugins/code/server/queue/abstract_git_worker.ts @@ -15,6 +15,7 @@ import { getDefaultBranch, getHeadRevision } from '../git_operations'; import { EsClient, Esqueue } from '../lib/esqueue'; import { Log } from '../log'; import { RepositoryObjectClient } from '../search'; +import { ServerOptions } from '../server_options'; import { AbstractWorker } from './abstract_worker'; import { Job } from './job'; @@ -25,7 +26,8 @@ export abstract class AbstractGitWorker extends AbstractWorker { constructor( protected readonly queue: Esqueue, protected readonly log: Log, - protected readonly client: EsClient + protected readonly client: EsClient, + protected readonly serverOptions: ServerOptions ) { super(queue, log); this.objectClient = new RepositoryObjectClient(client); @@ -33,9 +35,8 @@ export abstract class AbstractGitWorker extends AbstractWorker { public async onJobCompleted(job: Job, res: CloneWorkerResult) { // Update the default branch. - const { dataPath } = job.payload; const repoUri = res.uri; - const localPath = RepositoryUtils.repositoryLocalPath(dataPath, repoUri); + const localPath = RepositoryUtils.repositoryLocalPath(this.serverOptions.repoPath, repoUri); const revision = await getHeadRevision(localPath); const defaultBranch = await getDefaultBranch(localPath); diff --git a/x-pack/plugins/code/server/queue/clone_worker.ts b/x-pack/plugins/code/server/queue/clone_worker.ts index 9613bb84ee0f7..8582ab69423da 100644 --- a/x-pack/plugins/code/server/queue/clone_worker.ts +++ b/x-pack/plugins/code/server/queue/clone_worker.ts @@ -14,6 +14,7 @@ import { import { EsClient, Esqueue } from '../lib/esqueue'; import { Log } from '../log'; import { RepositoryServiceFactory } from '../repository_service_factory'; +import { ServerOptions } from '../server_options'; import { SocketService } from '../socket_service'; import { AbstractGitWorker } from './abstract_git_worker'; import { IndexWorker } from './index_worker'; @@ -26,17 +27,18 @@ export class CloneWorker extends AbstractGitWorker { protected readonly queue: Esqueue, protected readonly log: Log, protected readonly client: EsClient, + protected readonly serverOptions: ServerOptions, private readonly indexWorker: IndexWorker, private readonly repoServiceFactory: RepositoryServiceFactory, private readonly socketService?: SocketService ) { - super(queue, log, client); + super(queue, log, client, serverOptions); } public async executeJob(job: Job) { - const { url, dataPath } = job.payload; + const { url } = job.payload; this.log.info(`Execute clone job for ${url}`); - const repoService = this.repoServiceFactory.newInstance(dataPath, this.log); + const repoService = this.repoServiceFactory.newInstance(this.serverOptions.repoPath, this.log); const repo = RepositoryUtils.buildRepository(url); return await repoService.clone(repo, (progress: number, cloneProgress?: CloneProgress) => { this.updateProgress(repo.uri, progress, cloneProgress); @@ -58,11 +60,9 @@ export class CloneWorker extends AbstractGitWorker { } // Throw out a repository index request. - const { dataPath } = job.payload; const payload = { uri: res.repo.uri, revision: res.repo.revision, - dataPath, }; await this.indexWorker.enqueueJob(payload, {}); diff --git a/x-pack/plugins/code/server/queue/delete_worker.test.ts b/x-pack/plugins/code/server/queue/delete_worker.test.ts index 5e40bdcb67822..6b2112c04c4aa 100644 --- a/x-pack/plugins/code/server/queue/delete_worker.test.ts +++ b/x-pack/plugins/code/server/queue/delete_worker.test.ts @@ -11,6 +11,7 @@ import { WorkerReservedProgress } from '../../model'; import { Log } from '../log'; import { LspService } from '../lsp/lsp_service'; import { RepositoryServiceFactory } from '../repository_service_factory'; +import { ServerOptions } from '../server_options'; import { SocketService } from '../socket_service'; import { ConsoleLoggerFactory } from '../utils/console_logger_factory'; import { CancellationSerivce } from './cancellation_service'; @@ -77,6 +78,7 @@ test('Execute delete job.', async () => { esQueue as Esqueue, log, esClient as EsClient, + {} as ServerOptions, (cancellationService as any) as CancellationSerivce, (lspService as any) as LspService, (repoServiceFactory as any) as RepositoryServiceFactory, @@ -86,7 +88,6 @@ test('Execute delete job.', async () => { await deleteWorker.executeJob({ payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, }); @@ -117,6 +118,7 @@ test('On delete job enqueued.', async () => { esQueue as Esqueue, log, esClient as EsClient, + {} as ServerOptions, {} as CancellationSerivce, {} as LspService, {} as RepositoryServiceFactory, @@ -126,7 +128,6 @@ test('On delete job enqueued.', async () => { await deleteWorker.onJobEnqueued({ payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, }); @@ -146,6 +147,7 @@ test('On delete job completed.', async () => { esQueue as Esqueue, log, esClient as EsClient, + {} as ServerOptions, {} as CancellationSerivce, {} as LspService, {} as RepositoryServiceFactory, @@ -156,7 +158,6 @@ test('On delete job completed.', async () => { { payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, }, diff --git a/x-pack/plugins/code/server/queue/delete_worker.ts b/x-pack/plugins/code/server/queue/delete_worker.ts index 4e631fb6ef697..2f13f3e1169c0 100644 --- a/x-pack/plugins/code/server/queue/delete_worker.ts +++ b/x-pack/plugins/code/server/queue/delete_worker.ts @@ -14,6 +14,7 @@ import { Log } from '../log'; import { LspService } from '../lsp/lsp_service'; import { RepositoryServiceFactory } from '../repository_service_factory'; import { RepositoryObjectClient } from '../search'; +import { ServerOptions } from '../server_options'; import { SocketService } from '../socket_service'; import { AbstractWorker } from './abstract_worker'; import { CancellationSerivce } from './cancellation_service'; @@ -27,6 +28,7 @@ export class DeleteWorker extends AbstractWorker { protected readonly queue: Esqueue, protected readonly log: Log, protected readonly client: EsClient, + protected readonly serverOptions: ServerOptions, private readonly cancellationService: CancellationSerivce, private readonly lspService: LspService, private readonly repoServiceFactory: RepositoryServiceFactory, @@ -37,7 +39,7 @@ export class DeleteWorker extends AbstractWorker { } public async executeJob(job: Job) { - const { uri, dataPath } = job.payload; + const { uri } = job.payload; // 1. Notify repo delete start through websocket. this.socketService.broadcastDeleteProgress(uri, WorkerReservedProgress.INIT); @@ -47,7 +49,7 @@ export class DeleteWorker extends AbstractWorker { this.cancellationService.cancelIndexJob(uri); // 3. Delete repository on local fs. - const repoService = this.repoServiceFactory.newInstance(dataPath, this.log); + const repoService = this.repoServiceFactory.newInstance(this.serverOptions.repoPath, this.log); const deleteRepoPromise = this.deletePromiseWrapper(repoService.remove(uri), 'git data', uri); // 4. Delete ES indices and aliases diff --git a/x-pack/plugins/code/server/queue/index_worker.test.ts b/x-pack/plugins/code/server/queue/index_worker.test.ts index a53d49fcb03e2..5c2a544cf7409 100644 --- a/x-pack/plugins/code/server/queue/index_worker.test.ts +++ b/x-pack/plugins/code/server/queue/index_worker.test.ts @@ -74,7 +74,6 @@ test('Execute index job.', async () => { await indexWorker.executeJob({ payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, cancellationToken: cToken, @@ -138,7 +137,6 @@ test('Execute index job and then cancel.', async () => { await indexWorker.executeJob({ payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, cancellationToken: cToken, @@ -179,7 +177,6 @@ test('On index job enqueued.', async () => { await indexWorker.onJobEnqueued({ payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, }); @@ -208,7 +205,6 @@ test('On index job completed.', async () => { { payload: { uri: 'github.com/elastic/kibana', - dataPath: 'mockpath', }, options: {}, }, diff --git a/x-pack/plugins/code/server/queue/update_worker.test.ts b/x-pack/plugins/code/server/queue/update_worker.test.ts index a8fd880e0345d..53120f4d0d7c5 100644 --- a/x-pack/plugins/code/server/queue/update_worker.test.ts +++ b/x-pack/plugins/code/server/queue/update_worker.test.ts @@ -8,6 +8,7 @@ import sinon from 'sinon'; import { AnyObject, EsClient, Esqueue } from '../lib/esqueue'; import { Log } from '../log'; import { RepositoryServiceFactory } from '../repository_service_factory'; +import { ServerOptions } from '../server_options'; import { ConsoleLoggerFactory } from '../utils/console_logger_factory'; import { UpdateWorker } from './update_worker'; @@ -43,13 +44,13 @@ test('Execute update job', async () => { esQueue as Esqueue, log, esClient as EsClient, + {} as ServerOptions, (repoServiceFactory as any) as RepositoryServiceFactory ); await updateWorker.executeJob({ payload: { uri: 'mockrepo', - dataPath: 'mockpath', }, options: {}, }); diff --git a/x-pack/plugins/code/server/queue/update_worker.ts b/x-pack/plugins/code/server/queue/update_worker.ts index ff8c9c5bd6455..5690533245a8c 100644 --- a/x-pack/plugins/code/server/queue/update_worker.ts +++ b/x-pack/plugins/code/server/queue/update_worker.ts @@ -8,6 +8,7 @@ import { CloneWorkerResult } from '../../model'; import { EsClient, Esqueue } from '../lib/esqueue'; import { Log } from '../log'; import { RepositoryServiceFactory } from '../repository_service_factory'; +import { ServerOptions } from '../server_options'; import { AbstractGitWorker } from './abstract_git_worker'; import { Job } from './job'; @@ -18,15 +19,16 @@ export class UpdateWorker extends AbstractGitWorker { queue: Esqueue, protected readonly log: Log, protected readonly client: EsClient, + protected readonly serverOptions: ServerOptions, protected readonly repoServiceFactory: RepositoryServiceFactory ) { - super(queue, log, client); + super(queue, log, client, serverOptions); } public async executeJob(job: Job) { - const { uri, dataPath } = job.payload; + const { uri } = job.payload; this.log.info(`Execute update job for ${uri}`); - const repoService = this.repoServiceFactory.newInstance(dataPath, this.log); + const repoService = this.repoServiceFactory.newInstance(this.serverOptions.repoPath, this.log); return await repoService.update(uri); } diff --git a/x-pack/plugins/code/server/repository_service_factory.ts b/x-pack/plugins/code/server/repository_service_factory.ts index 8ec2ba560fcbb..312d502d2f696 100644 --- a/x-pack/plugins/code/server/repository_service_factory.ts +++ b/x-pack/plugins/code/server/repository_service_factory.ts @@ -8,7 +8,7 @@ import { Log } from './log'; import { RepositoryService } from './repository_service'; export class RepositoryServiceFactory { - public newInstance(dataPath: string, log: Log): RepositoryService { - return new RepositoryService(dataPath, log); + public newInstance(repoPath: string, log: Log): RepositoryService { + return new RepositoryService(repoPath, log); } } diff --git a/x-pack/plugins/code/server/routes/repository.ts b/x-pack/plugins/code/server/routes/repository.ts index b142734660d07..0456cade7ba6f 100644 --- a/x-pack/plugins/code/server/routes/repository.ts +++ b/x-pack/plugins/code/server/routes/repository.ts @@ -15,12 +15,10 @@ import { Log } from '../log'; import { CloneWorker, DeleteWorker, IndexWorker } from '../queue'; import { RepositoryConfigController } from '../repository_config_controller'; import { RepositoryObjectClient } from '../search'; -import { ServerOptions } from '../server_options'; import { EsClientWithRequest } from '../utils/esclient_with_request'; export function repositoryRoute( server: Server, - options: ServerOptions, cloneWorker: CloneWorker, deleteWorker: DeleteWorker, indexWorker: IndexWorker, @@ -28,7 +26,6 @@ export function repositoryRoute( repoConfigController: RepositoryConfigController ) { // Clone a git repository - server.securedRoute({ path: '/api/code/repo', requireAdmin: true, @@ -67,7 +64,6 @@ export function repositoryRoute( // Kick off clone job const payload = { url: repoUrl, - dataPath: options.repoPath, }; await cloneWorker.enqueueJob(payload, {}); return repo; @@ -107,7 +103,6 @@ export function repositoryRoute( const payload = { uri: repoUri, - dataPath: options.repoPath, }; await deleteWorker.enqueueJob(payload, {}); @@ -188,7 +183,6 @@ export function repositoryRoute( const payload = { uri: repoUri, revision: cloneStatus.revision, - dataPath: options.repoPath, }; await indexWorker.enqueueJob(payload, {}); return {}; diff --git a/x-pack/plugins/code/server/scheduler/index_scheduler.ts b/x-pack/plugins/code/server/scheduler/index_scheduler.ts index ef6eaa4a6737a..df7c25586fdfa 100644 --- a/x-pack/plugins/code/server/scheduler/index_scheduler.ts +++ b/x-pack/plugins/code/server/scheduler/index_scheduler.ts @@ -69,7 +69,6 @@ export class IndexScheduler extends AbstractScheduler { const payload = { uri: repo.uri, revision: repo.revision, - dataPath: this.serverOptions.repoPath, }; // Update the next repo index timestamp. diff --git a/x-pack/plugins/code/server/scheduler/update_scheduler.ts b/x-pack/plugins/code/server/scheduler/update_scheduler.ts index 6e736190e44db..ffbe428ffbd0d 100644 --- a/x-pack/plugins/code/server/scheduler/update_scheduler.ts +++ b/x-pack/plugins/code/server/scheduler/update_scheduler.ts @@ -56,7 +56,6 @@ export class UpdateScheduler extends AbstractScheduler { ) { const payload = { uri: repo.uri, - dataPath: this.serverOptions.repoPath, }; // Update the next repo update timestamp.