Compare commits

..

26 Commits

Author SHA1 Message Date
fengmk2
730113424c Release 2.6.1 2016-01-12 17:34:23 +08:00
fengmk2
658be3004f fix: source registry is not cnpm, ignore check status 2016-01-12 17:33:53 +08:00
fengmk2
214d0ad5c3 Release 2.6.0 2016-01-12 11:54:25 +08:00
Yiyu He
ca70c8a06d Merge pull request #786 from cnpm/add-sync-expired-check
feat(sync): monitor sync status
2016-01-12 10:20:02 +08:00
fengmk2
1c680367a7 feat(sync): monitor sync status
if last_sync_time > 2 x syncInterval, send the expired
warning message to admin
2016-01-12 10:11:20 +08:00
Yiyu He
3bd43d5ba9 Merge pull request #759 from cnpm/greenkeeper-urllib-2.6.0
Update urllib to version 2.6.0 🚀
2016-01-07 00:25:43 +08:00
Yiyu He
0965f8f8e5 Merge pull request #779 from cnpm/greenkeeper-agentkeepalive-2.0.3
Update agentkeepalive to version 2.0.3 🚀
2016-01-06 10:47:57 +08:00
greenkeeperio-bot
005eb603ae chore(package): update agentkeepalive to version 2.0.3
http://greenkeeper.io/
2016-01-05 20:40:22 +08:00
Yiyu He
65a9303dff Merge pull request #777 from gniavaj/master
fix SequelizeDatabaseError: ER_NO_SUCH_TABLE: Table 'qnpm.total' does…
2016-01-05 16:26:36 +08:00
gniavaj
3bc6b625ec fix SequelizeDatabaseError: ER_NO_SUCH_TABLE: Table 'qnpm.total' doesn't exist\nreproduce this bug:\nthe first startup of cnpmjs.org 2016-01-04 21:43:50 +08:00
Yiyu He
2b0dc6d17f Merge pull request #773 from cnpm/greenkeeper-moment-2.11.0
Update moment to version 2.11.0 🚀
2016-01-04 10:39:49 +08:00
Yiyu He
842d790dcb Merge pull request #774 from cnpm/greenkeeper-xss-0.2.10
xss@0.2.10 breaks build 🚨
2016-01-04 10:37:26 +08:00
greenkeeperio-bot
20eac48349 chore(package): update moment to version 2.11.0
http://greenkeeper.io/
2016-01-03 07:42:58 +08:00
greenkeeperio-bot
efb80e8c33 chore(package): update xss to version 0.2.10
http://greenkeeper.io/
2015-12-23 12:42:54 +08:00
alsotang
35fbc651cd remove bluebird
same as #767
2015-12-17 13:34:33 +08:00
Yiyu He
e55779ffa7 Merge pull request #767 from liyangready/master
remove bluebird
2015-12-17 11:12:23 +08:00
leon.lee
878176ea9c remove bluebird
maybe forget remove bluebird in this file
2015-12-17 11:08:49 +08:00
Yiyu He
e3a2eab000 Merge pull request #764 from cnpm/greenkeeper-pg-hstore-2.3.2
pg-hstore@2.3.2 breaks build ⚠️
2015-12-14 15:54:29 +08:00
greenkeeperio-bot
7478846754 chore(package): update pg-hstore to version 2.3.2
http://greenkeeper.io/
2015-12-14 08:31:56 +08:00
Yiyu He
8b244e6c26 Merge pull request #761 from cnpm/greenkeeper-mini-logger-1.1.0
Update mini-logger to version 1.1.0 🚀
2015-12-12 00:10:05 +08:00
greenkeeperio-bot
19217de010 chore(package): update mini-logger to version 1.1.0
http://greenkeeper.io/
2015-12-11 12:04:38 +08:00
greenkeeperio-bot
93a57b5dae chore(package): update urllib to version 2.6.0
http://greenkeeper.io/
2015-12-09 14:13:25 +08:00
Yiyu He
defb447f29 Merge pull request #756 from cnpm/fix-package-decode-error
fix: row.package will json parse error
2015-12-08 20:45:03 +08:00
fengmk2
93b73de164 Merge pull request #754 from cnpm/remove_bluebird
remove bluebird
2015-12-08 16:44:50 +08:00
fengmk2
ffc6124c0e fix: row.package will json parse error
need to ignore it.

