[tor-bugs] #29333 [Core Tor/Stem]: Use the bandwidth-file-spec.txt keywords as BandwidthFile attributes

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Feb 8 16:57:55 UTC 2019


#29333: Use the bandwidth-file-spec.txt keywords as BandwidthFile attributes
---------------------------+------------------------
 Reporter:  juga           |          Owner:  atagar
     Type:  defect         |         Status:  new
 Priority:  Medium         |      Milestone:
Component:  Core Tor/Stem  |        Version:
 Severity:  Normal         |     Resolution:
 Keywords:  tor-bwauth     |  Actual Points:
Parent ID:                 |         Points:
 Reviewer:                 |        Sponsor:
---------------------------+------------------------

Comment (by juga):

 Replying to [comment:6 atagar]:

 > Would you like it to? In our spec the timestamp is a weird exception
 made for backward compatibility with TorFlow. Personally I think we should
 change it to 'timestamp=<value>' with a note saying 'in bandwidth file
 version x the 'timetamp=' key MAY not be present, but MUST be present in
 future versions'. But clearly not a big whoop.
 >
 > BandwidthFiles have a separate 'timestamp' attribute but you're right
 that I don't include it in the 'header' dictionary.
 >

 While is an idea to have timestamp also as a key-value[*] at some point,
 it'd be not backward compatible with current Tor versions, so probably
 won't be changed any time soon.
 If the change would require that sbws creates bandwidth files with
 timestamp as key-value too, then we can't do this change yet.

 > > measurements attribute returns a dictionary, should it rather return a
 list? (the fingerprint is in node_id key)
 >
 > Structuring this as a dictionary gives more flexibility. Callers can
 process the measurements as a list...
 [...]
 > Modeling this as a list prevents us from doing the later in constant
 time. Other descriptor objects (such as the Consensus class) model its
 entries as a 'fingerprint => record' dictionary for this reason too.

 It's more logical a list according to the bandwidth file specification,
 but i agree that's a good reason and it's the one we use in sbws to also
 converted to dictionary in some parts of the code.
 So fine like dictionary.

 > > When using create (should it have an alias from_dict?):
 >
 > That's an interesting idea but there's actually two different methods:
 create() and content(). These are methods of our base Descriptor class...
 [...]

 Again thinking on my code/spec logic, not on existing descriptor code.
 It's fine then :)

 [...]
 > > should the headers be passed in a key header to be consistent with
 header attribute?
 >
 > I'd rather keep create() and content() as consistent with other
 descriptor types as I can. Timestamps and content are already weird
 unavoidable exceptions.

 Fair enough..
 >
 > > should content be named measurements to be consistent with
 measurements attribute?
 >
 > Their differing types would probably cause confusion. Measurements is a
 parsed dictionary whereas content are raw lines. Their types differ.

 ok.

 [*] The idea long term is to format bandwidth files as other descriptor
 documents (no key-values), so maybe take it into account if you need to
 change the parser.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29333#comment:7>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list