nucliadb 6.3.1.post3546__py3-none-any.whl → 6.3.1.post3549__py3-none-any.whl

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.
@@ -28,9 +28,6 @@ create new shards in the remaining nodes.
28
28
 
29
29
  import logging
30
30
 
31
- from nucliadb.common import datamanagers
32
- from nucliadb.common.cluster.rollover import rollover_kb_index
33
- from nucliadb.common.cluster.settings import settings as cluster_settings
34
31
  from nucliadb.migrator.context import ExecutionContext
35
32
 
36
33
  logger = logging.getLogger(__name__)
@@ -39,45 +36,4 @@ logger = logging.getLogger(__name__)
39
36
  async def migrate(context: ExecutionContext) -> None: ...
40
37
 
41
38
 
42
- async def migrate_kb(context: ExecutionContext, kbid: str) -> None:
43
- """
44
- Rollover KB shards if any of the shards are on the nodes to drain
45
- """
46
- drain_node_ids = cluster_settings.drain_nodes
47
- if len(drain_node_ids) == 0:
48
- logger.info("Skipping migration because no drain_nodes are set")
49
- return
50
-
51
- if not await kb_has_shards_on_drain_nodes(kbid, drain_node_ids):
52
- logger.info(
53
- "KB does not have shards on the nodes to drain, skipping rollover",
54
- extra={"kbid": kbid},
55
- )
56
- return
57
-
58
- logger.info("Rolling over affected KB", extra={"kbid": kbid})
59
- await rollover_kb_index(context, kbid, drain_nodes=drain_node_ids)
60
-
61
-
62
- async def kb_has_shards_on_drain_nodes(kbid: str, drain_node_ids: list[str]) -> bool:
63
- async with datamanagers.with_ro_transaction() as txn:
64
- shards = await datamanagers.cluster.get_kb_shards(txn, kbid=kbid)
65
- if not shards:
66
- logger.warning("Shards object not found", extra={"kbid": kbid})
67
- return False
68
- shard_in_drain_nodes = False
69
- for shard in shards.shards:
70
- for replica in shard.replicas:
71
- if replica.node in drain_node_ids:
72
- logger.info(
73
- "Shard found in drain nodes, will rollover it",
74
- extra={
75
- "kbid": kbid,
76
- "logical_shard": shard.shard,
77
- "replica_shard_id": replica.shard.id,
78
- "node": replica.node,
79
- "drain_node_ids": drain_node_ids,
80
- },
81
- )
82
- shard_in_drain_nodes = True
83
- return shard_in_drain_nodes
39
+ async def migrate_kb(context: ExecutionContext, kbid: str) -> None: ...
@@ -24,12 +24,6 @@ from pydantic import Field
24
24
  from pydantic_settings import BaseSettings
25
25
 
26
26
 
27
- class ClusterDiscoveryMode(str, enum.Enum):
28
- MANUAL = "manual"
29
- KUBERNETES = "kubernetes"
30
- SINGLE_NODE = "single_node"
31
-
32
-
33
27
  class StandaloneNodeRole(enum.Enum):
34
28
  ALL = "all"
35
29
  INDEX = "index"
@@ -39,53 +33,20 @@ class StandaloneNodeRole(enum.Enum):
39
33
  class Settings(BaseSettings):
40
34
  data_path: str = "./data/node"
41
35
  standalone_mode: bool = False
42
- standalone_node_port: int = Field(
43
- default=10009,
44
- title="Standalone node port",
45
- description="Port to use for standalone nodes to communication with each other through",
46
- )
47
36
  standalone_node_role: StandaloneNodeRole = StandaloneNodeRole.ALL
48
37
 
49
- node_replicas: int = 2
50
-
51
- node_writer_port: int = 10000
52
- node_reader_port: int = 10001
53
-
54
- # Only for testing purposes
55
- writer_port_map: dict[str, int] = {}
56
- reader_port_map: dict[str, int] = {}
57
-
58
- # Node limits
38
+ # Index limits
59
39
  max_shard_paragraphs: int = Field(
60
40
  default=500_000,
61
41
  title="Max shard paragraphs",
62
42
  description="Maximum number of paragraphs to target per shard",
63
43
  )
64
- max_node_replicas: int = Field(
65
- default=800,
66
- title="Max node replicas",
67
- description="Maximum number of shard replicas a single node will manage",
68
- )
69
44
  max_resource_paragraphs: int = Field(
70
45
  default=50_000,
71
46
  title="Max paragraphs per resource",
72
47
  description="Maximum number of paragraphs allowed on a single resource",
73
48
  )
74
49
 
