wiki:WeeklyMinutes20100520

Attendees

Shane
Likun
Jerry
Feng
Hankins
Michael
Fujiwara
Jelte
Jeremy
Larissa
Jinmei
Kambe
Shawn
Evan

Action Point Issues

Shane put up the ActionPoints page, but put no actions in it.

AP Shane to populate the ActionPoints page!

Change to Meeting Day

No problems with moving raised, preference was for Tuesday.

Starting next week (2010-05-25) weekly call will be on Tuesday.

Date of Next Face to Face Meeting

Will be 2010-08-30 to 2010-09-03 (2010-w35).

AP Shane to send e-mail confirming this date.

Issues for Next Release

Hotspot cache

Shane: Michael has no time.

Evan: Done with Boost ASIO thing now. How much time do you think it will take? I could take a wack at if you don't think it will take a huge amount of time.

Michael: I probably think it will take a couple days, but I think your write up of the recursive processing will take a couple months. :) It will take far longer than you think.

Shane: Can continue work on write-up after code freeze.

Evan: Michael and I will talk after this and see if we can get it done.

Jelte: It does not matter who does not finish it. :)


Select address/port to listen on

Evan: I was surprised it was assigned to me. I had thought it was cfgmgr stuff, which I have not touched yet, although it is probably time I got my feet wet at that. What I had done in the previous release was make it so you could select the port on the command line.

Jinmei: This is one from Jeremy, and he said it was important for the next release.

Jelte: I thought if this was configuration manager stuff that we needed the port rebinding daemon stuff.

Jinmei: My understanding was that for this release is that this should be something intermediate. But Jeremy can explain that probably...

Jeremy: IIRC just add a switch to the IP address or port to listen on.

Evan: You mean command line option?

Jeremy: Yeah, okay!

Jinmei: Why is this crucial?

Jeremy: Shane had to manually hack the code to listen on one of his interfaces.

Shane: That's right.

Michael: We actually can't do it with the wildcard address, since you need to send a UDP packet back from the proper interface.

Shane: It's a common, non-standard extension.

Michael: It is standard in IPv6, but not in IPv4 and not supported in Windows for example.

Shane: Eventually we need better management, but for now I really just need to set the IP address. So that's why it's only a 2 day task.

Jinmei: The implementation should be simple.

Shane: Yes, but the information isn't passed down through the various layers now. But it's not rocket science.

Shane: Is this more important than the hotspot cache?

Jinmei: I think this is a kind of optional feature.

Jelte: The cache is, you mean?

Jinmei: Ah yeah.

Shane: I tend to agree. Evan, can you do this before the hotspot caching stuff? A command line option to specify the IP address to listen on.

Jeremy: Can we also create a ticket to listen on different IPs to send answer on the correct IP?

Shane: I think it's a good idea, and we can put it in the backlog.

Architectural Discussions

zone manager will be designed as one daemon process, though it only serves for xfrin. Any better advice?

Shane: Michael had a suggestion about calling the process something to indicate that it is for managing secondaries.

Jelte: I think xfrin is a better name than "zone manager".

Michael: 'xfrin' handles the transfer in.

Likun: If xfrin process crash the zone manager keeps the zone timers. We don't need to start the timers, so separate the zone manager as a single process.

Shane: We can write it in a way to make it easy to write as multiple processes or multiple threads, right?

Likun: Right.

Michael: The reason I'm against threads is they add needless complication to the first cut. I would rather see it developed cleanly without threads. As long as we do it in a good model we're okay. No transfer needs to talk to another transfer.

Jinmei: Yeah but that also means the complexity wouldn't be so different with threads or processes.

Michael: You're right.

Jinmei: In that sense I don't have a strong opinion. I have some opinions. The first is that while I reviewed the xfrin code, I noticed that you would not be able to shutdown quickly even if we issued a shutdown command because xfrin handles the xfrin in blocking mode. So if one of the connection stalls it waits for timeout and cannot shutdown. If we use threads we need to introduce some communication from the boss to transaction thread. OTOH, if we use processes we can use signals.

Shane: Or just kill it.

Jelte: Be careful about killing an incoming transfer.

Jelte: I already have an open task about "alive" messages. Perhaps we should add a feature there to say "I am running, but shutting down, please don't kill me yet."

Jinmei: We will send a query for responding to NOTIFY... I'm not really sure which process or thread does that.

Shane: We were thinking that b10-auth would reply to a NOTIFY.

Jinmei: What about the SOA query?

Feng: The xfrin process would create the query.

Jinmei: The SOA query will be more frequent than the XFR transaction itself. I don't know if it matters, but in the context of processes versus threads, this affects the design decision.

Feng: For XFRIN the NOTIFY comes through auth... zone manager will send SOA query, this kind of logic. Based on this feedback the zone manager will tell the XFRIN.

Jinmei: Even without NOTIFY we have to check SOA.

Feng: Yes, there is a timer in the zone manager.

Jinmei: So the zone manager does the periodical SOA queries.

Feng: Yes, there are two scenarios to send SOA requests. 1) when we get a NOTIFY, 2) according to the refresh time.

Shane: In all cases the zone manager does the SOA check.

Jinmei: This is another point. Ideally I would make the zone manager free from transaction with external IP, so we don't have to worry about offending packets. I do not necessarily say this is bad.

