Skip to content

Commit 5bf3a60

Browse files
committed
Fixed Bug with infinite loop on init
1 parent f7f4455 commit 5bf3a60

File tree

15 files changed

+42
-11
lines changed

15 files changed

+42
-11
lines changed

JavaScript/HtmlMain.js

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

JavaScript/HtmlMain.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

JavaScript/main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@
1212
* Added settings parameter
1313

1414
### 0.0.20-rc01
15-
* Sync to Readers now works in separated thread
15+
* Sync to Readers now works in a separate thread
16+
* Exposed sync to readers bytes to Prometheus reader by reader

TypeScript/HtmlMain.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class HtmlMain {
99

1010
public static generateInit(model: INonInitializedModel): string {
1111

12-
var result = '<h1>Remains tables to load: ' + model.tablesRemains + '</h1><h2>Total loading time is: ' + this.formatSeconds(model.initializingSeconds) + '</h2>' +
12+
var result = '<h1>Remains tables to load: ' + model.tablesRemains + '</h1>' +
13+
'<h2>Table which files are being loaded: ' + model.tableBeingLoadedFiles + '</h2>' +
14+
'<h2>Total loading time is: ' + this.formatSeconds(model.initializingSeconds) + '</h2>' +
1315
'<table class="table table-striped table-bordered"><tr><th>TableName</th><th>Partitions loaded</th><th>Partitions total</th><th>Time gone</th><th>Time estimation</th></tr>'
1416

1517
for (let itm of model.progress.sort((a, b) => a.tableName > b.tableName ? 1 : -1)) {

TypeScript/contracts.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ interface INonInitializedModel {
2626
tablesRemains: number,
2727
initializingSeconds: number,
2828
progress: ITableLoadProgress[]
29+
tableBeingLoadedFiles: String
2930
}
3031

3132

TypeScript/main.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ class main {
6969
this.layoutElement.innerHTML = HtmlMain.generateInit(result.notInitialized);
7070
}
7171

72-
73-
7472
HtmlStatusBar.updateStatusbar(result.statusBar);
7573

7674
}).fail(() => {

src/http/controllers/status_controller/non_initialized/model.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ pub struct NonInitializedModel {
1212
#[serde(rename = "initializingSeconds")]
1313
initializing_seconds: i64,
1414
progress: Vec<TableProgressModel>,
15+
#[serde(rename = "tableBeingLoadedFiles")]
16+
table_being_loaded_files: Option<String>,
1517
}
1618

1719
impl NonInitializedModel {
@@ -30,6 +32,7 @@ impl NonInitializedModel {
3032
progress,
3133
tables_remains: snapshot.to_load.len(),
3234
initializing_seconds: now.seconds_before(app.created),
35+
table_being_loaded_files: snapshot.table_being_loaded_files,
3336
};
3437
}
3538
}

src/persist_operations/data_initializer/load_table/load_table_files.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ async fn load_table_files_loop(
4848
.await;
4949
}
5050
PartitionToLoad::EndOfReading => {
51-
break;
51+
return;
5252
}
5353
},
5454
None => {

src/persist_operations/data_initializer/load_tables.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ async fn load_tables_spawned(app: Arc<AppContext>) {
5959
);
6060
}
6161
super::load_tasks::ProcessTableToLoad::NotReadyYet => {
62-
tokio::time::sleep(Duration::from_millis(100)).await;
62+
println!("We do not have table to load yet");
63+
tokio::time::sleep(Duration::from_millis(1000)).await;
6364
}
6465
super::load_tasks::ProcessTableToLoad::TheEnd => {
6566
return;

src/persist_operations/data_initializer/load_tasks/init_state.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ impl InitState {
3434
write_access.get_next_table_to_init_files()
3535
}
3636

37+
pub async fn loading_files_for_tables_is_done(&self) {
38+
let mut write_access = self.data.lock().await;
39+
write_access.loading_files_for_tables_is_done();
40+
}
41+
3742
pub async fn get_next_table_to_load(&self) -> ProcessTableToLoad {
3843
let mut write_access = self.data.lock().await;
3944
write_access.get_next_table_to_load()

src/persist_operations/data_initializer/load_tasks/init_state_data.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub enum ProcessTableToLoad {
1111
}
1212

1313
pub struct InitStateData {
14+
pub table_being_loaded_files: Option<String>,
1415
pub tables_to_init_files: Vec<Arc<TableToLoad>>,
1516
pub tables_to_load: Vec<ProcessTableToLoad>,
1617
pub tables_being_loaded: Vec<Arc<TableToLoad>>,
@@ -24,6 +25,7 @@ impl InitStateData {
2425
tables_to_load: Vec::new(),
2526
tables_being_loaded: Vec::new(),
2627
tables_loaded: Vec::new(),
28+
table_being_loaded_files: None,
2729
}
2830
}
2931

@@ -34,13 +36,18 @@ impl InitStateData {
3436
}
3537

3638
let result = self.tables_to_init_files.remove(0);
39+
self.table_being_loaded_files = Some(result.table_name.to_string());
3740

3841
self.tables_to_load
3942
.push(ProcessTableToLoad::Process(result.clone()));
4043

4144
Some(result)
4245
}
4346

47+
pub fn loading_files_for_tables_is_done(&mut self) {
48+
self.table_being_loaded_files = None;
49+
}
50+
4451
pub fn init_tables(&mut self, tables: Vec<String>, logs: &Logs) {
4552
for table_name in tables {
4653
if let Err(err) = validation::validate_table_name(table_name.as_str()) {
@@ -66,7 +73,14 @@ impl InitStateData {
6673
if self.tables_to_load.len() > 0 {
6774
self.tables_to_load.remove(0)
6875
} else {
69-
ProcessTableToLoad::NotReadyYet
76+
if self.tables_being_loaded.len() == 0
77+
&& self.tables_to_load.len() == 0
78+
&& self.tables_to_init_files.len() == 0
79+
{
80+
ProcessTableToLoad::TheEnd
81+
} else {
82+
ProcessTableToLoad::NotReadyYet
83+
}
7084
}
7185
};
7286

@@ -101,6 +115,7 @@ impl InitStateData {
101115
to_load: convert_to_tables_snapshot_2(&self.tables_to_load),
102116
loading: convert_to_tables_snapshot(&self.tables_being_loaded),
103117
loaded: convert_to_tables_snapshot(&self.tables_loaded),
118+
table_being_loaded_files: self.table_being_loaded_files.clone(),
104119
}
105120
}
106121

src/persist_operations/data_initializer/load_tasks/init_state_snapshot.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ pub struct InitStateSnapshot {
1212
pub to_load: Vec<InitTableStateSnapshot>,
1313
pub loading: Vec<InitTableStateSnapshot>,
1414
pub loaded: Vec<InitTableStateSnapshot>,
15+
pub table_being_loaded_files: Option<String>,
1516
}

src/persist_operations/data_initializer/table_list_of_files_loader.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ pub async fn table_list_of_files_loader(app: Arc<AppContext>) {
66
while let Some(table_to_load) = app.init_state.get_next_table_to_init_files().await {
77
app.persist_io.get_table_files(&table_to_load).await;
88
}
9+
10+
app.init_state.loading_files_for_tables_is_done().await;
911
}

0 commit comments

Comments
 (0)