@elastic/elasticsearch 7.15.0 → 8.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +10 -11
  2. package/index.d.ts +4 -2971
  3. package/index.js +25 -321
  4. package/lib/api/api/async_search.d.ts +23 -0
  5. package/lib/api/api/async_search.js +130 -0
  6. package/lib/api/api/async_search.js.map +1 -0
  7. package/lib/api/api/autoscaling.d.ts +23 -0
  8. package/lib/api/api/autoscaling.js +109 -0
  9. package/lib/api/api/autoscaling.js.map +1 -0
  10. package/lib/api/api/bulk.d.ts +10 -0
  11. package/lib/api/api/bulk.js +58 -0
  12. package/lib/api/api/bulk.js.map +1 -0
  13. package/lib/api/api/cat.d.ts +86 -0
  14. package/lib/api/api/cat.js +611 -0
  15. package/lib/api/api/cat.js.map +1 -0
  16. package/lib/api/api/ccr.d.ts +50 -0
  17. package/lib/api/api/ccr.js +320 -0
  18. package/lib/api/api/ccr.js.map +1 -0
  19. package/lib/api/api/clear_scroll.d.ts +10 -0
  20. package/lib/api/api/clear_scroll.js +54 -0
  21. package/lib/api/api/clear_scroll.js.map +1 -0
  22. package/lib/api/api/close_point_in_time.d.ts +10 -0
  23. package/lib/api/api/close_point_in_time.js +53 -0
  24. package/lib/api/api/close_point_in_time.js.map +1 -0
  25. package/lib/api/api/cluster.d.ts +56 -0
  26. package/lib/api/api/cluster.js +392 -0
  27. package/lib/api/api/cluster.js.map +1 -0
  28. package/lib/api/api/count.d.ts +10 -0
  29. package/lib/api/api/count.js +62 -0
  30. package/lib/api/api/count.js.map +1 -0
  31. package/lib/api/api/create.d.ts +10 -0
  32. package/lib/api/api/create.js +46 -0
  33. package/lib/api/api/create.js.map +1 -0
  34. package/lib/api/api/dangling_indices.d.ts +20 -0
  35. package/lib/api/api/dangling_indices.js +85 -0
  36. package/lib/api/api/dangling_indices.js.map +1 -0
  37. package/lib/api/api/delete.d.ts +10 -0
  38. package/lib/api/api/delete.js +39 -0
  39. package/lib/api/api/delete.js.map +1 -0
  40. package/lib/api/api/delete_by_query.d.ts +10 -0
  41. package/lib/api/api/delete_by_query.js +53 -0
  42. package/lib/api/api/delete_by_query.js.map +1 -0
  43. package/lib/api/api/delete_by_query_rethrottle.d.ts +10 -0
  44. package/lib/api/api/delete_by_query_rethrottle.js +39 -0
  45. package/lib/api/api/delete_by_query_rethrottle.js.map +1 -0
  46. package/lib/api/api/delete_script.d.ts +10 -0
  47. package/lib/api/api/delete_script.js +39 -0
  48. package/lib/api/api/delete_script.js.map +1 -0
  49. package/lib/api/api/enrich.d.ts +26 -0
  50. package/lib/api/api/enrich.js +142 -0
  51. package/lib/api/api/enrich.js.map +1 -0
  52. package/lib/api/api/eql.d.ts +23 -0
  53. package/lib/api/api/eql.js +115 -0
  54. package/lib/api/api/eql.js.map +1 -0
  55. package/lib/api/api/exists.d.ts +10 -0
  56. package/lib/api/api/exists.js +39 -0
  57. package/lib/api/api/exists.js.map +1 -0
  58. package/lib/api/api/exists_source.d.ts +10 -0
  59. package/lib/api/api/exists_source.js +39 -0
  60. package/lib/api/api/exists_source.js.map +1 -0
  61. package/lib/api/api/explain.d.ts +10 -0
  62. package/lib/api/api/explain.js +53 -0
  63. package/lib/api/api/explain.js.map +1 -0
  64. package/lib/api/api/features.d.ts +17 -0
  65. package/lib/api/api/features.js +69 -0
  66. package/lib/api/api/features.js.map +1 -0
  67. package/lib/api/api/field_caps.d.ts +10 -0
  68. package/lib/api/api/field_caps.js +62 -0
  69. package/lib/api/api/field_caps.js.map +1 -0
  70. package/lib/api/api/fleet.d.ts +20 -0
  71. package/lib/api/api/fleet.js +92 -0
  72. package/lib/api/api/fleet.js.map +1 -0
  73. package/lib/api/api/get.d.ts +10 -0
  74. package/lib/api/api/get.js +39 -0
  75. package/lib/api/api/get.js.map +1 -0
  76. package/lib/api/api/get_script.d.ts +10 -0
  77. package/lib/api/api/get_script.js +39 -0
  78. package/lib/api/api/get_script.js.map +1 -0
  79. package/lib/api/api/get_script_context.d.ts +10 -0
  80. package/lib/api/api/get_script_context.js +40 -0
  81. package/lib/api/api/get_script_context.js.map +1 -0
  82. package/lib/api/api/get_script_languages.d.ts +10 -0
  83. package/lib/api/api/get_script_languages.js +40 -0
  84. package/lib/api/api/get_script_languages.js.map +1 -0
  85. package/lib/api/api/get_source.d.ts +10 -0
  86. package/lib/api/api/get_source.js +39 -0
  87. package/lib/api/api/get_source.js.map +1 -0
  88. package/lib/api/api/graph.d.ts +14 -0
  89. package/lib/api/api/graph.js +64 -0
  90. package/lib/api/api/graph.js.map +1 -0
  91. package/lib/api/api/ilm.d.ts +44 -0
  92. package/lib/api/api/ilm.js +260 -0
  93. package/lib/api/api/ilm.js.map +1 -0
  94. package/lib/api/api/index.d.ts +10 -0
  95. package/lib/api/api/index.js +54 -0
  96. package/lib/api/api/index.js.map +1 -0
  97. package/lib/api/api/indices.d.ts +173 -0
  98. package/lib/api/api/indices.js +1381 -0
  99. package/lib/api/api/indices.js.map +1 -0
  100. package/lib/api/api/info.d.ts +10 -0
  101. package/lib/{Serializer.d.ts → api/api/info.js} +21 -11
  102. package/lib/api/api/info.js.map +1 -0
  103. package/lib/api/api/ingest.d.ts +29 -0
  104. package/lib/api/api/ingest.js +183 -0
  105. package/lib/api/api/ingest.js.map +1 -0
  106. package/lib/api/api/knn_search.d.ts +10 -0
  107. package/lib/api/api/knn_search.js +53 -0
  108. package/lib/api/api/knn_search.js.map +1 -0
  109. package/lib/api/api/license.d.ts +32 -0
  110. package/lib/api/api/license.js +173 -0
  111. package/lib/api/api/license.js.map +1 -0
  112. package/lib/api/api/logstash.d.ts +20 -0
  113. package/lib/api/api/logstash.js +91 -0
  114. package/lib/api/api/logstash.js.map +1 -0
  115. package/lib/api/api/mget.d.ts +10 -0
  116. package/lib/api/api/mget.js +62 -0
  117. package/lib/api/api/mget.js.map +1 -0
  118. package/lib/api/api/migration.d.ts +20 -0
  119. package/lib/api/api/migration.js +93 -0
  120. package/lib/api/api/migration.js.map +1 -0
  121. package/lib/api/api/ml.d.ts +221 -0
  122. package/lib/api/api/ml.js +1818 -0
  123. package/lib/api/api/ml.js.map +1 -0
  124. package/lib/api/api/monitoring.d.ts +14 -0
  125. package/lib/api/api/monitoring.js +57 -0
  126. package/lib/api/api/monitoring.js.map +1 -0
  127. package/lib/api/api/msearch.d.ts +10 -0
  128. package/lib/api/api/msearch.js +54 -0
  129. package/lib/api/api/msearch.js.map +1 -0
  130. package/lib/api/api/msearch_template.d.ts +10 -0
  131. package/lib/api/api/msearch_template.js +54 -0
  132. package/lib/api/api/msearch_template.js.map +1 -0
  133. package/lib/api/api/mtermvectors.d.ts +10 -0
  134. package/lib/api/api/mtermvectors.js +62 -0
  135. package/lib/api/api/mtermvectors.js.map +1 -0
  136. package/lib/api/api/nodes.d.ts +32 -0
  137. package/lib/api/api/nodes.js +243 -0
  138. package/lib/api/api/nodes.js.map +1 -0
  139. package/lib/api/api/open_point_in_time.d.ts +10 -0
  140. package/lib/api/api/open_point_in_time.js +39 -0
  141. package/lib/api/api/open_point_in_time.js.map +1 -0
  142. package/lib/api/api/ping.d.ts +10 -0
  143. package/lib/api/api/ping.js +40 -0
  144. package/lib/api/api/ping.js.map +1 -0
  145. package/lib/api/api/put_script.d.ts +10 -0
  146. package/lib/api/api/put_script.js +61 -0
  147. package/lib/api/api/put_script.js.map +1 -0
  148. package/lib/api/api/rank_eval.d.ts +10 -0
  149. package/lib/api/api/rank_eval.js +61 -0
  150. package/lib/api/api/rank_eval.js.map +1 -0
  151. package/lib/api/api/reindex.d.ts +10 -0
  152. package/lib/api/api/reindex.js +54 -0
  153. package/lib/api/api/reindex.js.map +1 -0
  154. package/lib/api/api/reindex_rethrottle.d.ts +10 -0
  155. package/lib/api/api/reindex_rethrottle.js +39 -0
  156. package/lib/api/api/reindex_rethrottle.js.map +1 -0
  157. package/lib/api/api/render_search_template.d.ts +10 -0
  158. package/lib/api/api/render_search_template.js +62 -0
  159. package/lib/api/api/render_search_template.js.map +1 -0
  160. package/lib/api/api/rollup.d.ts +38 -0
  161. package/lib/api/api/rollup.js +239 -0
  162. package/lib/api/api/rollup.js.map +1 -0
  163. package/lib/api/api/scripts_painless_execute.d.ts +10 -0
  164. package/lib/api/api/scripts_painless_execute.js +54 -0
  165. package/lib/api/api/scripts_painless_execute.js.map +1 -0
  166. package/lib/api/api/scroll.d.ts +10 -0
  167. package/lib/api/api/scroll.js +53 -0
  168. package/lib/api/api/scroll.js.map +1 -0
  169. package/lib/api/api/search.d.ts +10 -0
  170. package/lib/api/api/search.js +68 -0
  171. package/lib/api/api/search.js.map +1 -0
  172. package/lib/api/api/search_mvt.d.ts +10 -0
  173. package/lib/api/api/search_mvt.js +53 -0
  174. package/lib/api/api/search_mvt.js.map +1 -0
  175. package/lib/api/api/search_shards.d.ts +10 -0
  176. package/lib/api/api/search_shards.js +48 -0
  177. package/lib/api/api/search_shards.js.map +1 -0
  178. package/lib/api/api/search_template.d.ts +10 -0
  179. package/lib/api/api/search_template.js +62 -0
  180. package/lib/api/api/search_template.js.map +1 -0
  181. package/lib/api/api/searchable_snapshots.d.ts +23 -0
  182. package/lib/api/api/searchable_snapshots.js +141 -0
  183. package/lib/api/api/searchable_snapshots.js.map +1 -0
  184. package/lib/api/api/security.d.ts +140 -0
  185. package/lib/api/api/security.js +998 -0
  186. package/lib/api/api/security.js.map +1 -0
  187. package/lib/api/api/shutdown.d.ts +20 -0
  188. package/lib/api/api/shutdown.js +93 -0
  189. package/lib/api/api/shutdown.js.map +1 -0
  190. package/lib/api/api/slm.d.ts +38 -0
  191. package/lib/api/api/slm.js +214 -0
  192. package/lib/api/api/slm.js.map +1 -0
  193. package/lib/api/api/snapshot.d.ts +47 -0
  194. package/lib/api/api/snapshot.js +315 -0
  195. package/lib/api/api/snapshot.js.map +1 -0
  196. package/lib/api/api/sql.d.ts +29 -0
  197. package/lib/api/api/sql.js +178 -0
  198. package/lib/api/api/sql.js.map +1 -0
  199. package/lib/api/api/ssl.d.ts +14 -0
  200. package/lib/api/api/ssl.js +51 -0
  201. package/lib/api/api/ssl.js.map +1 -0
  202. package/lib/api/api/tasks.d.ts +20 -0
  203. package/lib/api/api/tasks.js +94 -0
  204. package/lib/api/api/tasks.js.map +1 -0
  205. package/lib/api/api/terms_enum.d.ts +10 -0
  206. package/lib/api/api/terms_enum.js +53 -0
  207. package/lib/api/api/terms_enum.js.map +1 -0
  208. package/lib/api/api/termvectors.d.ts +10 -0
  209. package/lib/api/api/termvectors.js +61 -0
  210. package/lib/api/api/termvectors.js.map +1 -0
  211. package/lib/api/api/text_structure.d.ts +14 -0
  212. package/lib/api/api/text_structure.js +57 -0
  213. package/lib/api/api/text_structure.js.map +1 -0
  214. package/lib/api/api/transform.d.ts +38 -0
  215. package/lib/api/api/transform.js +246 -0
  216. package/lib/api/api/transform.js.map +1 -0
  217. package/lib/api/api/update.d.ts +10 -0
  218. package/lib/api/api/update.js +53 -0
  219. package/lib/api/api/update.js.map +1 -0
  220. package/lib/api/api/update_by_query.d.ts +10 -0
  221. package/lib/api/api/update_by_query.js +53 -0
  222. package/lib/api/api/update_by_query.js.map +1 -0
  223. package/lib/api/api/update_by_query_rethrottle.d.ts +10 -0
  224. package/lib/api/api/update_by_query_rethrottle.js +39 -0
  225. package/lib/api/api/update_by_query_rethrottle.js.map +1 -0
  226. package/lib/api/api/watcher.d.ts +44 -0
  227. package/lib/api/api/watcher.js +291 -0
  228. package/lib/api/api/watcher.js.map +1 -0
  229. package/lib/api/api/xpack.d.ts +17 -0
  230. package/lib/api/api/xpack.js +69 -0
  231. package/lib/api/api/xpack.js.map +1 -0
  232. package/lib/api/index.d.ts +225 -0
  233. package/lib/api/index.js +520 -0
  234. package/lib/api/index.js.map +1 -0
  235. package/lib/api/types.d.ts +13525 -0
  236. package/lib/{pool/index.js → api/types.js} +3 -12
  237. package/lib/api/types.js.map +1 -0
  238. package/lib/api/typesWithBodyKey.d.ts +13931 -0
  239. package/{index.mjs → lib/api/typesWithBodyKey.js} +3 -11
  240. package/lib/api/typesWithBodyKey.js.map +1 -0
  241. package/lib/client.d.ts +69 -0
  242. package/lib/client.js +282 -0
  243. package/lib/client.js.map +1 -0
  244. package/lib/helpers.d.ts +148 -0
  245. package/lib/helpers.js +769 -0
  246. package/lib/helpers.js.map +1 -0
  247. package/lib/sniffingTransport.d.ts +4 -0
  248. package/lib/sniffingTransport.js +56 -0
  249. package/lib/sniffingTransport.js.map +1 -0
  250. package/package.json +46 -59
  251. package/tsconfig.json +37 -0
  252. package/api/api/async_search.js +0 -141
  253. package/api/api/autoscaling.js +0 -147
  254. package/api/api/bulk.js +0 -70
  255. package/api/api/cat.js +0 -648
  256. package/api/api/ccr.js +0 -403
  257. package/api/api/clear_scroll.js +0 -55
  258. package/api/api/close_point_in_time.js +0 -50
  259. package/api/api/cluster.js +0 -420
  260. package/api/api/count.js +0 -64
  261. package/api/api/create.js +0 -69
  262. package/api/api/dangling_indices.js +0 -115
  263. package/api/api/delete.js +0 -65
  264. package/api/api/delete_by_query.js +0 -71
  265. package/api/api/delete_by_query_rethrottle.js +0 -60
  266. package/api/api/delete_script.js +0 -56
  267. package/api/api/enrich.js +0 -173
  268. package/api/api/eql.js +0 -150
  269. package/api/api/exists.js +0 -65
  270. package/api/api/exists_source.js +0 -74
  271. package/api/api/explain.js +0 -65
  272. package/api/api/features.js +0 -81
  273. package/api/api/field_caps.js +0 -55
  274. package/api/api/fleet.js +0 -65
  275. package/api/api/get.js +0 -65
  276. package/api/api/get_script.js +0 -56
  277. package/api/api/get_script_context.js +0 -50
  278. package/api/api/get_script_languages.js +0 -50
  279. package/api/api/get_source.js +0 -65
  280. package/api/api/graph.js +0 -72
  281. package/api/api/ilm.js +0 -317
  282. package/api/api/index.js +0 -71
  283. package/api/api/indices.js +0 -1753
  284. package/api/api/info.js +0 -50
  285. package/api/api/ingest.js +0 -200
  286. package/api/api/license.js +0 -188
  287. package/api/api/logstash.js +0 -125
  288. package/api/api/mget.js +0 -70
  289. package/api/api/migration.js +0 -60
  290. package/api/api/ml.js +0 -2010
  291. package/api/api/monitoring.js +0 -66
  292. package/api/api/msearch.js +0 -70
  293. package/api/api/msearch_template.js +0 -70
  294. package/api/api/mtermvectors.js +0 -64
  295. package/api/api/nodes.js +0 -268
  296. package/api/api/open_point_in_time.js +0 -56
  297. package/api/api/ping.js +0 -50
  298. package/api/api/put_script.js +0 -71
  299. package/api/api/rank_eval.js +0 -61
  300. package/api/api/reindex.js +0 -56
  301. package/api/api/reindex_rethrottle.js +0 -60
  302. package/api/api/render_search_template.js +0 -55
  303. package/api/api/rollup.js +0 -319
  304. package/api/api/scripts_painless_execute.js +0 -50
  305. package/api/api/scroll.js +0 -55
  306. package/api/api/search.js +0 -64
  307. package/api/api/search_mvt.js +0 -87
  308. package/api/api/search_shards.js +0 -55
  309. package/api/api/search_template.js +0 -70
  310. package/api/api/searchable_snapshots.js +0 -186
  311. package/api/api/security.js +0 -1261
  312. package/api/api/shutdown.js +0 -124
  313. package/api/api/slm.js +0 -256
  314. package/api/api/snapshot.js +0 -439
  315. package/api/api/sql.js +0 -203
  316. package/api/api/ssl.js +0 -55
  317. package/api/api/tasks.js +0 -108
  318. package/api/api/terms_enum.js +0 -56
  319. package/api/api/termvectors.js +0 -67
  320. package/api/api/text_structure.js +0 -65
  321. package/api/api/transform.js +0 -268
  322. package/api/api/update.js +0 -69
  323. package/api/api/update_by_query.js +0 -67
  324. package/api/api/update_by_query_rethrottle.js +0 -60
  325. package/api/api/watcher.js +0 -333
  326. package/api/api/xpack.js +0 -76
  327. package/api/index.js +0 -508
  328. package/api/new.d.ts +0 -1585
  329. package/api/requestParams.d.ts +0 -2920
  330. package/api/types.d.ts +0 -15420
  331. package/api/utils.js +0 -58
  332. package/lib/Connection.d.ts +0 -99
  333. package/lib/Connection.js +0 -392
  334. package/lib/Helpers.d.ts +0 -124
  335. package/lib/Helpers.js +0 -770
  336. package/lib/Serializer.js +0 -94
  337. package/lib/Transport.d.ts +0 -162
  338. package/lib/Transport.js +0 -689
  339. package/lib/errors.d.ts +0 -90
  340. package/lib/errors.js +0 -159
  341. package/lib/pool/BaseConnectionPool.js +0 -262
  342. package/lib/pool/CloudConnectionPool.js +0 -64
  343. package/lib/pool/ConnectionPool.js +0 -246
  344. package/lib/pool/index.d.ts +0 -220
