diff --git a/docs/admin/slow_hardware.md b/docs/admin/slow_hardware.md deleted file mode 100644 index 8ba5a6f86..000000000 --- a/docs/admin/slow_hardware.md +++ /dev/null @@ -1,43 +0,0 @@ -# Managing GtS on slow hardware - -While GoToSocial runs great on lower-end hardware, some operations are not practical on it, especially -instances with the database on slow storage (think anything that is not an SSD). This document -offers some suggestions on how to work around common issues when running GtS on slow hardware. - -## Running database migrations on a different machine - -Sometimes a database migration will need to do operations that are taxing on the database's storage. -These operations can take days if the database resides on a hard disk or SD card. If your -database is on slow storage, it can save a lot of time to follow the following procedure: - -!!! danger - - It might seem tempting to keep GtS running while you run the migrations on another machine, but - doing this will lead to all the posts that are received during the migration post disappearing - once the migrated database is re-imported. - - 1. Shut down GtS - 2. Take a [backup](backup_and_restore.md#what-to-backup-database) of the database - 3. Import the database on faster hardware - 4. Run the GtS migration on the faster hardware - 5. Take a backup of the resultant database - 6. Import the resultant backup and overwrite the old database - 7. Start GtS with the new version - -### Running GtS migrations separately - -After you import the database on the faster hardware, you can run the migration without starting -GtS by downloading the *target* GtS version from the [releases](https://codeberg.org/superseriousbusiness/gotosocial/releases) page. -For instance, if you are running `v0.19.2` and you want to upgrade to `v0.20.0-rc1`, download the -latter version. Once you have the binary, set it to executable by running `chmod u+x /path/to/gotosocial`. Afterwards, copy the configuration of the original server, and alter -it with the location of the new database. We copy the configuration in case variables like -the hostname is used in the migration, we want to keep that consistent. -Once everything is in place, you can run the migration like this: - -```sh -$ /path/to/gotosocial --config-path /path/to/config migrations run -``` - -This will run all the migrations, just like GtS would if it was started normally. Once this is done -you can copy the result to the original instance and start the new GtS version there as well, which -will see that everything is migrated and that there's nothing to do except run as expected. diff --git a/internal/federation/dereferencing/status.go b/internal/federation/dereferencing/status.go index 3fa5ac787..fffaa88a6 100644 --- a/internal/federation/dereferencing/status.go +++ b/internal/federation/dereferencing/status.go @@ -608,9 +608,6 @@ func (d *Dereferencer) enrichStatus( return nil, nil, gtserror.Newf("error populating emojis for status %s: %w", uri, err) } - // Check if interaction policy has changed between status and latestStatus. - interactionPolicyChanged := status.InteractionPolicy.DifferentFrom(latestStatus.InteractionPolicy) - if isNew { // Simplest case, insert this new remote status into the database. if err := d.state.DB.PutStatus(ctx, latestStatus); err != nil { @@ -628,7 +625,6 @@ func (d *Dereferencer) enrichStatus( tagsChanged, mediaChanged, emojiChanged, - interactionPolicyChanged, ) if err != nil { return nil, nil, gtserror.Newf("error handling edit for status %s: %w", uri, err) @@ -1061,7 +1057,6 @@ func (d *Dereferencer) handleStatusEdit( tagsChanged bool, mediaChanged bool, emojiChanged bool, - interactionPolicyChanged bool, ) ( cols []string, err error, @@ -1146,15 +1141,6 @@ func (d *Dereferencer) handleStatusEdit( // been previously populated properly. } - if interactionPolicyChanged { - // Interaction policy changed. - cols = append(cols, "interaction_policy") - - // Int pol changed doesn't necessarily - // indicate an edit, it may just not have - // been previously populated properly. - } - if edited { // Get previous-most-recent modified time, // which will be this edit's creation time. diff --git a/internal/gtsmodel/interactionpolicy.go b/internal/gtsmodel/interactionpolicy.go index 4fa5f4d8e..0e248e49e 100644 --- a/internal/gtsmodel/interactionpolicy.go +++ b/internal/gtsmodel/interactionpolicy.go @@ -17,8 +17,6 @@ package gtsmodel -import "slices" - // A policy URI is GoToSocial's internal representation of // one ActivityPub URI for an Actor or a Collection of Actors, // specific to the domain of enforcing interaction policies. @@ -234,39 +232,6 @@ type PolicyRules struct { ManualApproval PolicyValues `json:"WithApproval,omitempty"` } -// DifferentFrom returns true if pr1 and pr2 -// are not equal in terms of nilness or content. -func (pr1 *PolicyRules) DifferentFrom(pr2 *PolicyRules) bool { - // If one PolicyRules is nil and - // the other isn't, they're different. - if pr1 == nil && pr2 != nil || - pr1 != nil && pr2 == nil { - return true - } - - // Check if AutomaticApproval - // differs between the two. - if slices.Compare( - pr1.AutomaticApproval, - pr2.AutomaticApproval, - ) != 0 { - return true - } - - // Check if ManualApproval - // differs between the two. - if slices.Compare( - pr1.ManualApproval, - pr2.ManualApproval, - ) != 0 { - return true - } - - // They're the - // same picture. - return false -} - // Returns the default interaction policy // for the given visibility level. func DefaultInteractionPolicyFor(v Visibility) *InteractionPolicy { @@ -457,41 +422,3 @@ func DefaultInteractionPolicyDirect() *InteractionPolicy { *c = *defaultPolicyDirect return c } - -// DifferentFrom returns true if p1 and p2 are different. -func (ip1 *InteractionPolicy) DifferentFrom(ip2 *InteractionPolicy) bool { - // If one policy is null and the - // other isn't, they're different. - if ip1 == nil && ip2 != nil || - ip1 != nil && ip2 == nil { - return true - } - - // If they're both nil we don't - // need to check anything else. - if ip1 == nil && ip2 == nil { - return false - } - - // If CanLike differs from one policy - // to the next, they're different. - if ip1.CanLike.DifferentFrom(ip2.CanLike) { - return true - } - - // If CanReply differs from one policy - // to the next, they're different. - if ip1.CanReply.DifferentFrom(ip2.CanReply) { - return true - } - - // If CanAnnounce differs from one policy - // to the next, they're different. - if ip1.CanAnnounce.DifferentFrom(ip2.CanAnnounce) { - return true - } - - // Looks the - // same chief. - return false -} diff --git a/mkdocs.yml b/mkdocs.yml index 0d5528080..5c33d764e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -38,7 +38,7 @@ plugins: extra: alternate: - name: English - link: /en/ + link: /en/ lang: en - name: 中文 link: /zh-cn/ @@ -149,7 +149,6 @@ nav: - "admin/spam.md" - "admin/database_maintenance.md" - "admin/themes.md" - - "admin/slow_hardware.md" - "Federation": - "federation/index.md" - "federation/http_signatures.md"