Skip to content

Commit 883e1b1

Browse files
authored
Merge pull request #8728 from jackyalbo/jacky-fix5
Fix to break semaphore circular dependency
2 parents aa6f37c + e9d8785 commit 883e1b1

38 files changed

+190
-184
lines changed

src/agent/agent_cli.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const dbg = require('../util/debug_module')(__filename);
2020
const Agent = require('./agent');
2121
const fs_utils = require('../util/fs_utils');
2222
const os_utils = require('../util/os_utils');
23-
const Semaphore = require('../util/semaphore');
23+
const semaphore = require('../util/semaphore');
2424
const json_utils = require('../util/json_utils');
2525
const addr_utils = require('../util/addr_utils');
2626
const debug_config = require('../util/debug_config');
@@ -494,7 +494,7 @@ class AgentCLI {
494494
if (n === 0) {
495495
return self.create(0, paths_to_work_on);
496496
} else {
497-
const sem = new Semaphore(5);
497+
const sem = new semaphore.Semaphore(5);
498498
return P.all(_.times(n, function() {
499499
return sem.surround(function() {
500500
return self.create(n, paths_to_work_on);

src/agent/block_store_services/block_store_mongo.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ const size_utils = require('../../util/size_utils');
99
const mongo_client = require('../../util/mongo_client');
1010
const buffer_utils = require('../../util/buffer_utils');
1111
const BlockStoreBase = require('./block_store_base').BlockStoreBase;
12-
const Semaphore = require('../../util/semaphore');
12+
const semaphore = require('../../util/semaphore');
1313

1414
// limiting the IO concurrency on mongo
1515
// we use a very low limit since this is used only for temporary internal storage
1616
// which is meant for quick onboarding, and not for performance/production.
17-
const sem_head = new Semaphore(3);
18-
const sem_read = new Semaphore(1);
19-
const sem_write = new Semaphore(1);
20-
const sem_delete = new Semaphore(1);
17+
const sem_head = new semaphore.Semaphore(3);
18+
const sem_read = new semaphore.Semaphore(1);
19+
const sem_write = new semaphore.Semaphore(1);
20+
const sem_delete = new semaphore.Semaphore(1);
2121

2222
const GRID_FS_BUCKET_NAME = 'mongo_internal_agent';
2323
const GRID_FS_BUCKET_NAME_FILES = `${GRID_FS_BUCKET_NAME}.files`;

src/agent/func_services/func_node.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const P = require('../../util/promise');
99
const dbg = require('../../util/debug_module')(__filename);
1010
const { RpcError, RPC_BUFFERS } = require('../../rpc');
1111
const fs_utils = require('../../util/fs_utils');
12-
const Semaphore = require('../../util/semaphore');
12+
const semaphore = require('../../util/semaphore');
1313
const zip_utils = require('../../util/zip_utils');
1414

1515
const FUNC_PROC_PATH = path.resolve(__dirname, 'func_proc.js');
@@ -22,7 +22,7 @@ class FuncNode {
2222
this.storage_path = params.storage_path || '.';
2323
this.functions_path = path.join(this.storage_path, 'functions');
2424
this.functions_loading_path = path.join(this.storage_path, 'functions_loading');
25-
this.loading_serial = new Semaphore(1);
25+
this.loading_serial = new semaphore.Semaphore(1);
2626
}
2727

2828
async invoke_func(req) {

src/rpc/ice.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = Ice;
66

77
const _ = require('lodash');
88
const P = require('../util/promise');
9+
const Defer = require('../util/defer');
910
const os = require('os');
1011
const net = require('net');
1112
const tls = require('tls');
@@ -1341,7 +1342,7 @@ function IceSession(local, remote, packet, udp) {
13411342
self.state = 'init';
13421343
js_utils.self_bind(self, 'run_udp_request_loop');
13431344
js_utils.self_bind(self, 'run_udp_indication_loop');
1344-
self.defer = new P.Defer();
1345+
self.defer = new Defer();
13451346
self.defer.promise.catch(_.noop); // to ignore 'Unhandled rejection' printouts
13461347
// set session timeout
13471348
self.ready_timeout = setTimeout(function() {

src/rpc/rpc.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const assert = require('assert');
1111
const EventEmitter = require('events').EventEmitter;
1212

1313
const P = require('../util/promise');
14+
const Defer = require('../util/defer');
1415
const js_utils = require('../util/js_utils');
1516
const dbg = require('../util/debug_module')(__filename);
1617
const config = require('../../config');
@@ -191,7 +192,7 @@ class RPC extends EventEmitter {
191192

192193
// initialize the request
193194
req._new_request(api, method_api, params, options.auth_token);
194-
req._response_defer = new P.Defer();
195+
req._response_defer = new Defer();
195196
req._response_defer.promise.catch(_.noop); // to prevent error log of unhandled rejection
196197

197198
if (options.tracker) {

src/rpc/rpc_base_conn.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const _ = require('lodash');
77
const events = require('events');
88

99
const P = require('../util/promise');
10+
const Defer = require('../util/defer');
11+
1012
const dbg = require('../util/debug_module')(__filename);
1113
const config = require('../../config');
1214
const time_utils = require('../util/time_utils');
@@ -38,7 +40,7 @@ class RpcBaseConnection extends events.EventEmitter {
3840
this._state = STATE_INIT;
3941

4042
// the connecting_defer is used by connect() to wait for the connected event
41-
this.connecting_defer = new P.Defer();
43+
this.connecting_defer = new Defer();
4244
this._connect_promise = events.once(this, 'connect');
4345
this._connect_promise.catch(_.noop); // to prevent error log of unhandled rejection
4446

src/rpc/rpc_http.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const _ = require('lodash');
55
const http = require('http');
66
const https = require('https');
77

8-
const P = require('../util/promise');
8+
const Defer = require('../util/defer');
99
const dbg = require('../util/debug_module')(__filename);
1010
const buffer_utils = require('../util/buffer_utils');
1111
const http_utils = require('../util/http_utils');
@@ -145,7 +145,7 @@ class RpcHttpConnection extends RpcBaseConnection {
145145

146146
dbg.log3('HTTP request', http_req.method, http_req.path, http_req._headers);
147147

148-
const send_defer = new P.Defer();
148+
const send_defer = new Defer();
149149

150150
// reject on send errors
151151
http_req.on('error', send_defer.reject);

src/rpc/rpc_request.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'use strict';
33

44
/** @typedef {import('./rpc_base_conn')} RpcBaseConnection */
5-
/** @typedef {import('../util/promise').Defer} Defer */
5+
/** @typedef {import('../util/defer')} Defer */
66

77
const _ = require('lodash');
88
const RpcMessage = require('./rpc_message');

src/sdk/map_client.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const LRUCache = require('../util/lru_cache');
1616
const s3_utils = require('../endpoint/s3/s3_utils');
1717
const db_client = require('../util/db_client');
1818
const nb_native = require('../util/nb_native');
19-
const Semaphore = require('../util/semaphore');
19+
const semaphore = require('../util/semaphore');
2020
const KeysSemaphore = require('../util/keys_semaphore');
2121
const block_store_client = require('../agent/block_store_services/block_store_client').instance();
2222
const system_store = require('../server/system_services/system_store').get_instance();
@@ -25,9 +25,9 @@ const { ChunkAPI } = require('./map_api_types');
2525
const { RpcError, RPC_BUFFERS } = require('../rpc');
2626

2727
// semphores global to the client
28-
const block_write_sem_global = new Semaphore(config.IO_WRITE_CONCURRENCY_GLOBAL);
29-
const block_replicate_sem_global = new Semaphore(config.IO_REPLICATE_CONCURRENCY_GLOBAL);
30-
const block_read_sem_global = new Semaphore(config.IO_READ_CONCURRENCY_GLOBAL);
28+
const block_write_sem_global = new semaphore.Semaphore(config.IO_WRITE_CONCURRENCY_GLOBAL);
29+
const block_replicate_sem_global = new semaphore.Semaphore(config.IO_REPLICATE_CONCURRENCY_GLOBAL);
30+
const block_read_sem_global = new semaphore.Semaphore(config.IO_READ_CONCURRENCY_GLOBAL);
3131

3232
// semphores specific to an agent
3333
const block_write_sem_agent = new KeysSemaphore(config.IO_WRITE_CONCURRENCY_AGENT);
@@ -652,7 +652,7 @@ class MapClient {
652652
});
653653
dbg.log1('MapClient: move_blocks_to_storage_class SUCCEEDED', 'ADDR:', agent_address, 'MOVED:', moved);
654654
} catch (err) {
655-
dbg.error('MapClient: move_blocks_to_storage_class FAILED', 'ADDR:', agent_address, 'ERROR', err,);
655+
dbg.error('MapClient: move_blocks_to_storage_class FAILED', 'ADDR:', agent_address, 'ERROR', err);
656656
}
657657
});
658658
}

src/sdk/namespace_cache.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ const RangeStream = require('../util/range_stream');
1111
const P = require('../util/promise');
1212
const buffer_utils = require('../util/buffer_utils');
1313
const stream_utils = require('../util/stream_utils');
14-
const Semaphore = require('../util/semaphore');
14+
const semaphore = require('../util/semaphore');
1515
const S3Error = require('../endpoint/s3/s3_errors').S3Error;
1616
const s3_utils = require('../endpoint/s3/s3_utils');
1717
const config = require('../../config');
1818
const size_utils = require('../util/size_utils');
1919

20-
const _global_cache_uploader = new Semaphore(cache_config.UPLOAD_SEMAPHORE_CAP, {
20+
const _global_cache_uploader = new semaphore.Semaphore(cache_config.UPLOAD_SEMAPHORE_CAP, {
2121
timeout: cache_config.UPLOAD_SEMAPHORE_TIMEOUT,
2222
timeout_error_code: 'NAMESPACE_CACHE_UPLOAD_TIMEOUT'
2323
});
@@ -36,7 +36,7 @@ class NamespaceCache {
3636
* stats: import('./endpoint_stats_collector').EndpointStatsCollector,
3737
* }} params
3838
*/
39-
constructor({ namespace_hub, namespace_nb, caching, active_triggers, stats }) {
39+
constructor({ namespace_hub, namespace_nb, caching, active_triggers, stats }) {
4040
this.namespace_hub = namespace_hub;
4141
this.namespace_nb = namespace_nb;
4242
this.active_triggers = active_triggers;

0 commit comments

Comments
 (0)