diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ab95c4e2..d235af2c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.12.0" + ".": "3.12.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index c6161ca5..1f98b01a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://pypi.org/project/google-cloud-logging/#history +## [3.12.1](https://github.com/googleapis/python-logging/compare/v3.12.0...v3.12.1) (2025-04-21) + + +### Bug Fixes + +* Make logging handler close conditional to having the transport opened ([#990](https://github.com/googleapis/python-logging/issues/990)) ([66c6b91](https://github.com/googleapis/python-logging/commit/66c6b91725eb479a0af138a2be13f3c25f369d7e)) + ## [3.12.0](https://github.com/googleapis/python-logging/compare/v3.11.4...v3.12.0) (2025-04-10) diff --git a/google/cloud/logging/gapic_version.py b/google/cloud/logging/gapic_version.py index b5a6e376..14833215 100644 --- a/google/cloud/logging/gapic_version.py +++ b/google/cloud/logging/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "3.12.0" # {x-release-please-version} +__version__ = "3.12.1" # {x-release-please-version} diff --git a/google/cloud/logging_v2/gapic_version.py b/google/cloud/logging_v2/gapic_version.py index b5a6e376..14833215 100644 --- a/google/cloud/logging_v2/gapic_version.py +++ b/google/cloud/logging_v2/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "3.12.0" # {x-release-please-version} +__version__ = "3.12.1" # {x-release-please-version} diff --git a/google/cloud/logging_v2/handlers/handlers.py b/google/cloud/logging_v2/handlers/handlers.py index 364246d5..233d9eab 100644 --- a/google/cloud/logging_v2/handlers/handlers.py +++ b/google/cloud/logging_v2/handlers/handlers.py @@ -245,9 +245,10 @@ def flush(self): def close(self): """Closes the log handler and cleans up all Transport objects used.""" - self.transport.close() - self.transport = None - self._transport_open = False + if self._transport_open: + self.transport.close() + self.transport = None + self._transport_open = False def _format_and_parse_message(record, formatter_handler): diff --git a/samples/generated_samples/snippet_metadata_google.logging.v2.json b/samples/generated_samples/snippet_metadata_google.logging.v2.json index 3132ff27..7d77545a 100644 --- a/samples/generated_samples/snippet_metadata_google.logging.v2.json +++ b/samples/generated_samples/snippet_metadata_google.logging.v2.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-logging", - "version": "3.12.0" + "version": "3.12.1" }, "snippets": [ { diff --git a/tests/unit/handlers/test_handlers.py b/tests/unit/handlers/test_handlers.py index 2e948493..3f25929e 100644 --- a/tests/unit/handlers/test_handlers.py +++ b/tests/unit/handlers/test_handlers.py @@ -901,6 +901,10 @@ def test_close(self): self.assertFalse(handler._transport_open) self.assertTrue(old_transport.close_called) + # second call to close shouldn't throw an exception + handler.close() + self.assertFalse(handler._transport_open) + class TestFormatAndParseMessage(unittest.TestCase): def test_none(self):