From 9a578dbff873222baf19c8b4a6be7c0028795c9b Mon Sep 17 00:00:00 2001
From: rsdy
Date: Thu, 16 Nov 2023 15:22:19 +0000
Subject: [PATCH 1/3] Never start qdrant, just emit a message that it failed to
run
---
apps/desktop/src-tauri/src/backend.rs | 20 +++++++++++++++-----
apps/desktop/src-tauri/src/qdrant.rs | 20 ++++++++++----------
2 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/apps/desktop/src-tauri/src/backend.rs b/apps/desktop/src-tauri/src/backend.rs
index 78943de995..eda71b7168 100644
--- a/apps/desktop/src-tauri/src/backend.rs
+++ b/apps/desktop/src-tauri/src/backend.rs
@@ -50,26 +50,36 @@ pub fn initialize(app: &mut tauri::App) -> tauri::plugin::Result<
Ok(())
}
-async fn wait_for_qdrant() {
+async fn wait_for_qdrant() -> anyhow::Result<()> {
use qdrant_client::prelude::*;
let qdrant =
QdrantClient::new(Some(QdrantClientConfig::from_url("http://127.0.0.1:6334"))).unwrap();
- for _ in 0..60 {
+ for _ in 0..3 {
if qdrant.health_check().await.is_ok() {
- return;
+ return Ok(());
}
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
}
- panic!("qdrant cannot be started");
+ anyhow::bail!("qdrant cannot be started");
}
async fn start_backend(configuration: Configuration, app: tauri::AppHandle) {
tracing::info!("booting bleep back-end");
- wait_for_qdrant().await;
+ if let Err(err) = wait_for_qdrant().await {
+ error!(?err, "bad bad qdrant not running now");
+ sentry_anyhow::capture_anyhow(&err);
+ app.emit_all(
+ "server-crashed",
+ Payload {
+ message: "Something bad happened".into(),
+ },
+ )
+ .unwrap();
+ };
let configuration = if let Ok(remote) = configuration.clone().with_remote_cognito_config().await
{
diff --git a/apps/desktop/src-tauri/src/qdrant.rs b/apps/desktop/src-tauri/src/qdrant.rs
index 022a8c3e9d..224175c1ba 100644
--- a/apps/desktop/src-tauri/src/qdrant.rs
+++ b/apps/desktop/src-tauri/src/qdrant.rs
@@ -55,16 +55,16 @@ where
)
.unwrap();
- let command = relative_command_path("qdrant").expect("bad bundle");
-
- self.stdout_file = Some(stdout_file.clone());
- self.stderr_file = Some(stderr_file.clone());
- self.child = Some(run_command(
- &command,
- &qdrant_dir,
- &stdout_file,
- &stderr_file,
- ));
+ // let command = relative_command_path("qdrant").expect("bad bundle");
+
+ // self.stdout_file = Some(stdout_file.clone());
+ // self.stderr_file = Some(stderr_file.clone());
+ // self.child = Some(run_command(
+ // &command,
+ // &qdrant_dir,
+ // &stdout_file,
+ // &stderr_file,
+ // ));
Ok(())
}
From 9b6b0f7505e145448a8f75ddf7a989df0a017864 Mon Sep 17 00:00:00 2001
From: anastasiia
Date: Thu, 16 Nov 2023 10:54:13 -0500
Subject: [PATCH 2/3] render bug report modal on splash screen
---
apps/desktop/src-tauri/src/backend.rs | 3 +++
apps/desktop/src/App.tsx | 28 +++++++++++++++++++++++++++
apps/desktop/src/SplashScreen.tsx | 2 +-
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/apps/desktop/src-tauri/src/backend.rs b/apps/desktop/src-tauri/src/backend.rs
index eda71b7168..53745a1445 100644
--- a/apps/desktop/src-tauri/src/backend.rs
+++ b/apps/desktop/src-tauri/src/backend.rs
@@ -2,6 +2,8 @@ use bleep::{analytics, Application, Configuration, Environment};
use tracing::error;
use super::{config::get_device_id, Manager, Payload, Runtime};
+use std::thread;
+use std::time::Duration;
#[tauri::command]
pub fn get_last_log_file(config: tauri::State) -> Option {
@@ -72,6 +74,7 @@ async fn start_backend(configuration: Configuration, app: tauri::App
if let Err(err) = wait_for_qdrant().await {
error!(?err, "bad bad qdrant not running now");
sentry_anyhow::capture_anyhow(&err);
+ thread::sleep(Duration::from_secs(4));
app.emit_all(
"server-crashed",
Payload {
diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx
index 4a84a84ddc..81855e69ac 100644
--- a/apps/desktop/src/App.tsx
+++ b/apps/desktop/src/App.tsx
@@ -28,6 +28,9 @@ import {
} from '../../../client/src/services/storage';
import { LocaleType } from '../../../client/src/types/general';
import { polling } from '../../../client/src/utils/requestUtils';
+import ReportBugModal from '../../../client/src/components/ReportBugModal';
+import { UIContext } from '../../../client/src/context/uiContext';
+import { DeviceContextProvider } from '../../../client/src/context/providers/DeviceContextProvider';
import TextSearch from './TextSearch';
import SplashScreen from './SplashScreen';
@@ -106,6 +109,8 @@ function App() {
(getPlainFromStorage(LANGUAGE_KEY) as LocaleType | null) || 'en',
);
const [shouldShowSplashScreen, setShouldShowSplashScreen] = useState(true);
+ const [isBugReportModalOpen, setBugReportModalOpen] = useState(false);
+ const [serverCrashedMessage, setServerCrashedMessage] = useState('');
useEffect(() => {
i18n.changeLanguage(locale);
@@ -121,6 +126,13 @@ function App() {
);
useEffect(() => {
+ listen('server-crashed', (event) => {
+ console.log(event);
+ setBugReportModalOpen(true);
+ // @ts-ignore
+ setServerCrashedMessage(event.payload.message);
+ });
+
homeDir().then(setHomeDir);
Promise.all([
tauriOs.arch(),
@@ -208,11 +220,27 @@ function App() {
[homeDirectory, indexFolder, os, release, envConfig],
);
+ const bugReportContextValue = useMemo(
+ () => ({
+ isBugReportModalOpen,
+ setBugReportModalOpen,
+ activeTab: '',
+ }),
+ [isBugReportModalOpen],
+ );
+
return (
{shouldShowSplashScreen && }
+ {shouldShowSplashScreen && (
+
+
+
+
+
+ )}
diff --git a/apps/desktop/src/SplashScreen.tsx b/apps/desktop/src/SplashScreen.tsx
index 3ae16bc1da..4ba612fd6d 100644
--- a/apps/desktop/src/SplashScreen.tsx
+++ b/apps/desktop/src/SplashScreen.tsx
@@ -12,7 +12,7 @@ const SplashScreen = ({}: Props) => {
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
key="splash"
- className="w-screen h-screen flex items-center justify-center bg-bg-sub fixed top-0 left-0 z-[1000]"
+ className="w-screen h-screen flex items-center justify-center bg-bg-sub fixed top-0 left-0 z-10"
>
Date: Thu, 16 Nov 2023 16:52:21 +0000
Subject: [PATCH 3/3] Proper messaging
---
apps/desktop/src-tauri/src/backend.rs | 6 +++---
apps/desktop/src-tauri/src/qdrant.rs | 20 ++++++++++----------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/apps/desktop/src-tauri/src/backend.rs b/apps/desktop/src-tauri/src/backend.rs
index 53745a1445..edfbcee01b 100644
--- a/apps/desktop/src-tauri/src/backend.rs
+++ b/apps/desktop/src-tauri/src/backend.rs
@@ -57,7 +57,7 @@ async fn wait_for_qdrant() -> anyhow::Result<()> {
let qdrant =
QdrantClient::new(Some(QdrantClientConfig::from_url("http://127.0.0.1:6334"))).unwrap();
- for _ in 0..3 {
+ for _ in 0..35 {
if qdrant.health_check().await.is_ok() {
return Ok(());
}
@@ -72,13 +72,13 @@ async fn start_backend(configuration: Configuration, app: tauri::App
tracing::info!("booting bleep back-end");
if let Err(err) = wait_for_qdrant().await {
- error!(?err, "bad bad qdrant not running now");
+ error!(?err, "qdrant failed to come up");
sentry_anyhow::capture_anyhow(&err);
thread::sleep(Duration::from_secs(4));
app.emit_all(
"server-crashed",
Payload {
- message: "Something bad happened".into(),
+ message: "Failed to start qdrant".into(),
},
)
.unwrap();
diff --git a/apps/desktop/src-tauri/src/qdrant.rs b/apps/desktop/src-tauri/src/qdrant.rs
index 224175c1ba..022a8c3e9d 100644
--- a/apps/desktop/src-tauri/src/qdrant.rs
+++ b/apps/desktop/src-tauri/src/qdrant.rs
@@ -55,16 +55,16 @@ where
)
.unwrap();
- // let command = relative_command_path("qdrant").expect("bad bundle");
-
- // self.stdout_file = Some(stdout_file.clone());
- // self.stderr_file = Some(stderr_file.clone());
- // self.child = Some(run_command(
- // &command,
- // &qdrant_dir,
- // &stdout_file,
- // &stderr_file,
- // ));
+ let command = relative_command_path("qdrant").expect("bad bundle");
+
+ self.stdout_file = Some(stdout_file.clone());
+ self.stderr_file = Some(stderr_file.clone());
+ self.child = Some(run_command(
+ &command,
+ &qdrant_dir,
+ &stdout_file,
+ &stderr_file,
+ ));
Ok(())
}