[metrics-bugs] #22141 [Metrics/metrics-lib]: Deprecate `DescriptorFile` and add relevant information to `Descriptor`

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon Jun 12 13:35:12 UTC 2017


#22141: Deprecate `DescriptorFile` and add relevant information to `Descriptor`
---------------------------------+-----------------------------------
 Reporter:  karsten              |          Owner:  metrics-team
     Type:  enhancement          |         Status:  needs_review
 Priority:  Medium               |      Milestone:  metrics-lib 1.9.0
Component:  Metrics/metrics-lib  |        Version:
 Severity:  Normal               |     Resolution:
 Keywords:                       |  Actual Points:
Parent ID:                       |         Points:
 Reviewer:                       |        Sponsor:
---------------------------------+-----------------------------------

Comment (by karsten):

 Replying to [comment:7 iwakeh]:
 > DescriptorReaderImpl became more readable.  Maybe use Files.walkFileTree
 and an extension of SimpleFileVisitor to simplify the code which currently
 is in "readDescriptorFiles"?

 Good idea!  If you don't mind, let us focus on the interface part for the
 moment, and I'll make this implementation change later on (before we
 merge).  Okay?

 > Regarding `Descriptor.getException`:  The use case here is to determine,
 if the Descriptor object is valid and decide whether to use it or drop it?
 > Then, why not add a `Descriptor.valid` method returning true or false?
 The detailed logging of exceptions could be configured if wanted in
 metrics-lib as an extra logging channel for parse exceptions (this code
 would need to be added still).

 Not quite.  The application already knows that it can't use an invalid
 descriptor, because it's not an `instanceof` whatever interface it
 expected.  It's just a `Descriptor`, but not, for example, a
 `RelayServerDescriptor`.  The application can check whether
 `getException()` returns something if it wants to log that or possibly
 even handle that exception somehow.  But it could as well ignore the
 descriptor of unknown/unexpected subinterface type.

 > About parsing "future or not" I have more questions than suggestions as
 it depends highly on the implementation.
 > What do you have in mind?
 > It would also introduce some overhead regarding the cancelling, how
 should that be handled?
 > How should a client deal with the Futures it receives?

 Hmm, to be honest, I don't really know.  Maybe we can postpone that
 discussion, even at the risk of having to wait for 3.0.0.

 > BTW DescriptorImpl: The `NoSuchAlgorithmException` should be escalated
 as runtime exceptions, b/c this is a problem with the jdk/jvm and
 shouldn't be hidden away.  I'd suggest using a private method for the two
 digest calls (please find a suggestion
 [https://gitweb.torproject.org/user/iwakeh/metrics-
 lib.git/commit/?h=task-22141&id=31a2f15bdc5933cc1f240cff107e01e0fce69a8d
 here]).

 Good idea.  As stated above, I'll do this as soon as we have an interface
 we like.

 I just had a related thought on #22196 which I'll post there in the next
 hour or so.  That thought might affect what we're doing here, so let's
 briefly switch over there and return here after that. :)

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


More information about the metrics-bugs mailing list