fix: re-introduce to known starcharts
This commit is contained in:
parent
124d8d7b34
commit
2890bf566c
1 changed files with 40 additions and 19 deletions
|
@ -19,7 +19,7 @@ use std::collections::HashSet;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
|
||||||
use actix::clock::sleep;
|
use actix::clock::sleep;
|
||||||
use actix_web::web;
|
use actix_web::web::{self, Data};
|
||||||
use actix_web::{HttpResponse, Responder};
|
use actix_web::{HttpResponse, Responder};
|
||||||
use actix_web_codegen_const_routes::get;
|
use actix_web_codegen_const_routes::get;
|
||||||
use actix_web_codegen_const_routes::post;
|
use actix_web_codegen_const_routes::post;
|
||||||
|
@ -112,15 +112,9 @@ impl Ctx {
|
||||||
panic!()
|
panic!()
|
||||||
}
|
}
|
||||||
starchart_url.set_path(ROUTES.introducer.get_mini_index);
|
starchart_url.set_path(ROUTES.introducer.get_mini_index);
|
||||||
Ok(self
|
let resp = self.client.get(starchart_url).send().await.unwrap();
|
||||||
.client
|
println!("{:?}", resp);
|
||||||
.get(starchart_url)
|
Ok(resp.json().await.unwrap())
|
||||||
.send()
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.json()
|
|
||||||
.await
|
|
||||||
.unwrap())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn client_introduce_starchart(&self, mut starchart_url: Url) -> ServiceResult<()> {
|
async fn client_introduce_starchart(&self, mut starchart_url: Url) -> ServiceResult<()> {
|
||||||
|
@ -178,15 +172,17 @@ impl Ctx {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn bootstrap(&self, db: &Box<dyn SCDatabase>) -> ServiceResult<()> {
|
pub async fn bootstrap(&self, db: &Box<dyn SCDatabase>) -> ServiceResult<()> {
|
||||||
let mut known_starcharts = HashSet::with_capacity(self.settings.introducer.nodes.len());
|
async fn run(
|
||||||
for starchart in self.settings.introducer.nodes.iter() {
|
ctx: &Ctx,
|
||||||
|
db: &Box<dyn SCDatabase>,
|
||||||
|
starchart: &Url,
|
||||||
|
known_starcharts: &mut HashSet<Url>,
|
||||||
|
) -> ServiceResult<()> {
|
||||||
let mut page = 1;
|
let mut page = 1;
|
||||||
loop {
|
loop {
|
||||||
let mut nodes = self
|
let mut nodes = ctx.client_get_introducions(starchart.clone(), page).await?;
|
||||||
.client_get_introducions(starchart.clone(), page)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
self.client_introduce_starchart(starchart.clone()).await?;
|
ctx.client_introduce_starchart(starchart.clone()).await?;
|
||||||
|
|
||||||
if nodes.is_empty() {
|
if nodes.is_empty() {
|
||||||
break;
|
break;
|
||||||
|
@ -209,6 +205,10 @@ impl Ctx {
|
||||||
}
|
}
|
||||||
ctx.import_forges(node_url.clone(), db).await?;
|
ctx.import_forges(node_url.clone(), db).await?;
|
||||||
let mini_index = ctx.client_get_mini_index(node_url.clone()).await?;
|
let mini_index = ctx.client_get_mini_index(node_url.clone()).await?;
|
||||||
|
log::info!(
|
||||||
|
"Received mini_index {} from {node_url}",
|
||||||
|
mini_index.mini_index
|
||||||
|
);
|
||||||
db.rm_imported_mini_index(&node_url).await?;
|
db.rm_imported_mini_index(&node_url).await?;
|
||||||
db.import_mini_index(&node_url, &mini_index.mini_index)
|
db.import_mini_index(&node_url, &mini_index.mini_index)
|
||||||
.await?;
|
.await?;
|
||||||
|
@ -216,16 +216,37 @@ impl Ctx {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
_bootstrap(self, db, &mut known_starcharts, starchart.as_str()).await?;
|
_bootstrap(ctx, db, known_starcharts, starchart.as_str()).await?;
|
||||||
|
|
||||||
for node in nodes.drain(0..) {
|
for node in nodes.drain(0..) {
|
||||||
if node.instance_url == self.settings.introducer.public_url.as_str() {
|
if node.instance_url == ctx.settings.introducer.public_url.as_str() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
_bootstrap(self, db, &mut known_starcharts, &node.instance_url).await?;
|
_bootstrap(ctx, db, known_starcharts, &node.instance_url).await?;
|
||||||
}
|
}
|
||||||
page += 1;
|
page += 1;
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
let mut known_starcharts = HashSet::with_capacity(self.settings.introducer.nodes.len());
|
||||||
|
for starchart in self.settings.introducer.nodes.iter() {
|
||||||
|
run(self, db, starchart, &mut known_starcharts).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut page = 0;
|
||||||
|
loop {
|
||||||
|
let offset = page * LIMIT;
|
||||||
|
let starcharts = db
|
||||||
|
.get_all_introduced_starchart_instances(offset, LIMIT)
|
||||||
|
.await?;
|
||||||
|
for starchart in self.settings.introducer.nodes.iter() {
|
||||||
|
run(self, db, starchart, &mut known_starcharts).await?;
|
||||||
|
}
|
||||||
|
if starcharts.len() < LIMIT as usize {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
page += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue