Commit graph

6540 commits

Author SHA1 Message Date
Michael Gratton
13f5602446 Merge branch 'mjog/991-gcr-critical' into 'mainline'
Fix GCR critical

Closes #991

See merge request GNOME/geary!583
2020-09-24 22:59:08 +00:00
Michael Gratton
82f0ca8d0f Merge branch 'mjog/db-result-timing' into 'mainline'
Database contention and locking redux

See merge request GNOME/geary!578
2020-09-24 22:54:30 +00:00
Michael Gratton
0475d29f84 Application.CertificateManager: Warn when GCR not able to access stores
At least let people know somehow their GCR setup is lacking.
2020-09-25 08:27:36 +10:00
Michael Gratton
7f7c55e79a Application.CertificateManager: Fix critical when no GCR trust stores
Ensure GCR store not null before accessing it.
2020-09-25 08:25:34 +10:00
Michael Gratton
880705f2ab Update files for 40 development 2020-09-25 08:23:15 +10:00
Daniel Mustieles
571c10add8 Updated Spanish translation 2020-09-23 09:26:43 +02:00
Dušan Kazik
5942e30377 Update Slovak translation
(cherry picked from commit 2028c9dea3f1d8f6c5dcfdd44f5f1990121e0983)
2020-09-21 11:52:27 +00:00
Dušan Kazik
e56e2a8e54 Update Slovak translation 2020-09-16 11:28:54 +00:00
Goran Vidović
d26894046b Update Croatian translation 2020-09-15 23:26:19 +00:00
Goran Vidović
3e176af1e1 Update Croatian translation 2020-09-15 23:17:28 +00:00
Fabio Tomat
e957f0f8a7 Update Friulian translation 2020-09-15 06:56:54 +00:00
Fabio Tomat
acabdc9e73 Update Friulian translation 2020-09-15 05:52:24 +00:00
Fabio Tomat
4a4e6a6992 Update Friulian translation 2020-09-15 05:20:06 +00:00
Fabio Tomat
56b77cf0d7 Update Friulian translation 2020-09-14 19:32:40 +00:00
Michael Gratton
26f3878a7a Update files for 3.38.0.1 2020-09-14 23:36:32 +10:00
Michael Gratton
a67d55bff6 Merge branch 'mjog/forgotten-sql-files' into 'mainline'
sql: Remember to install new SQL migration files

See merge request GNOME/geary!581
2020-09-13 14:22:45 +00:00
Michael Gratton
1e2ae9410f sql: Remember to install new SQL migration files 2020-09-13 23:59:00 +10:00
Jordi Mas
b72a8491c6 Update Catalan translation 2020-09-13 09:34:47 +02:00
Michael Gratton
22b642edef Update files for 3.38 2020-09-13 14:21:30 +10:00
Michael Gratton
3d8b86dd4e Geary.ImapDB.Folder: Drop create/merge batch size down
We've had reports on Matrix that existing batch transactions in
`create_or_merge_email_async` are taking up to 30s to run, which is
getting uncomfortably close to the 60s timeout.

Drop the batch size down from 25 to 10 to reduce the chance that this
will eventually fail with a "database is locked" error.

See #921 for context.
2020-09-12 12:02:49 +10:00
Michael Gratton
915a38faca Geary.ImapDb.Account: Slice up search table population work better
Although populating the search table had been broken up into batches
of 50 email, it was still search for and loading every single message
id in both the MessageTable and MessageSearchTable, doing a manual
join, and then updating the batch, for *each* batch, and in a RW
transaction.

Break this up so that the ids are loaded and joined only once, the
queries happens in a RO transaction, the manual join happens in a side
thread, leaving each RW transaction only having to load the messages
and update the search index for up to 50 messages.
2020-09-11 00:00:02 +10:00
Michael Gratton
0f60c285df Geary.Db: Update SQL logging
Ensure all code paths that execute SQL are logging it if enabled, and
clean up the log formatting.