75
- drain_nodes: list[str] = Field(
76
- default=[],
77
- title="Drain nodes",
78
- description="List of node IDs to ignore when creating new shards. It is used for draining nodes from a cluster. Example: ['1bf3bfe7-e164-4a19-a4d9-41372fc15aca',]", # noqa: E501
79
- )
80
-
81
- local_reader_threads: int = 5
82
- local_writer_threads: int = 5
83
-
84
- cluster_discovery_mode: ClusterDiscoveryMode = ClusterDiscoveryMode.KUBERNETES
85
- cluster_discovery_kubernetes_namespace: str = "nucliadb"
86
- cluster_discovery_kubernetes_selector: str = "appType=node"
87
- cluster_discovery_manual_addresses: list[str] = []
88
-
89
50
  nidx_api_address: Optional[str] = Field(default=None, description="NIDX gRPC API address")
90
51
  nidx_searcher_address: Optional[str] = Field(
91
52
  default=None, description="NIDX gRPC searcher API address"
@@ -22,7 +22,7 @@ import logging
22
22
  import os
23
23
 
24
24
  from nucliadb.common.cluster.settings import StandaloneNodeRole
25
- from nucliadb.standalone.settings import Settings, StandaloneDiscoveryMode
25
+ from nucliadb.standalone.settings import Settings
26
26
 
27
27
  logger = logging.getLogger(__name__)
28
28
 
@@ -76,7 +76,6 @@ def config_nucliadb(nucliadb_args: Settings):
76
76
  use some specific settings.
77
77
  """
78
78
 
79
- from nucliadb.common.cluster.settings import ClusterDiscoveryMode
80
79
  from nucliadb.common.cluster.settings import settings as cluster_settings
81
80
  from nucliadb.ingest.settings import settings as ingest_settings
82
81
  from nucliadb.train.settings import settings as train_settings
@@ -91,14 +90,8 @@ def config_nucliadb(nucliadb_args: Settings):
91
90
 
92
91
  cluster_settings.standalone_mode = True
93
92
  cluster_settings.data_path = nucliadb_args.data_path
94
- cluster_settings.standalone_node_port = nucliadb_args.standalone_node_port
95
93
  cluster_settings.standalone_node_role = nucliadb_args.standalone_node_role
96
94
 
97
- if nucliadb_args.cluster_discovery_mode == StandaloneDiscoveryMode.DEFAULT:
98
- # default for standalone is single node
99
- cluster_settings.cluster_discovery_mode = ClusterDiscoveryMode.SINGLE_NODE
100
- cluster_settings.node_replicas = 1
101
-
102
95
  ingest_settings.nuclia_partitions = 1
103
96
  ingest_settings.replica_number = 0
104
97
  ingest_settings.partitions = ["1"]
@@ -99,10 +99,7 @@ def run():
99
99
  "Admin UI": f"http://{settings.http_host}:{settings.http_port}/admin",
100
100
  "Key-value backend": ingest_settings.driver.value,
101
101
  "Blob storage backend": storage_settings.file_backend.value,
102
- "Cluster discovery mode": cluster_settings.cluster_discovery_mode.value,
103
- "Node replicas": cluster_settings.node_replicas,
104
102
  "Index data path": os.path.realpath(cluster_settings.data_path),
105
- "Node port": cluster_settings.standalone_node_port,
106
103
  "Auth policy": settings.auth_policy.value,
107
104
  "Node role": cluster_settings.standalone_node_role.value,
108
105
  }
@@ -30,13 +30,6 @@ from nucliadb_utils.settings import StorageSettings
30
30
  from nucliadb_utils.storages.settings import Settings as ExtendedStorageSettings
31
31
 
32
32
 
33
- class StandaloneDiscoveryMode(Enum):
34
- DEFAULT = "default"
35
- MANUAL = "manual"
36
- KUBERNETES = "kubernetes"
37
- SINGLE_NODE = "single_node"
38
-
39
-
40
33
  class AuthPolicy(Enum):
41
34
  UPSTREAM_NAIVE = "upstream_naive"
42
35
  UPSTREAM_AUTH_HEADER = "upstream_auth_header"
@@ -60,8 +53,6 @@ class Settings(DriverSettings, StorageSettings, ExtendedStorageSettings):
60
53
  http_port: int = pydantic.Field(default=8080, description="HTTP Port")
61
54
  ingest_grpc_port: int = pydantic.Field(default=8030, description="Ingest GRPC Port")
62
55
  train_grpc_port: int = pydantic.Field(default=8031, description="Train GRPC Port")
63
- standalone_node_port: int = pydantic.Field(default=10009, description="Node GRPC Port")
64
-
65
56
  auth_policy: AuthPolicy = pydantic.Field(
66
57
  default=AuthPolicy.UPSTREAM_NAIVE,
67
58
  description="""Auth policy to use for http requests.
@@ -111,8 +102,6 @@ Examples:
111
102
  description="JWK key used for temporary token generation and validation.",
112
103
  )
