[Tickets #11187] Re: Add an undelete feature for Kronolith Events

bugs at horde.org bugs at horde.org
Fri Jun 1 15:56:35 UTC 2012


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/11187
------------------------------------------------------------------------------
  Ticket             | 11187
  Updated By         | Jan Schneider <jan at horde.org>
  Summary            | Add an undelete feature for Kronolith Events
  Queue              | Kronolith
  Version            | Git develop
  Type               | Enhancement
  State              | Feedback
  Priority           | 1. Low
  Milestone          |
  Patch              |
  Owners             |
------------------------------------------------------------------------------


Jan Schneider <jan at horde.org> (2012-06-01 17:56) wrote:

>>> Should undeleting be implemented driver-agnostic (through added
>>> details in the horde_histories delete action or through a specific
>>> undo table) or should it make use of backend specific features and
>>> only be implemented for certain backends?
>>
>> Good question. It would probably be easiest to implement on the
>> driver level, because it would only require adding a flag, and we
>> won't take the risk of losing any event information.
>> This could be tough or even impossible with some drivers though.
>> A driver-agnostic solution would make this work in all drivers,
>> though it still won't work if using a shared backend with different
>> clients. OTOH those other clients wouldn't recognize the custom
>> backend flag anyway, so this probably shouldn't count as an argument.
>> And we probably *do* want those events to disappear for other
>> clients, even if we allow undo.
>>
>> Since the reason for using a different backend than SQL might be to
>> not rely on an SQL server, those events shouldn't go into a separate
>> table. Pondering all arguments, I think storing them in the history
>> backend could be the best solution. This would also allow this to be
>> implemented easily for other applications too.
>>
>>> How should undelete deal with the sync-relevant history entries?
>>
>> For synchronization (or any other external client for that matter),
>> this would be a regular deletion. Undeleting would not be reversing
>> the deletion, but re-adding the deleted event.
>
> I've been thinking a while about this and I mostly agree.
>
> * Histories is a sufficient undelete store - we already track  
> deleting there for sync purposes and I could expand/modify the work  
> on remembering attributes on change. This allows a backend-agnostic  
> implementation.
> * We currently only have sql as a history backend but probably  
> indexed key stores or nosql dbs like couch or mongo could be added  
> if somebody needs/pays for this.
> * Undelete/Roll Back/Revive should probably be optional

I don't see a good reason why we should make this configurable. If the  
history backend is available, we should support undelete. Unless  
someone comes up with a really good reason to separate one from the  
other.

> * A deleted event should disappear from backend, reviving should add  
> a new version of the old data
> * We don't care about external clients. If horde is in the backend  
> chain, we will be able to save undelete data. Undeleting can only be  
> done through horde ui






More information about the bugs mailing list