Add new `enable_result_logging` static property to control result
logging separately from SQL logging, so we can get SQL logged without
having to see email. Clean up result formatting, and keep track of the
current result row number and log that as context.
2020-09-10 23:59:05 +10:00
Michael Gratton
e39853db62 Geary.ImapEngine.GenericAccount: Set database logging parent per account
Set the database's logging parent so its log statements are associated
with its account in the inspector.
2020-09-10 19:07:42 +10:00
Michael Gratton
940ca83195 Geary.Db.Context: Remove separate logging_parent property
Since each context type already has access to the object that is its
context parent, don't bother with a stand-alone `logging_parent`
property, just have context types implement it and return the
appropriate object.
2020-09-10 19:07:42 +10:00
Michael Gratton
0fa0d0ea4d Geary.Db.Statement: Minor code cleanup
Make `sql` a proper auto property. Remove expanded sql workaround.
Minor code style cleanup.
2020-09-10 19:07:42 +10:00
Michael Gratton
485868d570 Geary.Db.DatabaseConnection: Check elapsed time for exec statements
Re-work elapsed timer to be usable in other context objects, use it
for timing exec query execution.
2020-09-10 19:07:28 +10:00
Jordi Mas
ea40569251 Update Catalan translation 2020-09-08 22:42:52 +02:00
Fabio Tomat
d3905e141d Update Friulian translation 2020-09-08 14:22:36 +00:00
Michael Gratton
a1d31847b1 Geary.Db.Result: Log large elapsed query times as a warning
Help ensure that long-running queries get some visibility during
development.
2020-09-08 22:13:39 +10:00
Michael Gratton
3b6dd30332 Geary.Db.Context: Update access to DatabaseConnections
Ensure internal code can access a DatabaseConnection from context
objects to get access to connection-specific code, but make the
polymorphic context accessors internal so transactions can't access
them.
2020-09-08 22:13:19 +10:00
Michael Gratton
5b64939490 Update files for 3.37.92 2020-09-06 08:48:36 +10:00
Michael Gratton
45c27dffa4 Merge branch '921-slow-old-detach-query' into 'mainline'
Fix query performance regression in old message detachment

See merge request GNOME/geary!577
2020-09-05 05:09:30 +00:00
Michael Gratton
4ae97ab74b Merge branch 'mjog/921-db-locked' into 'mainline'
Database is locked error

See merge request GNOME/geary!576
2020-09-05 04:51:32 +00:00
Michael Gratton
6d473a2655 Geary.Logging.Record: Stop keeping a ref on logging source objects
When constructing a new record, rather that getting the state object
from a source and hanging on to it, just keep a few salient details
and then release it, so we don't keep a ref to the source hanging
around. This also means we need to pre-fill well-known up front, adding
some overhead when not logging.

This fixes hitting resource limits like memory and file descriptors
when lots of objects are logged, as seen when logging is enabled for
the DB, and in particular for `DatabaseConnection` objects, since each
one represents an open SQLite database file and related state.

It also ruins the glorious future in which we could inspect logged
objects in the Inspector in the same way that Firefox allows you to
inspect objects in the JS console, but c'est la ve. The way forward
there is probably adding structured data to state objects, allowing
sources to provide a curated set of properties to log.
2020-09-05 13:25:41 +10:00
Michael Gratton
2983990eca Application.Client: Ensure DB log messages show up in the inspector
Stop suppressing the db's logging domain by default for the moment.
2020-09-05 13:25:41 +10:00
Michael Gratton
dcad419b03 Geary.Db.DatabaseConnection: Add SQL debug logging when txns fail
This isn't a good place to do it, but neither GLib's error model not the
engine's database model makes it possible to getting access to
transaction state otherwise at the moment.
2020-09-05 13:25:41 +10:00
Michael Gratton
51ad8458a9 Geary.Db: Update logging implementation
Fix infinite recursion logging from DatabaseConnection caused by
`to_string` and Context implementing `to_logging_state` that calls that.
Make individual objects implement `Logging.Source` instead and have
them return appropriate, custom logging state individually.
2020-09-05 13:25:41 +10:00
Michael Gratton
257f6fb901 Geary.Db.Connection: Split up into db and transaction-specific impls
Convert `Connection` into an interface, add two concrete implementations
that allow splitting up the database connection used generally, and the
connection passed to transactions. This allows limiting the API surface
that transactions have access to (so they can't e.g. create
sub-transactions) and perform transaction-specific work (e.g. better
logging when an error occurs).
2020-09-05 13:25:41 +10:00
Chris Heywood
cea89ff9ec Fix query performance regression brought in with !556
The join used to determine how many messages should be left in the
folder was inefficient. The following query has also been performance
tested and found to be more efficient as a join (instead of a subquery).
2020-09-05 10:02:53 +10:00
Thibault Martin
801fa710cc Update French translation 2020-09-04 12:27:23 +00:00
Daniel Mustieles
d593fb37fe Updated Spanish translation 2020-09-04 13:07:11 +02:00
Michael Gratton
63b73c9d0e Merge branch 'mjog/imap-command-cancellation' into 'mainline'
IMAP command cancellation cleanup