@@ -1,246 +0,0 @@
1
- /*
2
- * Licensed to Elasticsearch B.V. under one or more contributor
3
- * license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright
5
- * ownership. Elasticsearch B.V. licenses this file to you under
6
- * the Apache License, Version 2.0 (the "License"); you may
7
- * not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied. See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
-
20
- 'use strict'
21
-
22
- const BaseConnectionPool = require('./BaseConnectionPool')
23
- const assert = require('assert')
24
- const debug = require('debug')('elasticsearch')
25
- const Connection = require('../Connection')
26
- const noop = () => {}
27
-
28
- class ConnectionPool extends BaseConnectionPool {
29
- constructor (opts) {
30
- super(opts)
31
-
32
- this.dead = []
33
- // the resurrect timeout is 60s
34
- this.resurrectTimeout = 1000 * 60
35
- // number of consecutive failures after which
36
- // the timeout doesn't increase
37
- this.resurrectTimeoutCutoff = 5
38
- this.pingTimeout = opts.pingTimeout
39
- this._sniffEnabled = opts.sniffEnabled || false
40
-
41
- const resurrectStrategy = opts.resurrectStrategy || 'ping'
42
- this.resurrectStrategy = ConnectionPool.resurrectStrategies[resurrectStrategy]
43
- assert(
44
- this.resurrectStrategy != null,
45
- `Invalid resurrection strategy: '${resurrectStrategy}'`
46
- )
47
- }
48
-
49
- /**
50
- * Marks a connection as 'alive'.
51
- * If needed removes the connection from the dead list
52
- * and then resets the `deadCount`.
53
- *
54
- * @param {object} connection
55
- */
56
- markAlive (connection) {
57
- const { id } = connection
58
- debug(`Marking as 'alive' connection '${id}'`)
59
- const index = this.dead.indexOf(id)
60
- if (index > -1) this.dead.splice(index, 1)
61
- connection.status = Connection.statuses.ALIVE
62
- connection.deadCount = 0
63
- connection.resurrectTimeout = 0
64
- return this
65
- }
66
-
67
- /**
68
- * Marks a connection as 'dead'.
69
- * If needed adds the connection to the dead list
70
- * and then increments the `deadCount`.
71
- *
72
- * @param {object} connection
73
- */
74
- markDead (connection) {
75
- const { id } = connection
76
- debug(`Marking as 'dead' connection '${id}'`)
77
- if (this.dead.indexOf(id) === -1) {
78
- // It might happen that `markDead` is called jsut after
79
- // a pool update, and in such case we will add to the dead
80
- // list a node that no longer exist. The following check verify
81
- // that the connection is still part of the pool before
82
- // marking it as dead.
83
- for (let i = 0; i < this.size; i++) {
84
- if (this.connections[i].id === id) {
85
- this.dead.push(id)
86
- break
87
- }
88
- }
89
- }
90
- connection.status = Connection.statuses.DEAD
91
- connection.deadCount++
92
- // resurrectTimeout formula:
93
- // `resurrectTimeout * 2 ** min(deadCount - 1, resurrectTimeoutCutoff)`
94
- connection.resurrectTimeout = Date.now() + this.resurrectTimeout * Math.pow(
95
- 2, Math.min(connection.deadCount - 1, this.resurrectTimeoutCutoff)
96
- )
97
-
98
- // sort the dead list in ascending order
99
- // based on the resurrectTimeout
100
- this.dead.sort((a, b) => {
101
- const conn1 = this.connections.find(c => c.id === a)
102
- const conn2 = this.connections.find(c => c.id === b)
103
- return conn1.resurrectTimeout - conn2.resurrectTimeout
104
- })
105
-
106
- return this
107
- }
108
-
109
- /**
110
- * If enabled, tries to resurrect a connection with the given
111
- * resurrect strategy ('ping', 'optimistic', 'none').
112
- *
113
- * @param {object} { now, requestId }
114
- * @param {function} callback (isAlive, connection)
115
- */
116
- resurrect (opts, callback = noop) {
117
- if (this.resurrectStrategy === 0 || this.dead.length === 0) {
118
- debug('Nothing to resurrect')
119
- callback(null, null)
120
- return
121
- }
122
-
123
- // the dead list is sorted in ascending order based on the timeout
124
- // so the first element will always be the one with the smaller timeout
125
- const connection = this.connections.find(c => c.id === this.dead[0])
126
- if ((opts.now || Date.now()) < connection.resurrectTimeout) {
127
- debug('Nothing to resurrect')
128
- callback(null, null)
129
- return
130
- }
131
-
132
- const { id } = connection
133
-
134
- // ping strategy
135
- if (this.resurrectStrategy === 1) {
136
- connection.request({
137
- method: 'HEAD',
138
- path: '/',
139
- timeout: this.pingTimeout
140
- }, (err, response) => {
141
- let isAlive = true
142
- const statusCode = response !== null ? response.statusCode : 0
143
- if (err != null ||
144
- (statusCode === 502 || statusCode === 503 || statusCode === 504)) {
145
- debug(`Resurrect: connection '${id}' is still dead`)
146
- this.markDead(connection)
147
- isAlive = false
148
- } else {
149
- debug(`Resurrect: connection '${id}' is now alive`)
150
- this.markAlive(connection)
151
- }
152
- this.emit('resurrect', null, {
153
- strategy: 'ping',
154
- name: opts.name,
155
- request: { id: opts.requestId },
156
- isAlive,
157
- connection
158
- })
159
- callback(isAlive, connection)
160
- })
161
- // optimistic strategy
162
- } else {
163
- debug(`Resurrect: optimistic resurrection for connection '${id}'`)
164
- this.dead.splice(this.dead.indexOf(id), 1)
165
- connection.status = Connection.statuses.ALIVE
166
- this.emit('resurrect', null, {
167
- strategy: 'optimistic',
168
- name: opts.name,
169
- request: { id: opts.requestId },
170
- isAlive: true,
171
- connection
172
- })
173
- callback(true, connection) // eslint-disable-line
174
- }
175
- }
176
-
177
- /**
178
- * Returns an alive connection if present,
179
- * otherwise returns a dead connection.
180
- * By default it filters the `master` only nodes.
181
- * It uses the selector to choose which
182
- * connection return.
183
- *
184
- * @param {object} options (filter and selector)
185
- * @returns {object|null} connection
186
- */
187
- getConnection (opts = {}) {
188
- const filter = opts.filter || (() => true)
189
- const selector = opts.selector || (c => c[0])
190
-
191
- this.resurrect({
192
- now: opts.now,
193
- requestId: opts.requestId,
194
- name: opts.name
195
- })
196
-
197
- const noAliveConnections = this.size === this.dead.length
198
-
199
- // TODO: can we cache this?
200
- const connections = []
201
- for (let i = 0; i < this.size; i++) {
202
- const connection = this.connections[i]
203
- if (noAliveConnections || connection.status === Connection.statuses.ALIVE) {
204
- if (filter(connection) === true) {
205
- connections.push(connection)
206
- }
207
- }
208
- }
209
-
210
- if (connections.length === 0) return null
211
-
212
- return selector(connections)
213
- }
214
-
215
- /**
216
- * Empties the connection pool.
217
- *
218
- * @returns {ConnectionPool}
219
- */
220
- empty (callback) {
221
- super.empty(() => {
222
- this.dead = []
223
- callback()
224
- })
225
- }
226
-
227
- /**
228
- * Update the ConnectionPool with new connections.
229
- *
230
- * @param {array} array of connections
231
- * @returns {ConnectionPool}
232
- */
233
- update (connections) {
234
- super.update(connections)
235
- this.dead = []
236
- return this
237
- }
238
- }
239
-
240
- ConnectionPool.resurrectStrategies = {
241
- none: 0,
242
- ping: 1,
243
- optimistic: 2
244
- }
245
-
246
- module.exports = ConnectionPool
@@ -1,220 +0,0 @@
1
- /*
2
- * Licensed to Elasticsearch B.V. under one or more contributor
3
- * license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright
5
- * ownership. Elasticsearch B.V. licenses this file to you under
6
- * the Apache License, Version 2.0 (the "License"); you may
7
- * not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied. See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
-
20
- /// <reference types="node" />
21
-
22
- import { URL } from 'url'
23
- import { SecureContextOptions } from 'tls';
24
- import Connection, { AgentOptions } from '../Connection';
25
- import { nodeFilterFn, nodeSelectorFn } from '../Transport';
26
-
27
- interface BaseConnectionPoolOptions {
28
- ssl?: SecureContextOptions;
29
- agent?: AgentOptions;
30
- proxy?: string | URL;
31
- auth?: BasicAuth | ApiKeyAuth;
32
- emit: (event: string | symbol, ...args: any[]) => boolean;
33
- Connection: typeof Connection;
34
- caFingerprint?: string;
35
- }
36
-
37
- interface ConnectionPoolOptions extends BaseConnectionPoolOptions {
38
- pingTimeout?: number;
39
- resurrectStrategy?: 'ping' | 'optimistic' | 'none';
40
- sniffEnabled?: boolean;
41
- }
42
-
43
- interface getConnectionOptions {
44
- filter?: nodeFilterFn;
45
- selector?: nodeSelectorFn;
46
- requestId?: string | number;
47
- name?: string;
48
- now?: number;
49
- }
50
-
51
- interface ApiKeyAuth {
52
- apiKey:
53
- | string
54
- | {
55
- id: string;
56
- api_key: string;
57
- }
58
- }
59
-
60
- interface BasicAuth {
61
- username: string;
62
- password: string;
63
- }
64
-
65
- interface BearerAuth {
66
- bearer: string
67
- }
68
-
69
- interface resurrectOptions {
70
- now?: number;
71
- requestId: string;
72
- name: string;
73
- }
74
-
75
- interface ResurrectEvent {
76
- strategy: string;
77
- isAlive: boolean;
78
- connection: Connection;
79
- name: string;
80
- request: {
81
- id: any;
82
- };
83
- }
84
-
85
-
86
- declare class BaseConnectionPool {
87
- connections: Connection[];
88
- size: number;
89
- emit: (event: string | symbol, ...args: any[]) => boolean;
90
- _ssl: SecureContextOptions | null;
91
- _agent: AgentOptions | null;
92
- _proxy: string | URL;
93
- auth: BasicAuth | ApiKeyAuth;
94
- Connection: typeof Connection;
95
- constructor(opts?: BaseConnectionPoolOptions);
96
- /**
97
- * Marks a connection as 'alive'.
98
- * If needed removes the connection from the dead list
99
- * and then resets the `deadCount`.
100
- *
101
- * @param {object} connection
102
- */
103
- markAlive(connection: Connection): this;
104
- /**
105
- * Marks a connection as 'dead'.
106
- * If needed adds the connection to the dead list
107
- * and then increments the `deadCount`.
108
- *
109
- * @param {object} connection
110
- */
111
- markDead(connection: Connection): this;
112
- /**
113
- * Returns an alive connection if present,
114
- * otherwise returns a dead connection.
115
- * By default it filters the `master` only nodes.
116
- * It uses the selector to choose which
117
- * connection return.
118
- *
119
- * @param {object} options (filter and selector)
120
- * @returns {object|null} connection
121
- */
122
- getConnection(opts?: getConnectionOptions): Connection | null;
123
- /**
124
- * Adds a new connection to the pool.
125
- *
126
- * @param {object|string} host
127
- * @returns {ConnectionPool}
128
- */
129
- addConnection(opts: any): Connection;
130
- /**
131
- * Removes a new connection to the pool.
132
- *
133
- * @param {object} connection
134
- * @returns {ConnectionPool}
135
- */
136
- removeConnection(connection: Connection): this;
137
- /**
138
- * Empties the connection pool.
139
- *
140
- * @returns {ConnectionPool}
141
- */
142
- empty(): this;
143
- /**
144
- * Update the ConnectionPool with new connections.
145
- *
146
- * @param {array} array of connections
147
- * @returns {ConnectionPool}
148
- */
149
- update(connections: any[]): this;
150
- /**
151
- * Transforms the nodes objects to a host object.
152
- *
153
- * @param {object} nodes
154
- * @returns {array} hosts
155
- */
156
- nodesToHost(nodes: any, protocol: string): any[];
157
- /**
158
- * Transforms an url string to a host object
159
- *
160
- * @param {string} url
161
- * @returns {object} host
162
- */
163
- urlToHost(url: string): { url: URL };
164
- }
165
-
166
- declare class ConnectionPool extends BaseConnectionPool {
167
- static resurrectStrategies: {
168
- none: number;
169
- ping: number;
170
- optimistic: number;
171
- };
172
- dead: string[];
173
- _sniffEnabled: boolean;
174
- resurrectTimeout: number;
175
- resurrectTimeoutCutoff: number;
176
- pingTimeout: number;
177
- resurrectStrategy: number;
178
- constructor(opts?: ConnectionPoolOptions);
179
-
180
- /**
181
- * If enabled, tries to resurrect a connection with the given
182
- * resurrect strategy ('ping', 'optimistic', 'none').
183
- *
184
- * @param {object} { now, requestId, name }
185
- * @param {function} callback (isAlive, connection)
186
- */
187
- resurrect(opts: resurrectOptions, callback?: (isAlive: boolean | null, connection: Connection | null) => void): void;
188
- }
189
-
190
- declare class CloudConnectionPool extends BaseConnectionPool {
191
- cloudConnection: Connection | null
192
- constructor(opts?: BaseConnectionPoolOptions);
193
- getConnection(): Connection | null;
194
- }
195
-
196
- declare function defaultNodeFilter(node: Connection): boolean;
197
- declare function roundRobinSelector(): (connections: Connection[]) => Connection;
198
- declare function randomSelector(connections: Connection[]): Connection;
199
-
200
- declare const internals: {
201
- defaultNodeFilter: typeof defaultNodeFilter;
202
- roundRobinSelector: typeof roundRobinSelector;
203
- randomSelector: typeof randomSelector;
204
- };
205
-
206
- export {
207
- // Interfaces
208
- ConnectionPoolOptions,
209
- getConnectionOptions,
210
- ApiKeyAuth,
211
- BasicAuth,
212
- BearerAuth,
213
- internals,
214
- resurrectOptions,
215
- ResurrectEvent,
216
- // Classes
217
- BaseConnectionPool,
218
- ConnectionPool,
219
- CloudConnectionPool
220
- };