{"sha":"d247267823034c5e656f74e91b50475aa54d3fa6","node_id":"C_kwDOAUUadNoAKGQyNDcyNjc4MjMwMzRjNWU2NTZmNzRlOTFiNTA0NzVhYTU0ZDNmYTY","commit":{"author":{"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","date":"2023-11-22T16:10:49Z"},"committer":{"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","date":"2023-11-27T22:30:32Z"},"message":"Fix Producer shard range ignoring the last shard\n\nWe define the shard range like this in objects\n> 'shard': fields.IntegerFields(nullable=True, minimum=0, maximum=4095),\n\nThe problem is that in code we handle it using range(0, 4095), but that\nrange does not include the final shard value of 4095.\n\nCloses-bug: #2044278\nChange-Id: I71b0b1b237b5d5f12209f431db19cda1b44a1112\n(cherry picked from commit 54d2d2cf187aec8d73bd7588dabdc4279ca8851b)","tree":{"sha":"fdf6b77c142d20299ba56f195cfdb70f62650072","url":"https://api.github.com/repos/openstack/designate/git/trees/fdf6b77c142d20299ba56f195cfdb70f62650072"},"url":"https://api.github.com/repos/openstack/designate/git/commits/d247267823034c5e656f74e91b50475aa54d3fa6","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/openstack/designate/commits/d247267823034c5e656f74e91b50475aa54d3fa6","html_url":"https://github.com/openstack/designate/commit/d247267823034c5e656f74e91b50475aa54d3fa6","comments_url":"https://api.github.com/repos/openstack/designate/commits/d247267823034c5e656f74e91b50475aa54d3fa6/comments","author":null,"committer":null,"parents":[{"sha":"4012425843529b02486c39421dc7593fe1803367","url":"https://api.github.com/repos/openstack/designate/commits/4012425843529b02486c39421dc7593fe1803367","html_url":"https://github.com/openstack/designate/commit/4012425843529b02486c39421dc7593fe1803367"}],"stats":{"total":21,"additions":17,"deletions":4},"files":[{"sha":"ada951dea48f984316a9cae0328183e7293b9c0b","filename":"designate/producer/service.py","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/openstack/designate/blob/d247267823034c5e656f74e91b50475aa54d3fa6/designate%2Fproducer%2Fservice.py","raw_url":"https://github.com/openstack/designate/raw/d247267823034c5e656f74e91b50475aa54d3fa6/designate%2Fproducer%2Fservice.py","contents_url":"https://api.github.com/repos/openstack/designate/contents/designate%2Fproducer%2Fservice.py?ref=d247267823034c5e656f74e91b50475aa54d3fa6","patch":"@@ -79,7 +79,7 @@ def start(self):\n \n         self._partitioner = coordination.Partitioner(\n             self.coordination.coordinator, self.service_name,\n-            self.coordination.coordination_id.encode(), range(0, 4095)\n+            self.coordination.coordination_id.encode(), range(0, 4096)\n         )\n \n         self._partitioner.start()"},{"sha":"cf2c18d96a4b022e64a05e238381db66a806f27a","filename":"designate/tests/test_producer/test_service.py","status":"modified","additions":16,"deletions":3,"changes":19,"blob_url":"https://github.com/openstack/designate/blob/d247267823034c5e656f74e91b50475aa54d3fa6/designate%2Ftests%2Ftest_producer%2Ftest_service.py","raw_url":"https://github.com/openstack/designate/raw/d247267823034c5e656f74e91b50475aa54d3fa6/designate%2Ftests%2Ftest_producer%2Ftest_service.py","contents_url":"https://api.github.com/repos/openstack/designate/contents/designate%2Ftests%2Ftest_producer%2Ftest_service.py?ref=d247267823034c5e656f74e91b50475aa54d3fa6","patch":"@@ -15,13 +15,26 @@\n # under the License.\n from oslo_log import log as logging\n \n+from designate import objects\n from designate.tests import TestCase\n \n+\n LOG = logging.getLogger(__name__)\n \n \n class ProducerServiceTest(TestCase):\n+    def setUp(self):\n+        super().setUp()\n+        self.producer_service = self.start_service('producer')\n+\n     def test_stop(self):\n-        # Test stopping the service\n-        service = self.start_service(\"producer\")\n-        service.stop()\n+        self.producer_service.stop()\n+\n+    def test_validate_partition_range(self):\n+        self.producer_service.start()\n+\n+        min_partition = objects.Zone.fields['shard'].min\n+        max_partition = objects.Zone.fields['shard'].max\n+\n+        self.assertIn(min_partition, self.producer_service.partition_range)\n+        self.assertIn(max_partition, self.producer_service.partition_range)"}]}