Skip to content

Commit 531ae96

Browse files
committed
add debug log
1 parent 21d4e72 commit 531ae96

File tree

8 files changed

+126
-73
lines changed

8 files changed

+126
-73
lines changed

bin/www

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,5 +119,5 @@ function onListening() {
119119
var bind = typeof addr === 'string'
120120
? 'pipe ' + addr
121121
: 'port ' + addr.port;
122-
log.debug('Listening on ' + bind);
122+
log.info('Listening on ' + bind);
123123
}

config/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ config.development.log4js = {
105105
],
106106
levels : {
107107
"[all]": "ERROR",
108+
"startup": "INFO",
108109
"http" : "INFO"
109110
}
110111
}

config/config.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ config.test.log4js = {
5252
],
5353
levels : {
5454
"[all]": "ERROR",
55+
"startup": "INFO",
5556
"http" : "INFO"
5657
}
5758
}

config/config.testwin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ config.test.log4js = {
5353
],
5454
levels : {
5555
"[all]": "ERROR",
56+
"startup": "INFO",
5657
"http" : "INFO"
5758
}
5859
}

core/services/datacenter-manager.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var common = require('../utils/common');
99
const MANIFEST_FILE_NAME = 'manifest.json';
1010
const CONTENTS_NAME = 'contents';
1111
var AppError = require('../app-error');
12+
var log4js = require('log4js');
13+
var log = log4js.getLogger("cps:DataCenterManager");
1214

1315
var proto = module.exports = function (){
1416
function DataCenterManager() {
@@ -61,48 +63,60 @@ proto.validateStore = function (providePackageHash) {
6163
var manifestFile = `${packageHashPath}/${MANIFEST_FILE_NAME}`;
6264
var contentPath = `${packageHashPath}/${CONTENTS_NAME}`;
6365
if (!this.hasPackageStoreSync(providePackageHash)) {
66+
log.debug(`validateStore providePackageHash not exist`);
6467
return Promise.resolve(false);
6568
}
6669
return security.calcAllFileSha256(contentPath)
6770
.then((manifestJson) => {
6871
var packageHash = security.packageHashSync(manifestJson);
72+
log.debug(`validateStore packageHash:`, packageHash);
6973
try {
7074
var manifestJsonLocal = JSON.parse(fs.readFileSync(manifestFile));
7175
}catch(e) {
76+
log.debug(`validateStore manifestFile contents invilad`);
7277
return false;
7378
}
7479
var packageHashLocal = security.packageHashSync(manifestJsonLocal);
80+
log.debug(`validateStore packageHashLocal:`, packageHashLocal);
7581
if (_.eq(providePackageHash, packageHash) && _.eq(providePackageHash, packageHashLocal)) {
82+
log.debug(`validateStore store files is ok`);
7683
return true;
7784
}
85+
log.debug(`validateStore store files broken`);
7886
return false;
7987
});
8088
}
8189

8290
proto.storePackage = function (sourceDst, force) {
91+
log.debug(`storePackage sourceDst:`, sourceDst);
8392
if (_.isEmpty(force)){
8493
force = false;
8594
}
8695
var self = this;
8796
return security.calcAllFileSha256(sourceDst)
8897
.then((manifestJson) => {
8998
var packageHash = security.packageHashSync(manifestJson);
99+
log.debug('storePackage manifestJson packageHash:', packageHash);
90100
var dataDir = self.getDataDir();
91101
var packageHashPath = `${dataDir}/${packageHash}`;
92102
var manifestFile = `${packageHashPath}/${MANIFEST_FILE_NAME}`;
93103
var contentPath = `${packageHashPath}/${CONTENTS_NAME}`;
94-
if (!force && self.hasPackageStoreSync(packageHash)) {
95-
return self.buildPackageInfo(packageHash, packageHashPath, contentPath, manifestFile);
96-
} else {
97-
return common.createEmptyFolder(packageHashPath)
98-
.then(() => {
99-
return common.move(sourceDst, contentPath)
104+
return self.validateStore(packageHash)
105+
.then((isValidate) => {
106+
if (!force && isValidate) {
107+
return self.buildPackageInfo(packageHash, packageHashPath, contentPath, manifestFile);
108+
} else {
109+
log.debug(`storePackage cover from sourceDst:`, sourceDst);
110+
return common.createEmptyFolder(packageHashPath)
100111
.then(() => {
101-
var manifestString = JSON.stringify(manifestJson);
102-
fs.writeFileSync(manifestFile, manifestString);
103-
return self.buildPackageInfo(packageHash, packageHashPath, contentPath, manifestFile);
112+
return common.move(sourceDst, contentPath)
113+
.then(() => {
114+
var manifestString = JSON.stringify(manifestJson);
115+
fs.writeFileSync(manifestFile, manifestString);
116+
return self.buildPackageInfo(packageHash, packageHashPath, contentPath, manifestFile);
117+
});
104118
});
105-
});
106-
}
119+
}
120+
});
107121
});
108122
}

core/services/package-manager.js

Lines changed: 51 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -50,35 +50,35 @@ proto.parseReqFile = function (req) {
5050
});
5151
};
5252

