Re: [ldm-users] question about primary and secondary data transfer

Here is a patch I made around version 6.11.1 and have maintained through 6.13.5. It addresses the same situation you described. When it is deduced that a product is from alternate feed, then unless the product is already pretty late, delay 0.5 seconds before processing it. This insures the primary wins out (esp. when primary and alternate have nearly identical delays). I've never seen any ill effects from this and also have used it for NOAAPORT feeds.

After making this patch, the total bandwidth was back to close to that of only using one source.

Three files are patched, the patches below are separated by "#######".

#######
--- src/protocol2/down6.c.prepatch      2016-10-06 14:54:17.000000000 -0500
+++ src/protocol2/down6.c       2016-11-23 14:50:02.785443000 -0600
@@ -332,6 +332,7 @@
         errCode = DOWN6_UNINITIALIZED;
     }
     else {
+        struct timeval tnow;
         prod_info *infop = argp->infop;

         if (_expectBlkdata) {
@@ -343,6 +344,7 @@
         }

         (void)set_timestamp(&_class->from);
+        tnow=_class->from;
         _class->from.tv_sec -= max_latency;
         dh_setInfo(_info, infop, _upName);

@@ -379,6 +381,12 @@
         else {
             pqe_index      idx;             /* product-queue index */

+            /* delay some if product not very old */
+            if (d_diff_timestamp(&tnow, &_info->arrival) < 6) {
+              struct timeval tv = {0,500000};
+              select(0,NULL,NULL,NULL,&tv);
+            }
+
             /*
              * Reserve space for the data-product in the product-queue.
              */
#######
--- src/protocol2/down6.h.prepatch      2016-10-06 14:54:17.000000000 -0500
+++ src/protocol2/down6.h       2016-11-23 14:50:02.794447499 -0600
@@ -6,6 +6,8 @@
 #include "ldm.h"  /* prod_class */
 #include "pq.h"

+#define DOWN6_PATCH_PRIALT /* has been patched for better pri/alt operation */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
#######
--- src/ldmd/ldmd.c.prepatch    2016-10-06 14:54:17.000000000 -0500
+++ src/ldmd/ldmd.c     2016-11-23 14:50:02.710405499 -0600
@@ -979,6 +979,14 @@
     log_notice("Starting Up (version: %s; built: %s %s)", PACKAGE_VERSION,
             __DATE__, __TIME__);

+#if defined(PQ_PATCH_BACKTIME)
+    log_notice("The patch to accomodate non-monotonic clock has been applied.\n");
+#endif
+#if defined(DOWN6_PATCH_PRIALT)
+    log_notice("The primary/alternate enhancement patch has been applied\n.");
+#endif
+
+
     /*
      * register exit handler
      */
#######


On 01/12/2018 01:43 PM, Greg Trotter wrote:

I have an LDM server that is connected to two upstreams – one is my NOAAPORT ingester on my local network, and one is a backup site at a remote location. I have both listed in my ldmd.conf, with the local server listed first, and the request patterns are identical.

Looking at the queue, it looks like all is well – the origin on all the products is from our local NOAAPORT ingest server. If I look at the network traffic on that server, however, I see a lot of data coming in from the remote server – almost as much as we are bringing in from the local server. I theorize that the downstream doesn’t see it locally, and requests it from the remote upstream, but by the time it arrives, it’s come in from the local upstream? I can’t find any other reason that we’d be having that much traffic from an upstream LDM that never appears as an origin for the products in our queue.

Is there something I am doing wrong? Clearly, I’d prefer not to use that much bandwidth if we don’t have to. Is there a way to have it only hit the remote upstream if the local is unavailable?

Here’s the relevant part of my ldmd.conf:

REQUEST ANY     ".*"    <IP of local noaaport ingester>

REQUEST ANY     ".*"    <IP of remote noaaport ingester>

*Greg Trotter*

System Administrator

Weather Decision Technologies, Inc

201 David L Boren Blvd Suite 270

Norman, Oklahoma 73072



_______________________________________________
NOTE: All exchanges posted to Unidata maintained email lists are
recorded in the Unidata inquiry tracking system and made publicly
available through the web.  Users who post to any of the lists we
maintain are reminded to remove any personal information that they
do not want to be made public.


ldm-users mailing list
ldm-users@xxxxxxxxxxxxxxxx
For list information or to unsubscribe,  visit: 
http://www.unidata.ucar.edu/mailing_lists/

  • 2018 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the ldm-users archives: