Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-1469

Util.abs function does not return correct absolute values for negative values

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.8.2.0
    • None

    Description

      Reported by Russell Melick. [edit1: I don't think this affects correctness of
      the places that use the abs utility since we just need it to return a
      consistent positive value, but we should fix this nonetheless]
      [edit 2: actually it affects correctness in places that depend on consistent
      values across the fix. e.g., the offset manager is determined based on
      abs(hash(consumer group)). So after an upgrade that can change]

           /**
            * Get the absolute value of the given number. If the number is
         Int.MinValue return 0.
            * This is different from java.lang.Math.abs or scala.math.abs in that
         they return Int.MinValue (!).
            */
           def abs(n: Int) = n & 0x7fffffff
      

      For negative integers, it does not return the absolute value. It does
      appear to do what the comment says for Int.MinValue though. For example,

         scala> -1 & 0x7fffffff
         res8: Int = 2147483647
      
         scala> -2 & 0x7fffffff
         res9: Int = 2147483646
      
         scala> -2147483647 & 0x7fffffff
         res11: Int = 1
      
         scala> -2147483648 & 0x7fffffff
         res12: Int = 0
      

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            jjkoshy Joel Jacob Koshy
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment