Custom Query (541 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (37 - 39 of 541)

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Ticket Resolution Summary Owner Reporter
#41 fixed Make statmgr multi-threaded so "check all rings" works somebody stefan
Description

Make statmgr multi-threaded so "check all rings" works even on busy Earthworm systems, and copystatus is no longer needed.

Paul says the transport API may not allow separate threads to check multiple rings at the same time, so this may not work.

#42 fixed add Carol Bryan's rsam and ssam to Contrib build paulf paulf
Description

The USGS wanted these recorded somewhere. They differ from the ones in the official distro in that they write the rsam and ssam to disk.

#43 fixed wave_severV fix for end of tank reads paulf paulf
Description

As reported on the EW List, I think there is a bug in wave_serverV code. I don't have my machine setup to access the current EW repository, and don't think I have the latest code (although I'm guessing the code section in question hasn't changed).

I think the source of the bug is a bad Offset pointer to ReadBlockData?() in LocateExactOffset?() for a FLAG_R search. It looks like it's possible to have LocatreRoughOffset?() return a record pointer to the end of the tank for a FLAG_R search. When the time for this record is prior to the search time, it's possible for that pointer to be passed directly into ReadBlockData?().

The problem lies just above the last call to ReadBlockData?() in LocateExactOffset?() in serve_trace.c. In the version of the code I have, it's ~ line 1023

A fix would be to wrap the current offset if it is >= the tanksize, before adjusting the temp offset.

Added code for the fix is highlighted in bold below (tagged with DK 20100311).

Like I said above, I don't have my machine configured to access the EW code repository, and I don't have the facilities to test the fix. Could anyone else test and integrate this fix?

-david

/************** CODE SNIPPET  ***********/
  else  /*  flag == FLAG_R */
  {
    long int tmp = off-rsz;

    if(tmp < 0)
      tmp+=tsz;

    if ( ReadBlockData(tfp, tmp, (long int) sizeof(TRACE2_HEADER),
                       (char*) &trace_h ) != R_DONE )
    {
      strncpy(szFileFunction,"ReadBlockData",sizeof(szFileFunction));
      szFileFunction[sizeof(szFileFunction)]= 0;
      iFileOffset     = tmp;
      iFileBlockSize  = sizeof(TRACE2_HEADER);
      szFileTankName  = t->tankName;   /* don't copy just point */
      goto ReadBlockDataFailed;
    }
    while (trace_h.starttime > reqt)  /* if reqt is to the left keep going */
    {
      off=tmp;
      tmp-=rsz;
      DFIP+=rsz;
      if(DFIP <= 0 || DFIP >= tsz)
      {
        logit("t","Failed DFIP comparison #3\n");
        goto OHCRAP;
      }

      /* for the left boundary, set off = 0 if off == tsz */
      if ( tmp < 0 )
        tmp += tsz;
     
      if ( ReadBlockData( tfp, tmp, (long int) sizeof(TRACE2_HEADER),
                          (char*) &trace_h ) != R_DONE )
      {
        strncpy(szFileFunction,"ReadBlockData",sizeof(szFileFunction));
        szFileFunction[sizeof(szFileFunction)]= 0;
        iFileOffset     = tmp;
        iFileBlockSize  = sizeof(TRACE2_HEADER);
        szFileTankName  = t->tankName;   /* don't copy just point */
        goto ReadBlockDataFailed;
      }
    }  /* End while(acct < reqt) */

    if(trace_h.endtime + GRACE_PERIOD >= reqt)
    {
      /* We've found our spot.  trace_h.starttime < reqt <= trace_h.endtime.
         Pack it up and go home */
      *acttp=trace_h.endtime;
      *offp=off;
    }
    else
    {
      /* There was some sort of a minor snaffu.  Throw it in reverse,
         but keep track of what we've got.
      */
      double tempEnd=trace_h.endtime;

      while (trace_h.endtime + GRACE_PERIOD < reqt)
        /* Use GRACE_PERIOD to account for sloppy timestamps */
      {
        /* Keep going backwards until we hit the wall, or get to a good time */
        /* LocateRoughOffset can return off = tsz, and if the rough-offset return
           was ahead of our target time, we could read off the end of the tank.
           DK 20100311 */
        if ( off >=tsz ) 
          off=0;
        tmp=off;
        off += rsz;
        DFIP -= rsz;
        if(DFIP <= 0 || DFIP >= tsz)
        {
          logit("t","Failed DFIP comparison #4\n");
          goto OHCRAP;
        }
        if ( off >=tsz )
          off=0;
        tempEnd=trace_h.endtime;
        if ( ReadBlockData( tfp, tmp, (long int) sizeof(TRACE2_HEADER),
                            (char*) &trace_h ) != R_DONE )
        {
          strncpy(szFileFunction,"ReadBlockData",sizeof(szFileFunction));
          szFileFunction[sizeof(szFileFunction)]= 0;
          iFileOffset     = tmp;
          iFileBlockSize  = sizeof(TRACE2_HEADER);
          szFileTankName  = t->tankName;   /* don't copy just point */
          goto ReadBlockDataFailed;
        }


/************** END CODE SNIPPET  ***********/

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Note: See TracQuery for help on using queries.