| Summary: | [api] support repositories with push-model | ||
|---|---|---|---|
| Product: | z_Archived | Reporter: | Thomas Ehrnhoefer <thomas.ehrnhoefer> |
| Component: | Mylyn | Assignee: | Project Inbox <mylyn-triaged> |
| Status: | RESOLVED WONTFIX | QA Contact: | |
| Severity: | enhancement | ||
| Priority: | P1 | CC: | leo.dos.santos, robert.elves, shawn.minto, steffen.pingel |
| Version: | unspecified | Keywords: | plan |
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows 7 | ||
| Whiteboard: | |||
| Bug Depends on: | 291252, 363354 | ||
| Bug Blocks: | 281893 | ||
|
Description
Thomas Ehrnhoefer
Thanks for the request. Some discussion around this can be found on bug 291252. I agree that we should provide a synchronization API that supports a push-based approach. A key component that is currently missing is an entity that manages the state that needs to be synchronized with the repository. This state needs to be shared with the connector. This would enable a connector to notify the tasks framework of relevant changes. A related effort is supporting event-based APIs. More and more ALM tools provider an event feed that usually is a lot more lightweight than querying, but at the same time most of the time does not allow filtering. Connectors could poll those event streams more often than run queries, but as soon as an event occurs, most likely a query has to be run (to determine if the change affects any item in a query). This could lead to a potentially high number of queries when changes happen frequently, so some sort of delay has to happen. Also, some event streams contain changes (delta), some full task details, some just identifiers. Finding a proper API sounds challenging to support this, but given what I have seen in terms of performance in three different systems (one REST, one SOAP, one SDK), what they have in common is that the event feeds perform a lot better. What I have done in the past to support this is to have a constant polling (with a delay) of the event feed, do some brief parsing of the event to make sure it's important to the connector, then check with tasks are affected. And whether I have the task already or not, I always invoke all queries of that repository (some Events are scoped by project, so the queries to run can be limited a bit) to make sure I capture the change correctly. Closing as part of backlog cleanup. Please reopen if you are working on this. |