53-
proto.getDeploymentsVersions = function (deploymentId, appVersion) {
54-
return models.DeploymentsVersions.findOne({
55-
where: {deployment_id: deploymentId, app_version: appVersion}
53+
proto.createDeploymentsVersionIfNotExist = function (deploymentId, appVersion, t) {
54+
return models.DeploymentsVersions.findOrCreate({
55+
where: {deployment_id: deploymentId, app_version: appVersion},
56+
defaults: {current_package_id: 0},
57+
transaction: t
58+
})
59+
.spread((data, created)=>{
60+
if (created) {
61+
log.debug(`createDeploymentsVersionIfNotExist findOrCreate version ${appVersion}`);
62+
}
63+
log.debug(`createDeploymentsVersionIfNotExist version data:`, data.get());
64+
return data;
5665
});
5766
};
5867

59-
proto.existPackageHashAndCreateVersions = function (deploymentId, appVersion, packageHash) {
60-
return this.getDeploymentsVersions(deploymentId, appVersion)
68+
proto.isMatchPackageHash = function (packageId, packageHash) {
69+
if (_.lt(packageId, 0)) {
70+
log.debug(`isMatchPackageHash packageId is 0`);
71+
return Promise.resolve(false);
72+
}
73+
return models.Packages.findById(packageId)
6174
.then((data) => {
62-
if (_.isEmpty(data)){
63-
return models.DeploymentsVersions.create({
64-
deployment_id: deploymentId,
65-
app_version: appVersion,
66-
})
67-
.then(() => false);
68-
} else {
69-
var packageId = data.current_package_id;
70-
if (_.gt(packageId, 0)) {
71-
return models.Packages.findById(packageId)
72-
.then((data) => {
73-
if (_.eq(_.get(data,"package_hash"), packageHash)){
74-
return true;
75-
}else {
76-
return false;
77-
}
78-
});
79-
} else {
80-
return false
81-
}
75+
if (data && _.eq(data.get('package_hash'), packageHash)){
76+
log.debug(`isMatchPackageHash data:`, data.get());
77+
log.debug(`isMatchPackageHash packageHash exist`);
78+
return true;
79+
}else {
80+
log.debug(`isMatchPackageHash package is null`);
81+
return false;
8282
}
8383
});
8484
};
@@ -91,20 +91,11 @@ proto.createPackage = function (deploymentId, appVersion, packageHash, manifestH
9191
var description = params.description || "";
9292
var originalLabel = params.originalLabel || "";
9393
var originalDeployment = params.originalDeployment || "";
94+
var self = this;
9495
return models.Deployments.generateLabelId(deploymentId)
9596
.then((labelId) => {
9697
return models.sequelize.transaction((t) => {
97-
return models.DeploymentsVersions.findOne({where: {deployment_id: deploymentId, app_version: appVersion}})
98-
.then((deploymentsVersions) => {
99-
if (!deploymentsVersions) {
100-
return models.DeploymentsVersions.create({
101-
current_package_id: 0,
102-
deployment_id: deploymentId,
103-
app_version: appVersion
104-
},{transaction: t});
105-
}
106-
return deploymentsVersions;
107-
})
98+
return self.createDeploymentsVersionIfNotExist(deploymentId, appVersion, t)
10899
.then((deploymentsVersions) => {
109100
return models.Packages.create({
110101
deployment_version_id: deploymentsVersions.id,
@@ -216,6 +207,7 @@ proto.generateOneDiffPackage = function (workDirectoryPath, packageId, dataCente
216207
.then((data) => {
217208
return security.qetag(data.path)
218209
.then((diffHash) => {
210+
log.debug('diff');
219211
return common.uploadFileToStorage(diffHash, fileName)
220212
.then(() => {
221213
var stats = fs.statSync(fileName);
@@ -303,39 +295,50 @@ proto.releasePackage = function (deploymentId, packageInfo, fileType, filePath,
303295
if (fileType == "application/zip") {
304296
return common.unzipFile(filePath, directoryPath)
305297
} else {
298+
log.debug(`上传的文件格式不对`);
306299
throw new AppError.AppError("上传的文件格式不对");
307300
}
308301
})
309302
])
310303
.spread((blobHash) => {
311-
return security.isAndroidPackage(directoryPath)
304+
return security.uploadPackageType(directoryPath)
312305
.then((type) => {
313306
if (type === 1) {
314307
//android
315308
if (pubType == 'ios' ) {
316-
throw new AppError.AppError("it must be publish it by ios type");
309+
var e = new AppError.AppError("it must be publish it by ios type");
310+
log.debug(e);
311+
throw e;
317312
}
318313
} else if (type === 2) {
319314
//ios
320315
if (pubType == 'android'){
321-
throw new AppError.AppError("it must be publish it by android type");
316+
var e = new AppError.AppError("it must be publish it by android type");
317+
log.debug(e);
318+
throw e;
322319
}
323320
} else {
324321
//不验证
322+
log.debug(`Unknown package type`);
325323
}
326-
})
327-
.then(() => blobHash)
324+
return blobHash;
325+
});
328326
})
329327
.then((blobHash) => {
330328
var dataCenterManager = require('./datacenter-manager')();
331329
return dataCenterManager.storePackage(directoryPath)
332330
.then((dataCenter) => {
333331
var packageHash = dataCenter.packageHash;
334332
var manifestFile = dataCenter.manifestFilePath;
335-
return self.existPackageHashAndCreateVersions(deploymentId, appVersion, packageHash)
333+
return self.createDeploymentsVersionIfNotExist(deploymentId, appVersion)
334+
.then((deploymentsVersions) => {
335+
return self.isMatchPackageHash(deploymentsVersions.get('current_package_id'), packageHash);
336+
})
336337
.then((isExist) => {
337338
if (isExist){
338-
throw new AppError.AppError("The uploaded package is identical to the contents of the specified deployment's current release.");
339+
var e = new AppError.AppError("The uploaded package is identical to the contents of the specified deployment's current release.");
340+
log.debug(e.message);
341+
throw e;
339342
}
340343
return security.qetag(manifestFile);
341344
})
@@ -345,7 +348,7 @@ proto.releasePackage = function (deploymentId, packageInfo, fileType, filePath,
345348
common.uploadFileToStorage(blobHash, filePath)
346349
])
347350
.then(() => [packageHash, manifestHash, blobHash]);
348-
});
351+
})
349352
});
350353
})
351354
.spread((packageHash, manifestHash, blobHash) => {
@@ -411,7 +414,10 @@ proto.promotePackage = function (sourceDeploymentId, destDeploymentId, promoteUi
411414
if (!packages) {
412415
throw new AppError.AppError('does not exist packages.');
413416
}
414-
return self.existPackageHashAndCreateVersions(destDeploymentId, deploymentsVersions.app_version, packages.package_hash)
417+
return self.createDeploymentsVersionIfNotExist(destDeploymentId, deploymentsVersions.app_version)
418+
.then((deploymentsVersions) => {
419+
return self.isMatchPackageHash(deploymentsVersions.get('current_package_id'), packages.package_hash);
420+
})
415421
.then((isExist) => {
416422
if (isExist){
417423
throw new AppError.AppError("The uploaded package is identical to the contents of the specified deployment's current release.");

core/utils/common.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ common.move = function (sourceDst, targertDst) {
4545
return new Promise((resolve, reject) => {
4646
fsextra.move(sourceDst, targertDst, {clobber: true, limit: 16}, function (err) {
4747
if (err) {
48+
log.error(err);
4849
reject(err);
4950
} else {
51+
log.debug(`move success sourceDst:${sourceDst} targertDst:${targertDst}`);
5052
resolve();
5153
}
5254
});
@@ -57,8 +59,10 @@ common.deleteFolder = function (folderPath) {
5759
return new Promise((resolve, reject) => {
5860
fsextra.remove(folderPath, function (err) {
5961
if (err) {
62+
log.error(err);
6063
reject(err);
6164
}else {
65+
log.debug(`deleteFolder delete ${folderPath} success.`);
6266
resolve(null);
6367
}
6468
});
@@ -135,23 +139,41 @@ common.uploadFileToLocal = function (key, filePath) {
135139
if (!storageDir) {
136140
throw new AppError.AppError('please set config local storageDir');
137141
}
138-
if (!fs.existsSync(storageDir)) {
139-
throw new AppError.AppError(`please create dir ${storageDir}`);
142+
try {
143+
log.debug(`uploadFileToLocal check directory ${storageDir} fs.R_OK`);
144+
fs.accessSync(storageDir, fs.W_OK);
145+
log.debug(`uploadFileToLocal directory ${storageDir} fs.R_OK is ok`);
146+
} catch (e) {
147+
log.error(e);
148+
throw new AppError.AppError(e.message);
149+
}
150+
if (fs.existsSync(`${storageDir}/${key}`)) {
151+
return resolve(key);
140152
}
141-
fs.accessSync(storageDir, fs.W_OK);
142153
var stats = fs.statSync(storageDir);
143154
if (!stats.isDirectory()) {
144-
throw new AppError.AppError(`${storageDir} must be directory`);
155+
var e = new AppError.AppError(`${storageDir} must be directory`);
156+
log.error(e);
157+
throw e;
158+
}
159+
try {
160+
fs.accessSync(filePath, fs.R_OK);
161+
} catch (e) {
162+
log.error(e);
163+
throw new AppError.AppError(e.message);
145164
}
146-
fs.accessSync(filePath, fs.R_OK);
147165
stats = fs.statSync(filePath);
148166
if (!stats.isFile()) {
149-
throw new AppError.AppError(`${filePath} must be file`);
167+
var e = new AppError.AppError(`${filePath} must be file`);
168+
log.debug(e);
169+
throw e;
150170
}
151-
fsextra.copy(filePath, `${storageDir}/${key}`, {clobber: true, limit: 16}, (err) => {
171+
fsextra.copy(filePath, `${storageDir}/${key}`,(err) => {
152172
if (err) {
153-
return reject(err);
173+
log.error(new AppError.AppError(err.message));
174+
return reject(new AppError.AppError(err.message));
154175
}
176+
log.debug(`uploadFileToLocal copy file ${key} success.`);
155177
resolve(key);
156178
});
157179
});

0 commit comments

Comments
 (0)