Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | Fixed and tested the upgrade from a database without version. | Christian Mollekopf | 2018-02-28 |
| | |||
* | Made the sync request struct public. | Christian Mollekopf | 2018-02-27 |
| | | | | Differential Revision: https://phabricator.kde.org/D6961 | ||
* | Properly deal with filtered entities in reduced queries. | Christian Mollekopf | 2018-02-22 |
| | | | | Filtered entities would still end up in the entities list before. | ||
* | Some helper functions to avoid hardcoding collected property names | Christian Mollekopf | 2018-02-22 |
| | |||
* | We can't assess property changes for aggregates. | Christian Mollekopf | 2018-02-22 |
| | |||
* | Handle the removal of the last item cleanly | Christian Mollekopf | 2018-02-22 |
| | |||
* | Removed unused parameter | Christian Mollekopf | 2018-02-22 |
| | |||
* | Aggregation only becomes relevant when >1 | Christian Mollekopf | 2018-02-22 |
| | |||
* | Deal with removals in reduced queries | Christian Mollekopf | 2018-02-22 |
| | |||
* | Print aggregate ids | Christian Mollekopf | 2018-02-21 |
| | |||
* | Fixed modifications | Christian Mollekopf | 2018-02-21 |
| | |||
* | Apply modifications to aggregate values | Christian Mollekopf | 2018-02-21 |
| | |||
* | Remember aggregated ids | Christian Mollekopf | 2018-02-21 |
| | |||
* | Support reductions in the list command | Christian Mollekopf | 2018-02-21 |
| | |||
* | Catch xapian exceptions | Christian Mollekopf | 2018-02-21 |
| | |||
* | If we have no store available, we also have no upgrade to execute. | Christian Mollekopf | 2018-02-19 |
| | |||
* | Fixed crashes due to concurrently running queries. | Christian Mollekopf | 2018-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 matching | Christian Mollekopf | 2018-02-13 |
| | |||
* | Improved debug messages | Christian Mollekopf | 2018-02-13 |
| | |||
* | Fixed date parsing | Christian Mollekopf | 2018-02-13 |
| | |||
* | Xapian based fulltext indexing | Christian Mollekopf | 2018-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 Mollekopf | 2018-02-11 |
| | |||
* | Support storage downgrading as well | Christian Mollekopf | 2018-02-11 |
| | |||
* | Fixed warning | Christian Mollekopf | 2018-02-07 |
| | |||
* | Removed all traces of BLOB properties | Christian Mollekopf | 2018-02-06 |
| | |||
* | Store all BLOB properties inline. | Christian Mollekopf | 2018-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 span | Christian Mollekopf | 2018-01-30 |
| | |||
* | Less hardcoded numbers | Christian Mollekopf | 2018-01-30 |
| | |||
* | One central place to generate uids | Christian Mollekopf | 2018-01-30 |
| | |||
* | Include synchronization store in diskUsage calculation | Christian Mollekopf | 2018-01-30 |
| | |||
* | Support for storage upgrades | Christian Mollekopf | 2018-01-30 |
| | |||
* | Implemented removePrefix | Christian Mollekopf | 2018-01-23 |
| | |||
* | The local variable might be gone already when the thread starts. | Christian Mollekopf | 2018-01-08 |
| | |||
* | We need all parents available, not only one | Christian Mollekopf | 2018-01-03 |
| | |||
* | Use read-write locks for finer grained control to sDbi and sEnvironments | Christian Mollekopf | 2018-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 is | Christian Mollekopf | 2018-01-03 |
| | | | | enough. | ||
* | Avoid emitting signals for children without parents | Christian Mollekopf | 2018-01-03 |
| | |||
* | Trying to open a db that doesn't exist in read-only mode is not an error | Christian Mollekopf | 2018-01-03 |
| | |||
* | Removed broken tests | Christian Mollekopf | 2018-01-03 |
| | |||
* | Removed unused synclistresult | Christian Mollekopf | 2018-01-02 |
| | |||
* | No parent query | Christian Mollekopf | 2018-01-02 |
| | |||
* | Change the default for fullPayloadAvailable | Christian Mollekopf | 2017-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 entity | Christian Mollekopf | 2017-12-29 |
| | |||
* | Fixed incremental updates in folder queries | Christian Mollekopf | 2017-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 matching | Christian Mollekopf | 2017-12-28 |
| | |||
* | Print transaction span | Christian Mollekopf | 2017-11-21 |
| | |||
* | Storage debugging code | Christian Mollekopf | 2017-11-21 |
| | |||
* | Print key/value when put fails | Christian Mollekopf | 2017-11-20 |
| | |||
* | Removed ResourceAccess::Private leak and resolved resulting memory | Christian Mollekopf | 2017-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 again | Christian Mollekopf | 2017-11-12 |
| |