windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v244a/Hydrus.Network.244a.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v244a/Hydrus.Network.244a.-.Windows.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v244a/Hydrus.Network.244a.-.OS.X.-.App.dmg
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v244a/Hydrus.Network.244a.-.OS.X.-.Extract.only.tar.gz
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v244a/Hydrus.Network.244a.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v244a.tar.gz
EDIT: There was a problem with the initial release and autocomplete matching of siblings. The 244a above is a hotfix.
I had a great week. The db rewrite went very well. I have reduced the size of the client database files by about 33%.
This is a heavy update. It will use a lot of HDD activity for about 30-40 minutes. If you sync with my PTR, you will need about 6GB free on your hydrus install's hard drive.
the final compaction
This all went better than I expected. There was a lot of work–I changed about 1,200 lines of code this week–but the fundamental problem proved simple, and there were only a couple of difficult bumps along the way. The database is smaller, operations are faster, and the code is simpler.
Ultimately, I have reduced how tag mappings are stored in the database. Before it used three numbers per row, and now it uses two. This reduces the size of client.mappings.db by about 40%. In order to map the missing number, I had to bump up client.master.db by a little bit. There are many other small changes, but it seems to be shaking out to about a 33% reduction in total db size, or about 1.7GB for a typical PTR-syncing client.
My dev pc took 33 minutes to convert while my laptop took 45. If you have an SSD or a fast CPU, it should take a little less time, and if you have an old computer, expect it to take longer. If you do not sync with my PTR, it will take about ten seconds.
If you do sync with my PTR, you will need about 6GB free on your hydrus install's hard drive for the update to work. If you don't have this, the client will warn you beforehand. It is optional and beneficial to also have about 3GB free on your system drive, if that is different from your hydrus install.
The particularly good news with this change is that nothing seems to be architecturally broken or suddenly slowed down by the change. Because every mappings row is that bit smaller and simpler, most operations (including tag repository processing) are actually going through a bit faster.
Please let me know if you do encounter any problems. I expect there is at least one unusual operation I have made a typo on that slipped through my testing.
This change was a long time coming, but I am also glad I had the chance to think about it. I am now ready to overhaul the network next week.
some other stuff
I fixed the Deviant Art parser!
I fixed an issue with Linux session-loaded pages not accepting key events!
OS X can now handle windows with no pages open, and it won't eat pages on session loads!
The client will stop spamming so many 'shutdown work' dialogs when there seems to be nothing to do!
full list
- updated client database to compact ( namespace_id, tag_id ) pair into a single id for storage
- added some bells and whistles to the update code
- added a free space check and messagebox warning before the update
- updated db, service, and a/c cache creation code to reflect new schema
- updated absolutely everything else in the db to reflect the new schema
- for users with plenty of tags, the db should now be about 33% smaller!
- unified how unnamespaced tag searching counts are totalled
- unnamespaced tag searching counts are now totalled when the tags are fetched from the in-view ui media
- unified how tags are split into ( namespace, subtag ) across the program
- fixed deviantart gallery thumbnail parser
- fixed linux session load page key event handling bug
- os x can now support notebooks with zero pages open
- fixed an issue where os x was losing the first page of some session loads
- fixed some similar files shutdown work false positive calculation
- reduced server bandwidth check period from 24 hours to 1 hour
- improved calltothread scheduling under heavy load
- improved scheduling of how files are physically deleted
- numerous laggy temp_table replacement/cleanup
- more temp_table replacement
- misc efficiency improvements and general db code cleanup
- misc path code cleanup
next week
Due to recent issues with growing network bandwidth usage, I will now overhaul how repositories and clients synchronise. There is a lot of wasted bandwidth, CPU, and HDD in this at the moment, and the database is now in a good place to receive and process the content data in a cleverer way.
This database rewrite turned out to be easier than I thought, but I really do think this will be a big job. If it does end up needing two weeks, I will say so on Tuesday the 14th.