See merge request GNOME/geary!574
2020-09-03 00:42:44 +00:00
Emin Tufan Çetin
850961467e Update Turkish translation 2020-09-02 11:43:48 +00:00
Michael Gratton
a123983cb0 Geary.Imap: Remove COMPRESS command
Geary hasn't used compression for IMAP in a while now due to the
possibility of information leakage for secure connections, so remove
the command as well.
2020-09-02 14:54:42 +10:00
Michael Gratton
a1b0547e67 Geary.Imap.Command: Improve cancelled-before send handling
Add `cancelled_before_send` method to support explicitly cancelling the
command before it was sent, so that `wait_until_complete` does not end
up waiting forever when this happens. Call the new method from
`ClientConnection` as required.
2020-09-02 14:42:39 +10:00
Michael Gratton
6c0607d809 Geary.Imap.Command: Rename cancel_send to something that better describes it
This method doesn't cancel sending as much as it halts any serialisation
that is occurring.
2020-09-02 14:42:33 +10:00
Michael Gratton
0707500561 Geary.Imap.ClientConnection: Avoid sending cancelled commands
Now that commands has a `should_send` cancellable property, check that
before queuing and before sending, so that cancelled commands never
actually get sent over the wire.
2020-09-02 14:34:41 +10:00
Michael Gratton
85e9046c71 Geary.Imap: Make command cancellable a property of the command object
Since both submitting a command no longer requires a cancellable, and it
is desirable to avoid sending a queued command that has already been
cancelled beforehand, add a new `Command.should_send` Cancellable
property to specify if a command should (still) be sent or not, and stop
passing a cancellable to ClientSession when submitting commands.

Allow call sites to pass in existing cancellable objects, and thus also
add it it as a ctor property to the Command class and all subclasses.

Lastly, throw a cancelled exception in `wait_until_complete` if send
was cancelled so that the caller knows what happened.

Remove redundant cancellable argument from
`Imap.Client.command_transaction_async` and rename it to
`submit_command` to make it more obvious about what it does.
2020-09-02 14:34:41 +10:00
Michael Gratton
67f0678b1d Geary.Imap: Don't cancel waiting for responses for submitted commands
The IMAP protocol does not allow commands to be cancelled once sent over
the wire to the server. However `IMAP.Command` objects are currently
submitted to be send with a cancellable, which may be cancelled before
the response is received from the server. If this happens, the repsonse
to the command from the server is not waited for, and untagged data from
the cancelled command may end up being handled by the subsequent
command, which is bad.

After submitting a command to the connection, don't supply the given
cancellable to the command's wait method, so it hangs around to handle
any tagged and untagged responses as required.
2020-09-02 14:34:41 +10:00
Michael Gratton
83156acf34 Merge branch 'mjog/797-sync-recoverable-error-loop-followup' into 'mainline'
ImapEngine.MinimalFolder: Fix embarrassing logic bug in commit 117051e5

Closes #964

See merge request GNOME/geary!573
2020-09-02 04:02:32 +00:00