@@ -140,7 +140,11 @@ impl Node {
140
140
let full_identity = self . node_name . clone ( ) ;
141
141
let signing_secret_key = self . identity_secret_key . clone ( ) ;
142
142
let node_env = fetch_node_environment ( ) ;
143
- let embedding_generator = Arc :: new ( self . embedding_generator . clone ( ) ) ;
143
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
144
+ let embedding_generator = Arc :: new ( {
145
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
146
+ generator_guard. clone ( )
147
+ } ) ;
144
148
tokio:: spawn ( async move {
145
149
let _ = Node :: v2_api_import_agent_url (
146
150
db_clone,
@@ -159,7 +163,11 @@ impl Node {
159
163
let db_clone = Arc :: clone ( & self . db ) ;
160
164
let node_env = fetch_node_environment ( ) ;
161
165
let full_identity = self . node_name . clone ( ) ;
162
- let embedding_generator = Arc :: new ( self . embedding_generator . clone ( ) ) ;
166
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
167
+ let embedding_generator = Arc :: new ( {
168
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
169
+ generator_guard. clone ( )
170
+ } ) ;
163
171
tokio:: spawn ( async move {
164
172
let _ = Node :: v2_api_import_agent_zip (
165
173
db_clone,
@@ -233,7 +241,11 @@ impl Node {
233
241
let node_name_clone = self . node_name . clone ( ) ;
234
242
let encryption_secret_key_clone = self . encryption_secret_key . clone ( ) ;
235
243
let first_device_needs_registration_code = self . first_device_needs_registration_code ;
236
- let embedding_generator_clone = Arc :: new ( self . embedding_generator . clone ( ) ) ;
244
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
245
+ let embedding_generator_clone = Arc :: new ( {
246
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
247
+ generator_guard. clone ( )
248
+ } ) ;
237
249
let encryption_public_key_clone = self . encryption_public_key ;
238
250
let identity_public_key_clone = self . identity_public_key ;
239
251
let identity_secret_key_clone = self . identity_secret_key . clone ( ) ;
@@ -557,7 +569,11 @@ impl Node {
557
569
let identity_manager_clone = self . identity_manager . clone ( ) ;
558
570
let node_name_clone = self . node_name . clone ( ) ;
559
571
let first_device_needs_registration_code = self . first_device_needs_registration_code ;
560
- let embedding_generator_clone = Arc :: new ( self . embedding_generator . clone ( ) ) ;
572
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
573
+ let embedding_generator_clone = Arc :: new ( {
574
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
575
+ generator_guard. clone ( )
576
+ } ) ;
561
577
let encryption_public_key_clone = self . encryption_public_key ;
562
578
let identity_public_key_clone = self . identity_public_key ;
563
579
let identity_secret_key_clone = self . identity_secret_key . clone ( ) ;
@@ -872,15 +888,19 @@ impl Node {
872
888
873
889
NodeCommand :: V2ApiSearchItems { bearer, payload, res } => {
874
890
let db_clone = Arc :: clone ( & self . db ) ;
875
- let embedding_generator_clone = self . embedding_generator . clone ( ) ;
891
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
876
892
877
893
let identity_manager_clone = self . identity_manager . clone ( ) ;
878
894
tokio:: spawn ( async move {
895
+ let embedding_generator = {
896
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
897
+ generator_guard. clone ( )
898
+ } ;
879
899
let _ = Node :: v2_search_items (
880
900
db_clone,
881
901
identity_manager_clone,
882
902
payload,
883
- Arc :: new ( embedding_generator_clone ) ,
903
+ Arc :: new ( embedding_generator ) ,
884
904
bearer,
885
905
res,
886
906
)
@@ -954,12 +974,16 @@ impl Node {
954
974
let db_clone = Arc :: clone ( & self . db ) ;
955
975
956
976
let identity_manager_clone = self . identity_manager . clone ( ) ;
957
- let embedding_generator_clone = self . embedding_generator . clone ( ) ;
977
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
958
978
tokio:: spawn ( async move {
979
+ let embedding_generator = {
980
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
981
+ generator_guard. clone ( )
982
+ } ;
959
983
let _ = Node :: v2_upload_file_to_folder (
960
984
db_clone,
961
985
identity_manager_clone,
962
- Arc :: new ( embedding_generator_clone ) ,
986
+ Arc :: new ( embedding_generator ) ,
963
987
bearer,
964
988
filename,
965
989
file,
@@ -980,12 +1004,16 @@ impl Node {
980
1004
} => {
981
1005
let db_clone = Arc :: clone ( & self . db ) ;
982
1006
let identity_manager_clone = self . identity_manager . clone ( ) ;
983
- let embedding_generator_clone = self . embedding_generator . clone ( ) ;
1007
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
984
1008
tokio:: spawn ( async move {
1009
+ let embedding_generator = {
1010
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
1011
+ generator_guard. clone ( )
1012
+ } ;
985
1013
let _ = Node :: v2_upload_file_to_job (
986
1014
db_clone,
987
1015
identity_manager_clone,
988
- Arc :: new ( embedding_generator_clone ) ,
1016
+ Arc :: new ( embedding_generator ) ,
989
1017
bearer,
990
1018
job_id,
991
1019
filename,
@@ -1169,8 +1197,25 @@ impl Node {
1169
1197
NodeCommand :: V2ApiHealthCheck { res } => {
1170
1198
let db_clone = Arc :: clone ( & self . db ) ;
1171
1199
let public_https_certificate_clone = self . public_https_certificate . clone ( ) ;
1200
+ let is_migration_in_progress_clone = Arc :: clone ( & self . is_migration_in_progress ) ;
1201
+ tokio:: spawn ( async move {
1202
+ let _ = Node :: v2_api_health_check ( db_clone, public_https_certificate_clone, is_migration_in_progress_clone, res) . await ;
1203
+ } ) ;
1204
+ }
1205
+ NodeCommand :: V2ApiTriggerEmbeddingMigration { bearer, payload, res } => {
1206
+ let db_clone = Arc :: clone ( & self . db ) ;
1207
+ let embedding_generator_clone = Arc :: clone ( & self . embedding_generator ) ;
1208
+ let default_embedding_model_clone = Arc :: clone ( & self . default_embedding_model ) ;
1209
+ let is_migration_in_progress_clone = Arc :: clone ( & self . is_migration_in_progress ) ;
1210
+ tokio:: spawn ( async move {
1211
+ let _ = Node :: v2_api_trigger_embedding_migration ( db_clone, embedding_generator_clone, default_embedding_model_clone, is_migration_in_progress_clone, bearer, payload, res) . await ;
1212
+ } ) ;
1213
+ }
1214
+ NodeCommand :: V2ApiGetMigrationStatus { bearer, res } => {
1215
+ let db_clone = Arc :: clone ( & self . db ) ;
1216
+ let is_migration_in_progress_clone = Arc :: clone ( & self . is_migration_in_progress ) ;
1172
1217
tokio:: spawn ( async move {
1173
- let _ = Node :: v2_api_health_check ( db_clone, public_https_certificate_clone , res) . await ;
1218
+ let _ = Node :: v2_api_get_migration_status ( db_clone, is_migration_in_progress_clone , bearer , res) . await ;
1174
1219
} ) ;
1175
1220
}
1176
1221
NodeCommand :: V2ApiScanOllamaModels { bearer, res } => {
@@ -2040,9 +2085,13 @@ impl Node {
2040
2085
let db_clone = Arc :: clone ( & self . db ) ;
2041
2086
let node_env = fetch_node_environment ( ) ;
2042
2087
let signing_secret_key = self . identity_secret_key . clone ( ) ;
2043
- let embedding_generator = self . embedding_generator . clone ( ) ;
2088
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
2044
2089
let full_identity = self . node_name . clone ( ) ;
2045
2090
tokio:: spawn ( async move {
2091
+ let embedding_generator = {
2092
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
2093
+ generator_guard. clone ( )
2094
+ } ;
2046
2095
let _ = Node :: v2_api_import_tool_url (
2047
2096
db_clone,
2048
2097
bearer,
@@ -2059,9 +2108,13 @@ impl Node {
2059
2108
NodeCommand :: V2ApiImportToolZip { bearer, file_data, res } => {
2060
2109
let db_clone = Arc :: clone ( & self . db ) ;
2061
2110
let node_env = fetch_node_environment ( ) ;
2062
- let embedding_generator = self . embedding_generator . clone ( ) ;
2111
+ let embedding_generator_ref = Arc :: clone ( & self . embedding_generator ) ;
2063
2112
let full_identity = self . node_name . clone ( ) ;
2064
2113
tokio:: spawn ( async move {
2114
+ let embedding_generator = {
2115
+ let generator_guard = embedding_generator_ref. lock ( ) . await ;
2116
+ generator_guard. clone ( )
2117
+ } ;
2065
2118
let _ = Node :: v2_api_import_tool_zip (
2066
2119
db_clone,
2067
2120
bearer,
0 commit comments