summaryrefslogtreecommitdiffstats
path: root/common/pipeline.cpp
Commit message (Collapse)AuthorAge
* Deal with not using the implicit internal transaction.Christian Mollekopf2016-11-24
|
* Avoid unnecessary transactions.Christian Mollekopf2016-11-22
|
* Make sure the storage exists from the very beginning of the first start.Christian Mollekopf2016-10-21
| | | | Changereplay and synchronizer rely on it.
* Removed the whole revision cleanup into the entitystoreChristian Mollekopf2016-10-21
|
* Fixed specialpurposeprocessorChristian Mollekopf2016-10-21
|
* Ported the pipeline to the entitystoreChristian Mollekopf2016-10-21
|
* Refactor how the storage is used.Christian Mollekopf2016-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the initial refactoring to improve how we deal with the storage. It does a couple of things: * Rename Sink::Storage to Sink::Storage::DataStore to free up the Sink::Storage namespace * Introduce a Sink::ResourceContext to have a single object that can be passed around containing everything that is necessary to operate on a resource. This is a lot better than the multiple separate parameters that we used to pass around all over the place, while still allowing for dependency injection for tests. * Tie storage access together using the new EntityStore that directly works with ApplicationDomainTypes. This gives us a central place where main storage, indexes and buffer adaptors are tied together, which will also give us a place to implement external indexes, such as a fulltextindex using xapian. * Use ApplicationDomainTypes as the default way to pass around entities. Instead of using various ways to pass around entities (buffers, buffer adaptors, ApplicationDomainTypes), only use a single way. The old approach was confusing, and was only done as: * optimization; really shouldn't be necessary and otherwise I'm sure we can find better ways to optimize ApplicationDomainType itself. * a way to account for entities that have multiple buffers, a concept that I no longer deem relevant. While this commit does the bulk of the work to get there, the following commits will refactor more stuff to get things back to normal.
* Ported to the kasync revampChristian Mollekopf2016-09-15
|
* Debug outputChristian Mollekopf2016-09-15
|
* Fixed new diagnostics errorsChristian Mollekopf2016-07-13
|
* A new debug system.Christian Mollekopf2016-07-07
| | | | | | | | | | | | | | | Instead of a single #define as debug area the new system allows for an identifier for each debug message with the structure component.area. The component is a dot separated identifier of the runtime component, such as the process or the plugin. The area is the code component, and can be as such defined at compiletime. The idea of this system is that it becomes possible to i.e. look at the output of all messages in the query subsystem of a specific resource (something that happens in the client process, but in the resource-specific subcomponent). The new macros are supposed to be less likely to clash with other names, hence the new names.
* Less memory leaking with unique_ptrChristian Mollekopf2016-07-07
|
* Fixed a bunch of memory leaks.Christian Mollekopf2016-07-06
| | | | Found with valgrind
* Properly track changes applied by preprocessorsChristian Mollekopf2016-06-30
| | | | | | This is necessary so we get the actual changeset during replay, so a mark-as-read action doesn't result in a new mime message, but only the flag change.
* Avoid unnecesary warningsChristian Mollekopf2016-06-26
|
* Commit also if we did revision cleanupChristian Mollekopf2016-06-26
|
* Workaround mdb_put failuresChristian Mollekopf2016-06-20
| | | | | | | I got failures during a sync during the initial mdb_put that stores the db name for verification on open (invalid parameter passed). It seems the verification step actually prevents the problem in the first place.
* Avoid unnecessary commitsChristian Mollekopf2016-06-20
|
* Made the log-level output a lot less noisyChristian Mollekopf2016-06-20
|
* Moved mailpreprocessors to a shared locationChristian Mollekopf2016-06-19
|
* Get folder moves to work, and fix the mime message moving.Christian Mollekopf2016-06-13
|
* Allow preprocessors to inject entities.Christian Mollekopf2016-06-10
| | | | | Currently only working when creating an entity, the new entity is always preprended in the store.
* A central place to generate uuid'sChristian Mollekopf2016-06-05
|
* Fixed pipelinetestChristian Mollekopf2016-06-03
|
* Track modified properties to detect necessary replay changesChristian Mollekopf2016-06-03
|
* Refactored the generic resource to use separate classes forChristian Mollekopf2016-05-28
| | | | | | | | changereplay and synchronization. This cleans up the API and avoids the excessive passing around of transactions. It also provides more flexibility in eventually using different synchronization strategies for different resources.
* Run preprocessors before persising the value.Christian Mollekopf2016-05-08
| | | | And allow preprocessors to modify the result.
* Fromatted the whole codebase with clang-format.Christian Mollekopf2016-03-03
| | | | clang-format -i */**{.cpp,.h}
* Prepared sort indexesChristian Mollekopf2016-02-16
|
* Gather more timingsChristian Mollekopf2016-02-10
|
* Introduced debug areas and prettified output.Christian Mollekopf2016-02-04
|
* Use pimplChristian Mollekopf2016-02-01
|
* Avoid unnecessary namespace usageChristian Mollekopf2016-02-01
|
* Centralized main database nameChristian Mollekopf2016-02-01
|
* CleanupChristian Mollekopf2016-02-01
|
* Fixed modificationsChristian Mollekopf2016-02-01
|
* Build without warningsChristian Mollekopf2016-01-31
|
* Renamed Akonadi2 to SinkChristian Mollekopf2016-01-20
| | | | (except for documentation).
* Added bufferutils.hChristian Mollekopf2016-01-19
|
* Mark commands with whether they need to be replayedChristian Mollekopf2015-12-29
| | | | | This way we don't have to try to figure out whether a change is coming from the source already.
* Use the contains function where we can.Christian Mollekopf2015-12-22
|
* Catch the case when we try to remove an entity that has already beenChristian Mollekopf2015-12-08
| | | | removed
* Pipeline: Ensure a created entity has a new id.Christian Mollekopf2015-12-01
| | | | | Since we can now inject entity ids we have to ensure they are not already existing.
* Pipeline: only emit a change if the revision actually changed.Christian Mollekopf2015-12-01
| | | | | We had quite a bunch of superfluous notifications before (i.e. during cleanup).
* Resolve remoteIds during syncChristian Mollekopf2015-12-01
| | | | | | | Remote id's need to be resolved while syncing any references. This is done by the synchronizer by consulting the rid to entity id mapping. If the referenced entity doesn't exist yet we create a local id anyways, that we then need to pick up once the actual entity arrives.
* Correctly execute modifications and removalsChristian Mollekopf2015-10-28
| | | | ... also if there are intermediate revisions.
* Reuse the existing transactionChristian Mollekopf2015-10-28
|
* Made pipeline preprocessing synchronous.Christian Mollekopf2015-10-28
| | | | | | | | | | | | | | | | Instead of having the asynchronous preprocessor concept with different pipelines for new/modify/delete we have a single pipeline with synchronous preprocessors that act upon new/modify/delete. This keeps the code simpler due to lack of asynchronity and keeps the new/modify/delete operations together (which at least for the indexing makes a lot of sense). Not supporting asynchronity is ok because the tasks done in preprocessing are not cpu intensive (if they were we had a problem since they are directly involved in the round-trip time), and the main cost comes from i/o, meaning we don't gain much by doing multithreading. Costly tasks (such as full-text indexing) should rather be implemented as post-processing, since that doesn't increase the round-trip time directly, and eventually consistent is typically good enough for that.
* CleanupChristian Mollekopf2015-10-21
|
* Cleanup revisions with a delayChristian Mollekopf2015-10-12
|