From a773f82083c98da41f6ea9f5828c02474f61de57 Mon Sep 17 00:00:00 2001 From: Cayman Date: Mon, 23 Sep 2019 19:21:41 -0500 Subject: [PATCH] Address pr comments --- docker-compose.yml | 2 + docker/Dockerfile.production | 37 +++++++++++++++++++ packages/lodestar/package.json | 1 - packages/lodestar/peerId.json | 5 --- packages/lodestar/src/chain/chain.ts | 2 +- packages/lodestar/src/interop/dump.ts | 9 +++-- packages/lodestar/src/metrics/server/http.ts | 2 +- packages/lodestar/src/util/sleep.ts | 3 ++ .../src/validator/services/attestation.ts | 5 +-- .../chain/factory/block/assembleBlock.test.ts | 3 +- .../lodestar/test/e2e/network/network.test.ts | 3 +- 11 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 docker/Dockerfile.production delete mode 100644 packages/lodestar/peerId.json create mode 100644 packages/lodestar/src/util/sleep.ts diff --git a/docker-compose.yml b/docker-compose.yml index 86fc1b5e336..bb8ba444168 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,8 @@ version: '2' services: prometheus: image: prom/prometheus:v2.9.2 + depends_on: + - lodestar volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: diff --git a/docker/Dockerfile.production b/docker/Dockerfile.production new file mode 100644 index 00000000000..29d7bb03b37 --- /dev/null +++ b/docker/Dockerfile.production @@ -0,0 +1,37 @@ +FROM node:10.16-alpine + +WORKDIR /usr/app + +RUN apk add --update git python make g++ linux-headers paxctl gcc && \ + rm -rf /tmp/* /var/cache/apk/* + +COPY lerna.json . +COPY package.json . +COPY packages/lodestar/package.json ./packages/lodestar/package.json +COPY yarn.lock . + +RUN yarn install --frozen-lockfile && node_modules/.bin/lerna bootstrap && yarn cache clean + +COPY . . + +RUN node_modules/.bin/lerna run build + +FROM node:10.16-alpine + +RUN apk add --update git python make g++ linux-headers paxctl gcc && \ + rm -rf /tmp/* /var/cache/apk/* + +WORKDIR /app + +COPY --from=0 /usr/app/packages/lodestar/lib /app/lib +COPY --from=0 /usr/app/packages/lodestar/bin /app/bin +COPY --from=0 /usr/app/packages/lodestar/package.json /app/package.json +COPY --from=0 /usr/app/yarn.lock /app/yarn.lock + +RUN yarn install --frozen-lockfile --production && yarn cache clean && apk del git python g++ gcc make + +RUN chown -R node: . + +USER node + +ENTRYPOINT ["/app/bin/lodestar"] diff --git a/packages/lodestar/package.json b/packages/lodestar/package.json index 44d71cebec0..98a7f58dd96 100644 --- a/packages/lodestar/package.json +++ b/packages/lodestar/package.json @@ -98,7 +98,6 @@ "pull-pushable": "^2.2.0", "pull-stream": "^3.6.13", "qs": "^6.7.0", - "queue": "^6.0.1", "snake-case": "^2.1.0", "strict-event-emitter-types": "^2.0.0", "varint": "^5.0.0", diff --git a/packages/lodestar/peerId.json b/packages/lodestar/peerId.json deleted file mode 100644 index b7c126900d8..00000000000 --- a/packages/lodestar/peerId.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "id": "16Uiu2HAmE129ZRUtTNtXHQTRgwnjMqKkgJWZb5LSqcx5br8YqxA8", - "privKey": "CAISIP5MQv0pH0dDqkDhyO88sUtpdfDn3MMVkBsS++GJlCnY", - "pubKey": "CAISIQMT/VX5iUjCV2Eia3iAUtO2lqiMaBFldHfnwrvLCgQ13Q==" -} \ No newline at end of file diff --git a/packages/lodestar/src/chain/chain.ts b/packages/lodestar/src/chain/chain.ts index 419bff81e2e..0fd7379112f 100644 --- a/packages/lodestar/src/chain/chain.ts +++ b/packages/lodestar/src/chain/chain.ts @@ -32,7 +32,7 @@ import {IChainOptions} from "./options"; import {OpPool} from "../opPool"; import {Block} from "ethers/providers"; import fs from "fs"; -import {sleep} from "../validator/services/attestation"; +import {sleep} from "../util/sleep"; import {AsyncQueue, queue} from "async"; import FastPriorityQueue from "fastpriorityqueue"; import {getCurrentSlot} from "./stateTransition/util/genesis"; diff --git a/packages/lodestar/src/interop/dump.ts b/packages/lodestar/src/interop/dump.ts index 10650dc6ed0..792e342b696 100644 --- a/packages/lodestar/src/interop/dump.ts +++ b/packages/lodestar/src/interop/dump.ts @@ -6,6 +6,12 @@ import {quickStartState} from "./state"; import {ProgressiveMerkleTree} from "../util/merkleTree"; import {DEPOSIT_CONTRACT_TREE_DEPTH} from "../constants"; +import yargs from "yargs"; +const args = yargs.parse()._; + +// This file runs the dump command: +// node -r ts-node/register src/interop/dump.ts genesisTime validatorCount outputFile + export function dumpQuickStartState( genesisTime: number, validatorCount: number, @@ -17,7 +23,4 @@ export function dumpQuickStartState( fs.writeFileSync(output, serialize(state, BeaconState)); } -// eslint-disable-next-line -import yargs from "yargs"; -const args = yargs.parse()._; dumpQuickStartState(parseInt(args[0]), parseInt(args[1]), args[2]); diff --git a/packages/lodestar/src/metrics/server/http.ts b/packages/lodestar/src/metrics/server/http.ts index 341648bba7d..60384853e05 100644 --- a/packages/lodestar/src/metrics/server/http.ts +++ b/packages/lodestar/src/metrics/server/http.ts @@ -25,7 +25,7 @@ export class HttpMetricsServer implements IMetricsServer { public async start(): Promise { if (this.opts.enabled) { - this.logger.info("Starting prometheus..."); + this.logger.info(`Starting metrics HTTP server on port ${this.opts.serverPort}`); await promisify(this.http.listen.bind(this.http))(this.opts.serverPort); } } diff --git a/packages/lodestar/src/util/sleep.ts b/packages/lodestar/src/util/sleep.ts new file mode 100644 index 00000000000..5785ba7805f --- /dev/null +++ b/packages/lodestar/src/util/sleep.ts @@ -0,0 +1,3 @@ +export function sleep(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)); +} diff --git a/packages/lodestar/src/validator/services/attestation.ts b/packages/lodestar/src/validator/services/attestation.ts index 9fe4c03b3cd..5d35c63319b 100644 --- a/packages/lodestar/src/validator/services/attestation.ts +++ b/packages/lodestar/src/validator/services/attestation.ts @@ -21,12 +21,9 @@ import {IRpcClient} from "../rpc"; import {DomainType} from "../../constants"; import {IValidatorDB} from "../../db/api"; import {ILogger} from "../../logger"; +import {sleep} from "../../util/sleep"; import {Keypair} from "@chainsafe/bls"; -export function sleep(ms: number): Promise { - return new Promise(resolve => setTimeout(resolve, ms)); -} - export class AttestationService { private config: IBeaconConfig; diff --git a/packages/lodestar/test/e2e/chain/factory/block/assembleBlock.test.ts b/packages/lodestar/test/e2e/chain/factory/block/assembleBlock.test.ts index e7a63b2a92d..bcf2bf5bf05 100644 --- a/packages/lodestar/test/e2e/chain/factory/block/assembleBlock.test.ts +++ b/packages/lodestar/test/e2e/chain/factory/block/assembleBlock.test.ts @@ -115,8 +115,7 @@ describe("produce block", function () { return await assembleBlock(config, chainStub, dbStub, opPoolStub, eth1Stub, slot, randao); }); const block = await blockProposingService.createAndPublishBlock(1, state.fork); - stateTransition(config, state, block, false) - //expect(() => stateTransition(config, state, block, false)).to.not.throw(); + expect(() => stateTransition(config, state, block, false)).to.not.throw(); }); function getBlockProposingService(keypair: Keypair): BlockProposingService { diff --git a/packages/lodestar/test/e2e/network/network.test.ts b/packages/lodestar/test/e2e/network/network.test.ts index e2497cedfc0..84ddce841ff 100644 --- a/packages/lodestar/test/e2e/network/network.test.ts +++ b/packages/lodestar/test/e2e/network/network.test.ts @@ -10,6 +10,7 @@ import {shardAttestationTopic} from "../../../src/network/util"; import {ILogger, WinstonLogger} from "../../../src/logger"; import {INetworkOptions} from "../../../src/network/options"; import {BeaconMetrics} from "../../../src/metrics"; +import {sleep} from "../../../src/util/sleep"; import Libp2p from "libp2p"; const multiaddr = "/ip4/127.0.0.1/tcp/0"; @@ -63,7 +64,7 @@ describe("[network] network", function () { new Promise((resolve) => netA.on("peer:disconnect", resolve)), new Promise((resolve) => netB.on("peer:disconnect", resolve)), ]); - await new Promise(resolve => setTimeout(resolve, 100)); + await sleep(100); await netA.disconnect(netB.peerInfo); await disconnection;