113
104
 
114
- cluster_discovery_mode: StandaloneDiscoveryMode = StandaloneDiscoveryMode.DEFAULT
115
-
116
105
  fork: bool = pydantic.Field(default=False, description="Fork process on startup")
117
106
 
118
107
  # Standalone logging settings
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nucliadb
3
- Version: 6.3.1.post3546
3
+ Version: 6.3.1.post3549
4
4
  Summary: NucliaDB
5
5
  Author-email: Nuclia <nucliadb@nuclia.com>
6
6
  License: AGPL
@@ -20,11 +20,11 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
21
  Requires-Python: <4,>=3.9
22
22
  Description-Content-Type: text/markdown
23
- Requires-Dist: nucliadb-telemetry[all]>=6.3.1.post3546
24
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.1.post3546
25
- Requires-Dist: nucliadb-protos>=6.3.1.post3546
26
- Requires-Dist: nucliadb-models>=6.3.1.post3546
27
- Requires-Dist: nidx-protos>=6.3.1.post3546
23
+ Requires-Dist: nucliadb-telemetry[all]>=6.3.1.post3549
24
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.1.post3549
25
+ Requires-Dist: nucliadb-protos>=6.3.1.post3549
26
+ Requires-Dist: nucliadb-models>=6.3.1.post3549
27
+ Requires-Dist: nidx-protos>=6.3.1.post3549
28
28
  Requires-Dist: nucliadb-admin-assets>=1.0.0.post1224
29
29
  Requires-Dist: nuclia-models>=0.24.2
30
30
  Requires-Dist: uvicorn
@@ -16,7 +16,7 @@ migrations/0016_upgrade_to_paragraphs_v2.py,sha256=9eepvzme-nb_mw6rwIdjjJzbFcpOq
16
16
  migrations/0017_multiple_writable_shards.py,sha256=HSi-eXXI0kO9sLgunUMuVpFnYMjVhWTVfDS_lIjlkuM,2095
17
17
  migrations/0018_purge_orphan_kbslugs.py,sha256=ztEOAjqlWVagv1UMg_sOm8HaW6S9FoDOIg7-rZ05tro,2177
18
18
  migrations/0019_upgrade_to_paragraphs_v3.py,sha256=zP13_IKE7u4ox2gyc493L2_ewyiPlr7Csn5K6n5eylI,2479
19
- migrations/0020_drain_nodes_from_cluster.py,sha256=cgm_72kH57QiBbPx17Judn7Wp5hQnKn6UW_1Z37_8s8,3269
19
+ migrations/0020_drain_nodes_from_cluster.py,sha256=BeECAI0T8u14M2U5USl1fFNcsfmdMerNhisolYQN_eA,1411
20
20
  migrations/0021_overwrite_vectorsets_key.py,sha256=O6nb2a7kDFX9I3XFrVtudCUyKptpGyv2_GYvcvbQOI8,1583
21
21
  migrations/0022_fix_paragraph_deletion_bug.py,sha256=-tH342VXF-8xwc_h3P1cYaUtTT1wHSGf7ZoeVEpnaYs,1422
22
22
  migrations/0023_backfill_pg_catalog.py,sha256=gw22pU5cAtg2a7n7xVaVqT2itjAoDMNtzWwTllwqIvg,2993
@@ -58,11 +58,10 @@ nucliadb/common/cluster/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIX
58
58
  nucliadb/common/cluster/base.py,sha256=kklDqyvsubNX0W494ttl9f3E58lGaX6AXqAd8XX8ZHE,5522
59
59
  nucliadb/common/cluster/exceptions.py,sha256=t7v_l93t44l2tQpdQXgO_w-c4YZRcaayOz1A2i0w4RQ,1258
60
60
  nucliadb/common/cluster/grpc_node_dummy.py,sha256=LxONv0mhDFhx7mI91qqGfQlQ-R0qOGDYaxhXoBHLXaE,3548
61
- nucliadb/common/cluster/index_node.py,sha256=g38H1kiAliF3Y6et_CWYInpn_xPxf7THAFJ7RtgLNZo,3246
62
61
  nucliadb/common/cluster/manager.py,sha256=KIzqAYGgdVK3GicJ9LdLoei8arWZ7H60imbc32USPj4,12754
