summaryrefslogtreecommitdiffstats
path: root/common
Commit message (Collapse)AuthorAge
...
* If we have no store available, we also have no upgrade to execute.Christian Mollekopf2018-02-19
|
* Fixed crashes due to concurrently running queries.Christian Mollekopf2018-02-15
| | | | | | | | | | | | | | | | | | | | | | | | A single QueryRunner should never have multiple workers running at the same time. We did not properly enforce this in case of incremental updates coming in. The only way I managed to reproduce the crash: * Open a large folder with lots of unread mail in kube * Select a mail in the maillist and hold the down button * This will: * Repeatedly call fetch more * Trigger lot's of mark as read modifications that result in notifications. * Eventually it crashes somewhere in EntityStore, likely because of concurrent access of the filter structure which is shared through the state. We now ensure in the single threaded portion of the code that we only ever run one worker at a time. If we did receive an update during, we remember that change and fetch more once we're done. To be able to call fetch again that portion was also factored out into a separate function.
* Enable partial matchingChristian Mollekopf2018-02-13
|
* Improved debug messagesChristian Mollekopf2018-02-13
|
* Fixed date parsingChristian Mollekopf2018-02-13
|
* Xapian based fulltext indexingChristian Mollekopf2018-02-11
| | | | | This cuts into the sync performance by about 40%, but gives us fast fulltext searching for all local content.
* Return feedback on wether an upgrade has happened or not.Christian Mollekopf2018-02-11
|
* Support storage downgrading as wellChristian Mollekopf2018-02-11
|
* Fixed warningChristian Mollekopf2018-02-07
|
* Removed all traces of BLOB propertiesChristian Mollekopf2018-02-06
|
* Store all BLOB properties inline.Christian Mollekopf2018-02-06
| | | | | | | | | | | | | | | | | | | | | BLOB properties had a couple of intended purposes: * Allow large payloads to be streamed directly to disk, and then be handled by reference. * Allow zero-copy handling. * Keep the database values compact so we can avoid traversing large BLOBS. However, they came at the cost of code-complexity, and we lost all the benefits of our storage layer, such as transactions. Measurements showed, that for email (the intended primary usecase), the overhead is hardly measurable, with most parts performing better, or at least not worse. We additionally also gain file-system independence, which may help on other platforms. The biggest drawback is probably that large payloads need to be written to disk twice, because of the synchronizer queue (once for the queue, once for the actual data).
* Optional printing of transaction spanChristian Mollekopf2018-01-30
|
* Less hardcoded numbersChristian Mollekopf2018-01-30
|
* One central place to generate uidsChristian Mollekopf2018-01-30
|
* Include synchronization store in diskUsage calculationChristian Mollekopf2018-01-30
|
* Support for storage upgradesChristian Mollekopf2018-01-30
|
* Implemented removePrefixChristian Mollekopf2018-01-23
|
* The local variable might be gone already when the thread starts.Christian Mollekopf2018-01-08
|
* We need all parents available, not only oneChristian Mollekopf2018-01-03
|
* Use read-write locks for finer grained control to sDbi and sEnvironmentsChristian Mollekopf2018-01-03
| | | | | | | | | | There are only a few cases where have to access the list of dbis or environments, so we can normally get away with just read-locking. This seems to fix a segfault that was possibly caused be an environment being reused that has already been freed in another thread. The read-only lock when initially retrieving the environment seems to fix that.
* Since we only support incremental fetching for flat lists a boolean isChristian Mollekopf2018-01-03
| | | | enough.
* Avoid emitting signals for children without parentsChristian Mollekopf2018-01-03
|
* Trying to open a db that doesn't exist in read-only mode is not an errorChristian Mollekopf2018-01-03
|
* Removed broken testsChristian Mollekopf2018-01-03
|
* Removed unused synclistresultChristian Mollekopf2018-01-02
|
* No parent queryChristian Mollekopf2018-01-02
|
* Change the default for fullPayloadAvailableChristian Mollekopf2017-12-29
| | | | | | When creating new messages the default should be that the full payload is available. Not having the payload available is a specialcase used by the imap resource.
* Fixed removal of entityChristian Mollekopf2017-12-29
|
* Fixed incremental updates in folder queriesChristian Mollekopf2017-12-28
| | | | | | | | | Incremental additions of children in the tree were filtered due to the parent filter. This broke when we started to maintain state, thus causing the filter in datastorequery containing the parent filter to be carried over. Given that the incremental querying of children currently doesn't really add much value (we don't have trees that are large/deep enough), perhaps we're better off using a different approach.
* Fixed log pattern matchingChristian Mollekopf2017-12-28
|
* Print transaction spanChristian Mollekopf2017-11-21
|
* Storage debugging codeChristian Mollekopf2017-11-21
|
* Print key/value when put failsChristian Mollekopf2017-11-20
|
* Removed ResourceAccess::Private leak and resolved resulting memoryChristian Mollekopf2017-11-16
| | | | | | | | | corruption. It looks like the memory corruption (malloc started to crash) was coming QLocalSocket related signals. According to the docs it's not safe (whatever that means), to delete a QObject with pending signals, so we use deleteLater to schedule it's deletion. This resolved the crashes.
* Remove complete commands from the completeCommands hash againChristian Mollekopf2017-11-12
|
* Revert "Fixed warnings"Christian Mollekopf2017-11-12
| | | | | | Doesn't work with CATCH_ERRORS=ON This reverts commit 2bb2a10f5c4010d168b3d26e9937cf26365a0d0c.
* Fixed warningsChristian Mollekopf2017-11-10
|
* Revert "Fixed memoryleak"Christian Mollekopf2017-11-10
| | | | | | Fixing this introduces some crashes. I'll have to revisit this. This reverts commit 679f2d5d7d46b2f098e939883520b707f01b2a36.
* Fixed use after freeChristian Mollekopf2017-11-09
|
* Fixed memoryleakChristian Mollekopf2017-11-09
|
* Fixed memoryleakChristian Mollekopf2017-11-09
|
* Fixed warningChristian Mollekopf2017-11-03
|
* Ensure we get an appropriate exit code when a resource crashes.Christian Mollekopf2017-10-31
|
* Fixed parsing of larger headers.Christian Mollekopf2017-10-26
| | | | | | Just truncating the file is not a good idea. If the headers end up being larger (I just ran into that), then we just fail to parse the headers and miss important stuff like subjects. So let's not.
* Use LMDB_LIBRARIESChristian Mollekopf2017-10-20
|
* Debug outputChristian Mollekopf2017-10-10
|
* Ensure we copy all blobs when copying to another resourceChristian Mollekopf2017-10-09
|
* Error checking and debug outputChristian Mollekopf2017-10-09
|
* Optimized the incremental update case.Christian Mollekopf2017-10-08
| | | | | | | | | | | | This brings the incremental closer to a regular query (about 1.5 times as bad instead of 3.5 times). For a comparison look at MailQueryBenchmark::testIncremental() The optimization is built on the assumption that we i.e. get an update with 100 revisions, and thus the optimization applies to the case where we have multiple revisions within that batch that are part of the same reduction. In such a case we can avoid redoing the reduction lookup over and over.
* Fixed tests with secretstoreChristian Mollekopf2017-09-20
|