[ https://issues.apache.org/jira/browse/TS-4331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15328906#comment-15328906 ]
ASF GitHub Bot commented on TS-4331: ------------------------------------ Github user jpeach commented on a diff in the pull request: https://github.com/apache/trafficserver/pull/653#discussion_r66907457 --- Diff: iocore/hostdb/Makefile.am --- @@ -31,15 +31,58 @@ EXTRA_DIST = I_HostDB.h noinst_LIBRARIES = libinkhostdb.a libinkhostdb_a_SOURCES = \ + I_SplitDNS.h \ + I_SplitDNSProcessor.h \ HostDB.cc \ I_HostDB.h \ I_HostDBProcessor.h \ Inline.cc \ - MultiCache.cc \ + RefCountCache.cc \ P_HostDB.h \ P_HostDBProcessor.h \ - P_MultiCache.h + P_RefCountCache.h + +# TODO: collapse into a single?s --- End diff -- ``single?s`` ? > Hostdb consistency problems due to MultiCache > --------------------------------------------- > > Key: TS-4331 > URL: https://issues.apache.org/jira/browse/TS-4331 > Project: Traffic Server > Issue Type: Bug > Components: HostDB > Reporter: Thomas Jackson > Assignee: Thomas Jackson > Fix For: 7.0.0 > > > This ticket is for the correct long term fix to TS-4207 > pulled from a comment, which wraps up the issue > {quote} > Leif Hedstrom I have spent a decent amount of time on this while I was OOO on > vacation the last couple of weeks. It seems that the root cause of this issue > has always existed, and that the addition of always doing hostname storing > (https://github.com/apache/trafficserver/commit/0e703e1e) we are just causing > the issue to happen all the time. > To understand the issue I'll give a little background in how hostdb is > currently working. Basically hostdb is just a wrapper around this templated > struct called MultiCache. MultiCache is "multi" not because it is templated, > but because it has two types of storage (static-- blocks and dynamic-- > alloc). The static side of the cache can hold N HostDBInfo structs (the > results of DNS queries). The dynamic side is used to store the round robin > records and various strings associated with the record. The size of this > dynamic space is defined as (N x [estimated_heap_bytes_per_entry. The basic > problem we are running into is that we are putting too much preassure on the > dynamic heap-- such that the heap is getting re-used while people still have > references to items in that space. > So, I've actually been working on re-writing MultiCache to allocate the > entire required block at once (so we don't have this problem where the parent > exists but not the children), but I'm not certain if we want such a change to > go into the 6.x branch (I'm willing to discuss if we want). If we aren't > comfortable with such a large change I suggest just accounting for the > hostname size in the estimated_heap_bytes_per_entry as a stopgap solution. > The maximum allowable size is 253 (so 254 with null terminator), but we could > pick a smaller number (~120 or so seems to be more reasonable). Alternatively > you can increase the number of records in hostdb (and the size accordingly) > to increase the dynamic heap size. > TLDR; almost done with the long term solution, but I'm not sure if we want to > merge that into 6.x-- alternatively we can do a simple workaround in 6.x > (https://github.com/apache/trafficserver/pull/553) > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)