also remove array.map on parseRow
2015-12-08 16:20:47 +08:00
Jackson Tian
ab40a992c2 remove bluebird 2015-12-08 12:03:36 +08:00
11 changed files with 87 additions and 49 deletions

View File

@@ -1,4 +1,24 @@
2.6.1 / 2016-01-12
==================
* fix: source registry is not cnpm, ignore check status
2.6.0 / 2016-01-12
==================
* feat(sync): monitor sync status
* chore(package): update agentkeepalive to version 2.0.3
* fix SequelizeDatabaseError: ER_NO_SUCH_TABLE: Table 'qnpm.total' doesn't exist\nreproduce this bug:\nthe first startup of cnpmjs.org
* chore(package): update moment to version 2.11.0
* chore(package): update xss to version 0.2.10
* chore(package): update pg-hstore to version 2.3.2
* chore(package): update mini-logger to version 1.1.0
* chore(package): update urllib to version 2.6.0
* fix: row.package will json parse error
* remove bluebird
* chore(package): update utility to version 1.6.0
2.5.1 / 2015-12-02
==================

View File

@@ -112,7 +112,7 @@ autod: install
@node_modules/.bin/autod -w \
--prefix "~" \
--exclude public,view,docs,backup,coverage \
--dep bluebird,mysql \
--dep mysql \
--keep should,supertest,should-http,chunkstream,mm,pedding
@$(MAKE) install

View File

@@ -83,9 +83,10 @@ function start(options) {
debug('save config %s to %s', configJSON, configfile);
// if sqlite db file not exists, init first
initDatabase();
initDatabase(function() {
require('../dispatch');
});
require('../dispatch');
fs.writeFileSync(path.join(dataDir, 'pid'), process.pid + '');
}
@@ -105,7 +106,7 @@ function stop(options) {
}
}
function initDatabase() {
function initDatabase(callback) {
var models = require('../models');
models.sequelize.sync({ force: false })
@@ -117,6 +118,7 @@ function initDatabase() {
throw err;
} else {
console.log('[models/init_script.js] `sqlite` sequelize sync and init success');
callback();
}
});
})

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.org - controllers/registry/package/list.js
*
* Copyright(c) fengmk2 and other contributors.
/**
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
@@ -130,6 +128,10 @@ module.exports = function* list() {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var pkg = row.package;
// pkg is string ... ignore it
if (typeof pkg === 'string') {
continue;
}
common.setDownloadURL(pkg, this);
pkg._cnpm_publish_time = row.publish_time;
versions[pkg.version] = pkg;

View File

@@ -42,15 +42,10 @@ exports.list = function* () {
}
var data = yield tasks;
var keys = Object.keys(data);
for (var k = 0; k < keys.length; k++) {
var key = keys[k];
// make empty object as undefined
if (data[key].length === 0) {
data[key] = undefined;
for (var k in data) {
if (data[k].length === 0) {
data[k] = undefined;
}
}
this.body = data;
};

View File

@@ -1,6 +1,6 @@
{
"name": "cnpmjs.org",
"version": "2.5.1",
"version": "2.6.1",
"description": "Private npm registry and web for Enterprise, base on MySQL and Simple Store Service",
"main": "index.js",
"scripts": {
@@ -13,8 +13,7 @@
"cnpmjs.org": "bin/cli.js"
},
"dependencies": {
"agentkeepalive": "~1.2.0",
"bluebird": "~3.0.6",
"agentkeepalive": "~2.0.3",
"bytes": "~2.2.0",
"cfork": "~1.4.0",
"co": "~4.6.0",
@@ -39,12 +38,11 @@
"koa-middlewares": "~2.1.0",
"koa-mock": "~1.5.0",
"koa-safe-jsonp": "~0.3.0",
"lodash": "^3.10.1",
"markdown-it": "~3.0.6",
"mime": "~1.3.4",
"mini-logger": "~1.0.0",
"mini-logger": "~1.1.0",
"mkdirp": "~0.5.0",
"moment": "~2.10.6",
"moment": "~2.11.0",
"mysql": "~2.5.4",
"nodemailer": "~1.3.0",
"semver": "~5.1.0",
@@ -52,9 +50,9 @@
"thunkify-wrap": "~1.0.4",
"treekill": "~1.0.0",
"tunnel-agent": "^0.4.0",
"urllib": "~2.5.0",
"urllib": "~2.6.0",
"utility": "~1.6.0",
"xss": "~0.2.8"
"xss": "~0.2.10"
},
"devDependencies": {
"autod": "*",
@@ -68,7 +66,7 @@
"node-dev": "*",
"pedding": "*",
"pg": "~4.4.2",
"pg-hstore": "~2.3.1",
"pg-hstore": "~2.3.2",
"should": "~7.1.0",
"should-http": "*",
"sqlite3": "*",

View File

@@ -15,7 +15,6 @@
* Module dependencies.
*/
global.Promise = require('bluebird');
var koa = require('koa');
var app = module.exports = koa();
var http = require('http');