63
62
  nucliadb/common/cluster/rebalance.py,sha256=cLUlR08SsqmnoA_9GDflV6k2tXmkAPpyFxZErzp45vo,8754
64
63
  nucliadb/common/cluster/rollover.py,sha256=iTJ9EQmHbzXL34foNFto-hqdC0Kq1pF1mNxqv0jqhBs,25362
65
- nucliadb/common/cluster/settings.py,sha256=TMoym-cZsQ2soWfLAce0moSa2XncttQyhahL43LrWTo,3384
64
+ nucliadb/common/cluster/settings.py,sha256=JPwV_0U_i618Tn66GWUq6qCKNjy4TWkGEGld9GwH5uk,2048
66
65
  nucliadb/common/cluster/utils.py,sha256=7nQvnVFxM4XV7J560R8hUA-GPzrgD19UlQxHrl4mZUc,4687
67
66
  nucliadb/common/cluster/standalone/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4UBh8,833
68
67
  nucliadb/common/cluster/standalone/utils.py,sha256=af3r-x_GF7A6dwIAhZLR-r-SZQEVxsFrDKeMfUTA6G0,1908
@@ -113,7 +112,6 @@ nucliadb/export_import/tasks.py,sha256=yPNdBdvTD7eGc7zvV9Rp7UZ0-mDhA34OOsLqHvns_
113
112
  nucliadb/export_import/utils.py,sha256=iAQAjYuNx0dhM2b5-1A0NEs8tSRsznuT-izysUrTwS0,19986
114
113
  nucliadb/ingest/__init__.py,sha256=fsw3C38VP50km3R-nHL775LNGPpJ4JxqXJ2Ib1f5SqE,1011
115
114
  nucliadb/ingest/app.py,sha256=rX1KE5vsAzG9hlArBk8WE2SOlvdYylcb-jNkMQNPJdQ,7407
116
- nucliadb/ingest/cache.py,sha256=w7jMMzamOmQ7gwXna6Dqm6isRNBVv6l5BTBlTxaYWjE,1005
117
115
  nucliadb/ingest/partitions.py,sha256=2NIhMYbNT0TNBL6bX1UMSi7vxFGICstCKEqsB0TXHOE,2410
118
116
  nucliadb/ingest/processing.py,sha256=8OggvuxNzktTTKDTUwsIuazhDParEWhn46CBZaMYAy8,20659
119
117
  nucliadb/ingest/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -258,13 +256,13 @@ nucliadb/standalone/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20
258
256
  nucliadb/standalone/api_router.py,sha256=hgq9FXpihzgjHkwcVGfGCSwyXy67fqXTfLFHuINzIi0,5567
259
257
  nucliadb/standalone/app.py,sha256=mAApNK_iVsQgJyd-mtwCeZq5csSimwnXmlQGH9a70pE,5586
260
258
  nucliadb/standalone/auth.py,sha256=UwMv-TywhMZabvVg3anQLeCRdoHDnWf2o3luvnoNBjs,7670
261
- nucliadb/standalone/config.py,sha256=g9JBJQfyw87TYZ3yuy0O9WFVLd_MmCJxSRSI0E8FwZE,5396
259
+ nucliadb/standalone/config.py,sha256=hJ3p4dBRSsj5FOmIgAiEX9ZsAGUYd1W-_UJIol5LCCg,4967
262
260
  nucliadb/standalone/lifecycle.py,sha256=rdKLG-oOLN4rfd2VGG_2vlDUWYneWSCiuEhoeiFKfnM,2343
263
261
  nucliadb/standalone/migrations.py,sha256=s9-3RSZ-O3bjEw2TnBe_YWLUEKbub0bARUxi1gA3yuY,1950
264
262
  nucliadb/standalone/purge.py,sha256=ZY-cebb214FFiPG7OFmXZGg0G3CK5Amw0FLLm9WJhKE,1343
265
263
  nucliadb/standalone/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
- nucliadb/standalone/run.py,sha256=d4lmi9ePObbHeDqwcoZnp5JIkBp9iIPSw9uOwxeQMOU,5623
267
- nucliadb/standalone/settings.py,sha256=nPJ8R8yNUQD4G92zXBi5KiD6QWhXZdtLoQQUTXfuaHE,6041
264
+ nucliadb/standalone/run.py,sha256=0QKEAT6pCaLvnuxTG3RltTlhE2g5-HI21KbOWfusBGE,5425
265
+ nucliadb/standalone/settings.py,sha256=fbgqVT37XB2cJHJARnR19MO_dz6NLbkuIC2okH7J80o,5714
268
266
  nucliadb/standalone/versions.py,sha256=8CxNMNt2NgWM8ct50UsR4d44-ae7wtQI-sV-yGiFqyI,3508