Michael: I propose something slightly different, which is compatible with both our goals. Write a simple library function which does send a packet & get a packet, and make it very safe. I'm sure we'll have to send queries from other places.

Jinmei: That may be an option....

Michael: In BIND 9 we only put the dangerous parts in the dangerous parts... we don't want everyone writing their own packet processing.

Shane: It sounds like we don't have a model yet.

Michael: I think everyone has a model in their head.

Jinmei: I don't have a particular model in my mind, I just have issues about possible models. I am judging what these issues are.

Michael: My model is that notify is handled by the front end (authority server perhaps). The control channel is used to tell the zone manager, which then does the SOA query. If necessary, it then starts the transfer via the xfrin process - and maybe checks that it worked! Seems simplest and most logical separation of concerns.

Feng: I think we're going to use this model and modify the authsrv. We can get the serial from the NOTIFY query, which may include the SOA record. The auth server will check the current zone serial number and see if the SOA is later than the zone in the data source.

Michael: You have to do an SOA query regardless. I think the zone manager does the SOA query only. We should always send a message to the zone manager. We don't need to pass the SOA information - the spec says that you should not rely on this information because you have no reason to trust it. We could have the zone manager look at that and compress a set of updates into one...

Shane: We could also say we trust it if is TSIG...

Michael: It's a Paul Vixie "add something in the packet and then tell you not to use it".

Feng: In BIND 9 we can see the SOA in the answer section.

Shane: Sounds like we have a model, we just need to write that up.

Feng: I'll do that.

Likun: Ignore the SOA record in the NOTIFY?

Feng: Yes.

Feng: The list of masters will be in the cfgmgr?

Shane: Yes, we decided that last week when my bad ideas were corrected.

Michael: At the next code sprint it would be good to back up configuration externally. Having a way to back it up means you have a way to find it all...


Python logging framework?

Jerry: Discuss on mailing list.


Evan: I'm doing Boost ASIO to ASIO thing. It works fine until I do "test", one unit test needed Pthread. Are we supporting any platforms that will not have pthread?

Michael: Windows eventually.

Evan: Should I be adding something for this?

Shane: There's at least an automake rule for this....

Evan: Somewhere down in the guts of ASIO there is a constructor which requires pthread_mumble()

Jelte: This sounds familiar.

Evan: Just required for a session unit test.

Jeremy: Sounds like the issue I've had where I only needed pthread for test...

Jinmei: May be that boost version of python requires boost thread support implicitly. So if we use Boost python maybe we are hiding the problem...

Shane: Did your fix turn on pthread for everything.

Evan: No.

Shane: If it's the test not working, we can disable the test on a non-pthread system.

"Too Hard" topic: Multiple Auth Servers

Shane: Not sure about how to interact with config stuff.

Jelte: Not too much. Some could be for a group, but certainly some are for one specific one. So I'm not sure how to do that.

Shane: We at least need the way to have everything respond to a command in the same way.

Jelte: Can just get the first response and drop the other. What if you configure it and want to remove one, how will you tell that specific process to shutdown and not the other one. And maybe people think about having specific configurations for each one.

Shane: You mean like listening on different ports or something like that.

Jelte: Maybe an internal auth and an external auth.

Likun: Maybe the configure manager will talk with the parent process of the auth server. So make sub processes. So the father process send command to the sub processes.

Shane: I thought about having a "mini boss" but for some reason I liked the idea of having just the workers. But maybe that is more difficult.

Likun: At first one process listen on a port. Now you want to listen on another port. So the first will create a new sub-process.

Shane: I think I didn't like having to add process management logic to the auth server.

Jelte: Essentially you are reproducing the boss and moving it one level lower.


Jinmei: Is it also related to how to use multiple processors or multiple cores?

Shane: It's the same.

Shane: Ultimately for the best performance we may need to look at other techniques for multiprocessing, like Apple's co-routines, but I think it's a good starting point.

AOB

I'd like to see if anyone has opinion about open points of trac#49 (name::split). https://bind10.isc.org/ticket/49

The major points are:

  1. if we need to have both two (createAncestor and createSuffix) types of "split" or one is enough
  2. member function vs non member function, especially when we choose "only one" for the first point

Jinmei: We want to look at www.example.com and then example.com or com. What I implemented was I found that we might need 2 different versions of the convenience wrappers. One gets ancestor, the other suffix. These are very similar. Jelte pointed out that we only probably need just one. After thinking about it again I tend to agree with him. I'm going to kill one of them.

Jinmei: Original suggestion was to add a member function to the name class. But in the initial implementation I implemented as a public non-member function, but we could implement it as a member function. Difference in this case is very subtle. I could go either way.

Evan: This is the new name::split()? The original suggestion was to take 2 arguments instead of 1. It does not seem simpler to do that as a non-member function rather than have a split with a single argument.

Evan: What we suggested was that instead of createAncestor(), you have a version which takes "what is the first label you want" and runs to the end of the name.

Jinmei: I expect that you would say that! I have a particular reason why I did not do that. In this case I am also fine with that.

Evan: I will read the ticket and see what your reasoning is.

Jinmei: That would be helpful, but I will probably just use your suggestion. But read in case you are interested in that.

Last modified 8 years ago Last modified on May 20, 2010, 4:26:36 PM