-
-
Notifications
You must be signed in to change notification settings - Fork 47
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
I have orphan persons (without faces), and always recreates the group. #137
Comments
I still do not see how they were orphans, but now I understand why they are never erased. The current clusters are formed from the faces. (Without taking into account the persons table): As you identify which one should be removed from this list, you will never be able to eliminate the orphans: @stalker314314 p.s:. It's the opposite of orphan.. but I do not know how to say it.. 😅 |
Hard problem:) To be honest, I have no idea how this can happen. Couple of things:
|
As you probably saw, I tried with simple approach - #138. Plan is to merge that anyway, even though there was no results. My next plan is to create stress test and try to reproduce bug in that way (like create 10.000 faces with random descriptors and change sensitivity and see if, after each iteration, we have orphans). If that doesn't help, I vote that we add simple One additional thought:
|
Of course. It is clear that it is not the cause .. Just point out the only thing that I found .. 😞
This commit was already in master when I did all the tests..
I prefer to find out what the problem is, rather than silently ignore it..
I am thinking of adding some 'test mode' so that administrators have more tools in the fonted .. Maybe I can add this to the common user while we investigate..
Great, I'm seeing it ..
I forgot to document, but the test that I did the last time was, reset the database, and run the command with a timeout of 90 seconds, and a very small maximum area, to analyze quickly, and observe the evolution of the clusters. |
Agree ... We have to have it even if they are simple cases .. 😉
If you advance, welcome, but continue with what you have planned. 😄
In any case, I prefer to hide it from the user, but not add another task that eliminates errors that we can not even reproduce ...
I can not assure it, but I think no image was added. Only the complete collection, as I described in the previous comment.
No. Never crash. |
I repeated the same procedure, and I still not reproduce this problem again.
It takes 4 hours, when normally it takes 18 hours with the normal parameters .. and the result is acceptable .. 😅 Well, I'm not going to close this issue, but it seems to be an isolated case.. p.s: I had SMART problems on the main disk of my home server. 😞 😥 |
Yes, your exact procedure is how I envisioned stress test to work:D I still think this stress test would be nice addition (even if it does not uncover any issues). I also think it should not be blocker for beta release on app store:) So, yes, expect me to continue working on this (but, it might be only in May, due to business trips) |
Hi @stalker314314 Steps to reproduce:
With this there is already an empty person! 😞
Summarizing .. When a photo is invalidated, the face of the person is separated, but it is not verified that the person is left with any face, which in case of being empty, should be deleted.. |
Well .. Maybe it's much easier to reproduce .. 😅 Steps:
Again, the person is invalidated, and all faces are removed (and in this case also removed from the images table). |
In both cases, the hooks act, and the code is similar.. postWrite:
...and postDelete:
Therefore we just have to improve these lines .. 😃 |
Ah, I see, refcounting problem - we should drop person when there is no faces associated to it? There are two ways to fix this:
Problem with approach 1 is that it:
I can go with both approach, but I favor 2. What is your thinking @matiasdelellis? |
Yes.. 😄 Maybe I prefer more for option 1, to have the problem contained, it is fixed when it occurs.. On the other hand, option 2 is to fix any clean person we find in other stage, without knowing why it happened..
We just have to add N queries like this one. I don't think there are any performance problems.
Today we already have a problem like this... What happens with the faces that eliminate while grouping? 😕 |
I added PR for approach 1: #178 I still don't think this is better approach:
Maybe I expressed myself wrongly, it is not perf problems, but perf impact. And adding N queries is (by itself) performance overhead that didn't exist before:)
Well, that doesn't mean we should add more concurrency issues (just because there are some today) :) Also, adding stuff in Watcher is always risky, as we don't have that covered in tests (yet), so I didn't write any tests for this PR. But, another reason not to push stuff to Watcher. If you ever change your opinion and think approach 2 could be better, we can easily add another task and fix for presentation logic, and then we can revert this change:) |
Wow.. Thanks!.
You are absolutely right, but the current problem I think is potentially much more serious than what we add.
I was just seeing that we probably have to continue extending the hooks, to add '\OCA\Files_Trashbin\Trashbin', 'post_restore'.. because when you restore a deleted file seems that not emit 'postWrite' 😞
Well.. You can convince me to use approach 2 if we solve the current problems. Instead of deleting so much data, we could look for a suitable way to mark them to eliminate during the analysis. |
…oach-1 Deletes persons without faces on change, fixes #137
Graphic description
Just that.. 😞
Query to test:
Response here:
Surely it is due to so many tests of the change of the sensitivity parameter, but I still can not reproduce to document it correctly
The text was updated successfully, but these errors were encountered: