-
Notifications
You must be signed in to change notification settings - Fork 170
[Enhancement] Avoid blocking UI while adding existing repo #1643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
Hi! @real-yfprojects , is this right ? like the UI is not freezing now, but after reverting back to the old changes I cant reproduce the issue anymore, I've tried editing the settings.db and even deleted the testing version. Any clue what I did wrong ? |
I don't know what you were experiencing before, but this looks good. What happens when you close the dialog, the main window, quit vorta or try to edit anything inside vorta? |
Hi! Actually that was my mistake 😓 , I was running vorta from the backup repo and reverted the changes in main repo 😓 But is this the required solution ? like are there more changes required ? |
As I said. This is the right approach. What happens when you close the dialog, the main window or quit vorta? |
005e97f to
b250143
Compare
|
Hi! this seems to work on my machine! waiting for your review 😄 also I've had a question about migrations, how can I perform the migrations 🤔 |
|
@m3nu What was your Intention with the PR, would you consider it fine when the GUI stays responsive but you still can't do anything else while borg is running? |
|
This code was written long ago. It didn't seem important to do, anything else, while adding a repo. No specific consideration. |
But as per the current GUI, you can not do anything until you close the dialog displayed 🤔 |
Which migrations? Usually vorta migrates its database automatically. |
Oh, okay, means whenever I run vorta it applies the migrations ? |
|
Yes, if needed. |
96f9671 to
85e9d09
Compare
real-yfprojects
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this right?
Besides some minor problems this is right.
src/vorta/views/repo_add_dialog.py
Outdated
| thread.result.connect(self.run_result) | ||
| self.thread = thread # Needs to be connected to self for tests to work. | ||
| self.thread.run() | ||
| job = BorgInfoRepoJob(params['cmd'], params) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be queued in the default queue rather than the repo specific queue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But I guess the BorgInfoRepoJob is used to validate existing repo right ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's right. You have to pass an extra argument iirc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's right. You have to pass an extra argument iirc.
Hi! sorry for being inactive, I was sick 😅
I see the BorgJob accepting 3 params, 2 are already there, the third one should be sending value default by default since it is not provided 🤔 I was wondering how it's deciding about queue (this question might sound dumb but 😅 )
is this the default value we are talking about 🤔 , because jobs like backup are added to 1 I guess
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See this line:
vorta/src/vorta/application.py
Line 113 in 1f12782
| job = BorgCreateJob(msg['cmd'], msg, profile.repo.id) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi! added the code, but is there any way to verify it that it is going in default queue since I'm unsure it's working properly :)
src/vorta/views/repo_add_dialog.py
Outdated
|
|
||
| def cancel_job(self): | ||
| if self.job: | ||
| self.job.cancel() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sadly this only cancelt the job if its already running. If the job manager hasn't picked up the job yet, that is the job still sits in the queue, it won't be cancelled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi! I'm a bit confused testing this, any suggestion on how can I test this ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently there is no way to reproduce this with the GUI. So you can decide not to deal with it but instead write a code comment on the issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently there is no way to reproduce this with the GUI. So you can decide not to deal with it but instead write a code comment on the issue.
The code will be included in cancel_job method since it will check for both, if running or in queue, should I create a duplicate method for that and comment it ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi! @real-yfprojects , Since this is not reproducible, I'm not sure that the code will work or not, then is it okay to push the code even it is commented ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can only decide after seeing the code.
|
I noticed that the |
when we try to cancel (close) the add repo dialog without hitting the OK? I noticed that too, I added a try-except block for that in |
The cancel button should work now 👍🏼 |
real-yfprojects
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are n't setting a meaningful status message yet which was requested in #1306.
src/vorta/views/repo_add_dialog.py
Outdated
| if self.job: | ||
| self.job.cancel() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no self.job currently.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no
self.jobcurrently.
Hm! The close() method is working!, but I also noticed that you have to cancel the job within a specific time gap it might vary from machine to machine i guess, but after that time gap it adds the repo anyways
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
c234fca to
7edd15f
Compare
- Avoids freezing UI when an existing repo is added Closes borgbase#1306
7edd15f to
9ac38a1
Compare
|
Hi! and sorry I was away leaving this PR open with no activity, I was actually having my Practical exams 😅 I've updated the code accordingly, waiting for your review @real-yfprojects 😄 |
|
Pls also show a status message while |
Sorry! did not get that exactly |
Hi! Did you mean, while the app is backing up the data? l instead of messages like |
|
No it should show a message while the repository is accessed (verified) for the first time. Something like |
|
Hi! @real-yfprojects, sorry, this is taking longer than expected, I'm completely engrossed in preparation of my upcoming semester exam from May 8th. I will be completing this in a slow pace till then. Sorry for inconvenience :) |
|
No worries. |




Description
Related Issue
Closes #1306
Motivation and Context
When adding a existing repository the UI freezes, this change might solve this issue
How Has This Been Tested?
I've tested this by adding a repository which is used to crash the UI
Screenshots (if appropriate):
Types of changes
Checklist:
I provide my contribution under the terms of the license of this repository and I affirm the Developer Certificate of Origin.