View File

@@ -15,7 +15,6 @@
* Module dependencies.
*/
global.Promise = require('bluebird');
var opensearch = require('../middleware/opensearch');
var notFound = require('../middleware/web_not_found');
var staticCache = require('../middleware/static');

View File

@@ -1,4 +1,4 @@
/**!
/**
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
@@ -12,8 +12,6 @@
* Module dependencies.
*/
var _ = require('lodash');
var models = require('../models');
var common = require('./common');
var Tag = models.Tag;
@@ -221,11 +219,11 @@ exports.listPublicModuleNamesSince = function* (start) {
exports.listAllPublicModuleNames = function* () {
var sql = 'SELECT DISTINCT(name) AS name FROM tag ORDER BY name';
var rows = yield models.query(sql);
return _.chain(rows).filter(function (row) {
return rows.filter(function (row) {
return !common.isPrivatePackage(row.name);
}).map(function (row) {
return row.name;
}).value();
});
};
exports.listModulesByName = function* (moduleName) {
@@ -235,10 +233,11 @@ exports.listModulesByName = function* (moduleName) {
},
order: [ ['id', 'DESC'] ]
});
return _.chain(mods).map(function (mod) {
for (var mod of mods) {
parseRow(mod);
return mod;
}).value();
}
return mods;
};
exports.getModuleLastModified = function* (name) {

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.org - services/total.js
*
* Copyright(c) fengmk2 and other contributors.
/**
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';

View File

@@ -1,11 +1,10 @@
/**!
* cnpmjs.org - sync/index.js
*
* Copyright(c) cnpmjs.org and other contributors.
/**
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
@@ -14,7 +13,6 @@
* Module dependencies.
*/
global.Promise = require('bluebird');
var debug = require('debug')('cnpmjs.org:sync:index');
var co = require('co');
var ms = require('humanize-ms');
@@ -49,7 +47,8 @@ function onerror(err) {
//set sync_status = 0 at first
co(function* () {
yield* totalService.updateSyncStatus(0);
yield totalService.updateSyncStatus(0);
yield checkSyncStatus();
}).catch(onerror);
var syncInterval = ms(config.syncInterval);
@@ -68,7 +67,7 @@ var syncFn = co.wrap(function* () {
var data;
var error;
try {
data = yield* sync();
data = yield sync();
} catch (err) {
error = err;
error.message += ' (sync package error)';
@@ -80,6 +79,9 @@ var syncFn = co.wrap(function* () {
}
syncing = false;
}
// check last_sync_time and last_exist_sync_time
yield checkSyncStatus();
});
if (sync) {
@@ -104,7 +106,7 @@ var syncPopularFn = co.wrap(function* syncPopular() {
var data;
var error;
try {
data = yield* startSyncPopular();
data = yield startSyncPopular();
} catch (err) {
error = err;
error.message += ' (sync package error)';
@@ -174,3 +176,27 @@ function sendMailToAdmin(err, result, syncTime) {
});
}
}
function* checkSyncStatus() {
// if source registry not cnpm, ignore it. e.g.: cnpmjs.org source registry is npmjs.org
if (!config.sourceNpmRegistryIsCNpm) {
return;
}
var total = yield totalService.getTotalInfo();
var lastSyncTime;
if (config.syncModel === 'all') {
lastSyncTime = total.last_sync_time;
} else if (config.syncModel === 'exist') {
lastSyncTime = total.last_exist_sync_time;
}
debug('checkSyncStatus start, lastSyncTime: %s, syncInterval: %s', lastSyncTime, syncInterval);
if (!lastSyncTime) {
return;
}
var diff = Date.now() - lastSyncTime;
if (diff > syncInterval * 2) {
var err = new Error('Last sync time is expired in ' + diff + ' ms, lastSyncTime: ' + new Date(lastSyncTime));
err.name = 'SyncExpriedError';
sendMailToAdmin(err, null, new Date());
}
}