Orphaned search folders?
-
Hi @tobydox
this statement:
@tobydox said in Unable to retrieve parents for relation groupmember: uid attribute not found:
Only the Kopano installation is based on a migrated Zarafa setup (where we updated the unique user attribute in the database to match the newly created users in the new domain).
makes me wonder what exactly you already modified in your database. your error message could be directly connected those changes.
-
@fbartels said in Orphaned search folders?:
makes me wonder what exactly you already modified in your database. your error message could be directly connected those changes.
We only updated the externid row in the users table to use UUIDs (from the entryUUID attributes in LDAP) instead of numerical UIDs. Nothing else was changed and the setup is working in production without any other issues for almost 2 months now :-)
-
does the following give a hint where these searchfolders might be located…?
import kopano for user in kopano.users(): print(user) for folder in user.root.folders(): print(folder, folder.hierarchyid)
-
@mark-dufour said in Orphaned search folders?:
does the following give a hint where these searchfolders might be located…?
Unluckily not. It’s also not in the public store and I iterated over all items in all folders in all stores and none have the hierarchyids in question. Here are some more details directly from the DB:
mysql> SELECT * FROM tproperties WHERE hierarchyid=6240779; +----------+-------------+-------+------+-----------+----------------------+------------+------------+-------------+----------+------------+ | folderid | hierarchyid | tag | type | val_ulong | val_string | val_binary | val_double | val_longint | val_hi | val_lo | +----------+-------------+-------+------+-----------+----------------------+------------+------------+-------------+----------+------------+ | 4 | 6240779 | 12289 | 30 | NULL | WebApp Search Folder | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 12295 | 64 | NULL | NULL | NULL | NULL | NULL | 30611463 | 1282285952 | | 4 | 6240779 | 12296 | 64 | NULL | NULL | NULL | NULL | NULL | 30611463 | 1282285952 | | 4 | 6240779 | 13825 | 3 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 13826 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 13827 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 13834 | 11 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 13847 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 26168 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 26176 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 26177 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 6240779 | 26179 | 3 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | +----------+-------------+-------+------+-----------+----------------------+------------+------------+-------------+----------+------------+ 12 rows in set (0.00 sec)
-
which folder is the one with hierarchyid 4 (the parent of the searchfolder, according to the DB)…?
-
@mark-dufour said in Orphaned search folders?:
which folder is the one with hierarchyid 4 (the parent of the searchfolder, according to the DB)…?
mysql> SELECT * FROM hierarchy WHERE id=4; +----+--------+------+-------+-------+ | id | parent | type | flags | owner | +----+--------+------+-------+-------+ | 4 | 3 | 3 | 0 | 1 | +----+--------+------+-------+-------+ 1 row in set (0.00 sec) mysql> SELECT * FROM hierarchy WHERE id=3; +----+--------+------+-------+-------+ | id | parent | type | flags | owner | +----+--------+------+-------+-------+ | 3 | NULL | 1 | 0 | 1 | +----+--------+------+-------+-------+ 1 row in set (0.00 sec) mysql> SELECT * FROM users WHERE id=1; +----+----------+-------------+-----------+---------+ | id | externid | objectclass | signature | company | +----+----------+-------------+-----------+---------+ | 1 | NULL | 196610 | | 0 | +----+----------+-------------+-----------+---------+ 1 row in set (0.00 sec)
-
I’d like to know the folder name as well (eg. ‘FIND_ROOT’)… what does the script I pasted above say about ‘hierarchy 4’…?
-
@mark-dufour said in Orphaned search folders?:
I’d like to know the folder name as well (eg. ‘FIND_ROOT’)… what does the script I pasted above say about ‘hierarchy 4’…?
It doesn’t appear as it’s the public store:
store = kopano.Server().public_store print store.hierarchyid, store.findroot.hierarchyid
gives
3 6241326
while iterating over all folders of the public store just returns our public contact folders and calendars.
-
ok, so that’s why searchfolder_delete.py didn’t see it…
do you see the folder(s) like this:
for folder in kopano.public_store.findroot.folders(): print folder, folder.hierarchyid
if so you sholud be able to delete them as follows:
findroot.delete(folder)
-
@mark-dufour said in Orphaned search folders?:
for folder in kopano.public_store.findroot.folders():
print folder, folder.hierarchyidThis just gives
Folder(WebApp Search Folder) 6241385 Folder(WebApp Search Folder1) 6241386 Folder(WebApp Search Folder10) 6248108 Folder(WebApp Search Folder11) 6248167 Folder(WebApp Search Folder12) 6248168 Folder(WebApp Search Folder13) 6248308 Folder(WebApp Search Folder14) 6246205 Folder(WebApp Search Folder15) 6248449 Folder(WebApp Search Folder16) 6246895 Folder(WebApp Search Folder17) 6246900 Folder(WebApp Search Folder18) 6246922 Folder(WebApp Search Folder19) 6250024 Folder(WebApp Search Folder2) 6241387 ....
but the folder IDs in question are not listed.
-
hmm. maybe the folders are ‘hidden’ because of some rights issue… but it’s a bit difficult to debug like this. would it be possible to have a look around on your system perhaps, using SSH/teamviewer…?
-
@mark-dufour said in Orphaned search folders?:
TeamViewer would work. I’ll contact you via chat.
-
We tracked down the issue to search folders being erroneously being created in the root of the public store, probably orphans from the migration from Zarafa to Kopano where the public store did not have a FINDROOT. The script used for deleting these orphans:
import kopano for folder in kopano.Server().public_store.root.folders(): if folder.hierarchyid==NNNNNNN and folder.prop(PR_FOLDER_TYPE).value == 2: print folder.hierarchyid findroot.delete(folder)