Skip to content
  1. Jul 11, 2014
    • Kevin Burke's avatar
      Line up elements in the left side · 8057217f
      Kevin Burke authored
      Now you can draw a straight vertical line and see that the logo image, the
      beginning breadcrumb, and the build history are all in a straight line.
      8057217f
    • Jesse Glick's avatar
      [JENKINS-22395] Taking advantage of BuildReference.clear (just introduced in... · b7ec8578
      Jesse Glick authored
      [JENKINS-22395] Taking advantage of BuildReference.clear (just introduced in b6226ad2) to simplify test by not requiring a custom build reference holder just to simulate GC.
      Confirmed that dropLinksAfterGC and dropLinksAfterGC2 both fail in the expected way (b1a.nextBuild == b2) after commenting out the call to createReference().clear() in dropLinks.
      (Also that they fail as expected in assertNotSame if the reference is not cleared at all.)
      2 tags
      b7ec8578
    • Kohsuke Kawaguchi's avatar
      [JENKINS-22395] more diagnostics · aa8e0b4f
      Kohsuke Kawaguchi authored
      Just in case the previous fix didn't address the root cause of ZD-11985 (and given the time it takes for changes like this to land in LTS), I'm adding additional diagnostics that let us track how previous/next builds are getting discovered
      aa8e0b4f
    • Kohsuke Kawaguchi's avatar
    • Kohsuke Kawaguchi's avatar
      Doc improvements · fe3575c1
      Kohsuke Kawaguchi authored
      fe3575c1
    • Kohsuke Kawaguchi's avatar
      [FIXED JENKINS-22395] redoing the fix in f1430a25 · b6226ad2
      Kohsuke Kawaguchi authored
      Based on the last few commits, I proved that the original fix in f1430a25
      doesn't really address the problem.
      
      That is, once b2 is deleted, and after sufficient garbage collection,
      we can make b2.previousBuild.get() be null, and then
      b2.getPreviousBuild().getNextBuild() ends up incorrectly returning b2.
      
      In this commit, I roll back that part of f1430a25, and then fix the
      problem differently.
      
      I started thinking that the main problem we are trying to fix here
      is that the deleted build object should be unreferenceable. That is,
      it should behave almost as if the object has already been GCed.
      The easiest way to do this is to clear a BuildReference object,
      since we always use the same BuildReference object for all inbound
      references.
      
      This change allows us to clear BuildReference. Code like
      b2.getPreviousBuild() will continue to try to update
      b1.nextBuildR to b2, but it will only end up wiping out the field,
      only to have b1.getNextBuild() recompute the correct value.
      
      This fix makes both test cases pass in LazyBuildMixInTest.
      b6226ad2
    • Kohsuke Kawaguchi's avatar
      [JENKINS-22395] correcting the control test · 7b1b50c8
      Kohsuke Kawaguchi authored
      As I step-executed the code, I discovered b2.getPreviousBuild() was getting invoked
      between BRHF.drop(b1) and b2.dropLinks() call, in PeepholePermalink.RunListenerImpl.onDeleted()
      because Run.delete() calls RunListener.fireDeleted(this).
      
      Thus in effect the sequence of the call order was as follows:
      
              assertEquals(1, BRHF.drop(b1));
              b2.getPreviousBuild(); // happens indirectly in PeepholePermalink
              b2.delete();
              FreeStyleBuild b1a = b2.getPreviousBuild();
      
      This defeats the purpose of the fix, because in this call sequence, by b2.dropLinks()
      as implemented before f1430a25 will correctly fix up b1a.nextBuildR to b3.
      
      For the test to work as intended, it is important that b2.previousBuildR.get()==null
      during dropLinks(). That is what causes b2.getPreviousBuild() in the next line to go
      load b1a, and sets up b1a.nextBuildR to b2, and trigger the assertion error.
      
      Added a code to remove all RunListeners. With this change, the test now fails without
      the fix in f1430a25.
      7b1b50c8
    • Kohsuke Kawaguchi's avatar
      [JENKINS-22395] · 53e95ee5
      Kohsuke Kawaguchi authored
      I'm not sure if I understand how the original fix in PR #1190 (f1430a25) addresses the problem.
      
      My understanding is of the problem is as follows:
      
        - someone deletes 'b2' but holds on to its reference (could be different threads)
        - someone calls b2.getPreviousBuild()
          - if b2.previousBuildR is null, then this triggers the loading of b1, and
            that process sets up a bi-di link via b1<->b2 via b1.nextBuildR <-> b2.previousBuildR
          - this makes b1.getNextBuild() incorrectly return b2
      
      Presumably f1430a25 addresses this somehow, but I think I can induce this situation in other ways,
      which is what dropLinksAfterGC2() does.
      
      In this test,
      
      initial state:
      
         b1 <-> b2 <-> b3
      
         we load everyone and connect them all up
      
      after deleting b2:
      
         b1 <--------> b3
          ^            ^
          +---- b2 ----+
      
        b1 and b3 points each other, and b2 still refers to each side
      
      after dropping b1:
      
                b2 --> b3
      
      now, here, when I do b2.getPreviousBuild(), it loads b1a and it sets b1a.nextBuildR to b2.
      
          b1a <-> b2 --> b3
      
      So I claim this is a proof that the fix is incomplete, even for the problem JENKINS-22395 has discovered.
      
      I don't think that the problem is for the dropLinks call to fail to patch up references.
      The problem is that b2.getPreviousBuild() forcing b1 to point to b2, because if b2 is deleted and assumed to be
      invalid, then no matter what bX this method will find you never want bX.nextBuildR to point to b2.
      53e95ee5
    • Kohsuke Kawaguchi's avatar
      update to #index must be synchronized · fb47f1d1
      Kohsuke Kawaguchi authored
      fb47f1d1
  2. Jul 10, 2014
    • Oliver Gondža's avatar
      Merge pull request #1314 from kevinburke/lighter · 2214e9ce
      Oliver Gondža authored
      Switch underline/non underline on sidebar
      2214e9ce
    • Daniel Beck's avatar
      Noting #1310, #1294, #1311 · 682ba570
      Daniel Beck authored
      682ba570
    • Kevin Burke's avatar
      Switch underline/non underline on sidebar · c438a5f2
      Kevin Burke authored
      The underline adds slightly too much visual weight to the links in question.
      This changes the links to not have an underline by default, while still adding
      the underline when the link is hovered.
      
      Normally accessibility requirements demand that you add an underline for all
      clickable text. However, in this case the positioning of the elements, their
      changed color, the presence of an icon next to the links, and the link hover
      effect combine to give these elements the appearance of clickability.
      c438a5f2
  3. Jul 09, 2014
  4. Jul 08, 2014
  5. Jul 07, 2014
  6. Jul 04, 2014
  7. Jul 01, 2014
  8. Jun 30, 2014
  9. Jun 29, 2014
Loading