269
267
  nucliadb/standalone/static/favicon.ico,sha256=96pKGp6Sx457JkTfjy1dtApMhkitixfU6invCUGAYOU,2285
270
268
  nucliadb/standalone/static/index.html,sha256=PEZfuEQFYnYACAL1ceN8xC0im8lBrUx838RkE8tbvgA,3833
@@ -349,8 +347,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
349
347
  nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
350
348
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
351
349
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
352
- nucliadb-6.3.1.post3546.dist-info/METADATA,sha256=DNgc6YIrIj8zGIewzwiHRTsrQL_kYcQVR8VddQdzKLw,4291
353
- nucliadb-6.3.1.post3546.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
354
- nucliadb-6.3.1.post3546.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
355
- nucliadb-6.3.1.post3546.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
356
- nucliadb-6.3.1.post3546.dist-info/RECORD,,
350
+ nucliadb-6.3.1.post3549.dist-info/METADATA,sha256=zRXMEsuY63780s274oEzv-I_wLynIyYEfW8iLptlP-U,4291
351
+ nucliadb-6.3.1.post3549.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
352
+ nucliadb-6.3.1.post3549.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
353
+ nucliadb-6.3.1.post3549.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
354
+ nucliadb-6.3.1.post3549.dist-info/RECORD,,
@@ -1,77 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
- from typing import Optional
21
-
22
- from lru import LRU
23
-
24
- from nucliadb.common.cluster.base import AbstractIndexNode
25
- from nucliadb.common.cluster.grpc_node_dummy import DummyReaderStub, DummyWriterStub
26
- from nucliadb.ingest import SERVICE_NAME
27
- from nucliadb_protos.nodereader_pb2_grpc import NodeReaderStub
28
- from nucliadb_protos.nodewriter_pb2_grpc import NodeWriterStub
29
- from nucliadb_utils.grpc import get_traced_grpc_channel
30
-
31
- from .settings import settings
32
-
33
- READ_CONNECTIONS = LRU(50) # type: ignore
34
- WRITE_CONNECTIONS = LRU(50) # type: ignore
35
-
36
-
37
- class IndexNode(AbstractIndexNode):
38
- _writer: Optional[NodeWriterStub] = None
39
- _reader: Optional[NodeReaderStub] = None
40
-
41
- def _get_service_address(self, port_map: dict[str, int], port: Optional[int]) -> str:
42
- hostname = self.address.split(":")[0]
43
- if port is None:
44
- # For testing purposes we need to be able to have a writing port
45
- port = port_map[hostname]
46
- grpc_address = f"localhost:{port}"
47
- else:
48
- grpc_address = f"{hostname}:{port}"
49
- return grpc_address
50
-
51
- @property
52
- def writer(self) -> NodeWriterStub:
53
- if self._writer is None or self.address not in WRITE_CONNECTIONS:
54
- if not self.dummy:
55
- grpc_address = self._get_service_address(
56
- settings.writer_port_map, settings.node_writer_port
57
- )
58
- channel = get_traced_grpc_channel(grpc_address, SERVICE_NAME, variant="_writer")
59
- WRITE_CONNECTIONS[self.address] = NodeWriterStub(channel)
60
- else:
61
- WRITE_CONNECTIONS[self.address] = DummyWriterStub()
62
- self._writer = WRITE_CONNECTIONS[self.address]
63
- return self._writer # type: ignore
64
-
65
- @property
66
- def reader(self) -> NodeReaderStub:
67
- if self._reader is None or self.address not in READ_CONNECTIONS:
68
- if not self.dummy:
69
- grpc_address = self._get_service_address(
70
- settings.reader_port_map, settings.node_reader_port
71
- )
72
- channel = get_traced_grpc_channel(grpc_address, SERVICE_NAME, variant="_reader")
73
- READ_CONNECTIONS[self.address] = NodeReaderStub(channel)
74
- else:
75
- READ_CONNECTIONS[self.address] = DummyReaderStub()
76
- self._reader = READ_CONNECTIONS[self.address]
77
- return self._reader # type: ignore
nucliadb/ingest/cache.py DELETED
@@ -1,25 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
- from nucliadb.common.cluster.index_node import READ_CONNECTIONS, WRITE_CONNECTIONS
21
-
22
-
23
- def clear_ingest_cache():
24
- READ_CONNECTIONS.clear()
25
- WRITE_CONNECTIONS.clear()