[pbs-devel] [PATCH v3 pxar 06/58] encoder: move to stack based state tracking

Fabian Grünbichler f.gruenbichler at proxmox.com
Thu Apr 4 10:48:31 CEST 2024


On April 3, 2024 1:01 pm, Christian Ebner wrote:
> On 4/3/24 11:54, Fabian Grünbichler wrote:
>> 
>> should we still have some sort of checks here? e.g., when dropping an
>> encoder, how should self.finished and self.state look like? IIUC, then a
>> dropped encoder should have an empty state and be finished (i.e.,
>> `close()` has been called on it).
>> 
>> or is this simply not relevant anymore because we only create one and
>> then drop it at the end (but should we then have a similar mechanism for
>> EncoderState?)
> 
> The encoder should now be consumed with the `close` call, which takes 
> ownership of the encoder and drops it afterwards, so all the state 
> checks should happen there.
> 
> Previously, the encoder finish consumed the per-directory level encoder 
> object, passing possible errors up to the parent implementation, which 
> is not possible now since there is only one encoder instance. I did not 
> want to panic here as the checks should be done in the close now, so the 
> Drop implementation was removed.

but now the equivalent is the EncoderState (which is per directory).

> Not sure what to check in a Drop implementation the EncoderState. What 
> did you have in mind for that? Note that errors get propagated to the 
> parent state in the encoder finish calls now.

well, basically that it is finished itself? i.e., in `finish` set a
flag, and in the Drop handler check that it is set. right now this is
the only place we `pop` the state from the state stack anyway, so it
should be okay, but who knows what future refactors bring.




More information about the pbs-devel mailing list