03-15-2019 14:09 PDT
- Propagate 'RetryError' in 'PublisherClient.publish'. (#7071)
- Protoc-generated serialization update.. (#7091)
- Add 'authentication_method' to 'PushConfig' (via synth). (#7512)
- Add protos as an artifact to library (#7205)
- Pub/sub: pass transport w/ custom channel to GAPIC API clients. (#7008)
- Updated client library documentation URLs. (#7307)
- Update copyright headers
- Fix broken docstring cross-reference links. (#7132)
- Docstring changes from updates to .proto files. (#7054)
- Pick up stub docstring fix in GAPIC generator. (#6978)
- Copy proto files alongside protoc versions.
12-17-2018 16:57 PST
- Initialize
StreamingPullFuture._cancelledas True. (#6901) - Import
iam.policyfromgoogle.api_core. (#6741)
- Document Python 2 deprecation (#6910)
- Emphasize that returned futures may differ from stdlib futures. (#6875)
- Add baseline for synth.metadata
- Update noxfile.
- blacken all gen'd libs (#6792)
- omit local deps (#6701)
- Run black at end of synth.py (#6698)
- Run Black on Generated libraries (#6666)
- Add templates for flake8, coveragerc, noxfile, and black. (#6642)
11-27-2018 13:32 PST
- Pick up fixes to GAPIC generator. (#6503)
- Override client classmethod factories inherited from GAPIC. (#6453)
- Fix imports for hand-written client docstring examples. (#6345)
- Fix path for patch of 'bidi' elements. (#6243)
- Move bidi to api-core. (#6211)
- Re-generate library using pubsub/synth.py (#6059)
- Re-generate library using pubsub/synth.py (#5978)
- Add 'expiration_policy' to subscriber client. (#6223)
- Bump minimum 'api_core' version for all GAPIC libs to 1.4.1. (#6391)
- Update IAM version in dependencies. (#6362)
- Bump minimum 'api_core' version to '1.4.1'. (#6134)
- Fix client_info bug, update docstrings. (#6418)
- Fix docstring reference to wrong future class. (#6382)
- Normalize use of support level badges. (#6159)
- Update subscriber example in README to current patterns. (#6194)
- Prep pubsub docs for repo split. (#6001)
- Fix race condition in recv()'s usage of self.call. (#5935)
- Re-generate the underlying library from protos. (#5953)
- Change 'BatchSettings.max_bytes' default. (#5899)
- Fix race condition where pending Ack IDs can be modified by another thread. (#5929)
- Nox: use inplace installs (#5865)
- Fix classmethod wrapping (#5826)
- Fix Sphinx rendering for publisher client. (#5822)
- Re-generate library, removing obsolete synth modifications. (#5825)
- Add test for testing invoking a wrapped class method on the class itself (#5828)
- Make get_initial_request more resilient to race conditions. (#5803)
- Make Publisher batch-related interfaces private (#5784)
- Pubsub: Make 'Message.publish_time' return datetime (#5633)
- Ensure SPM methods check that 'self._consumer' is not None before use. (#5758)
- PubSub: add geo-fencing support (#5769)
- Add 'Message.ack_id' property. (#5693)
- Recover streams during the gRPC error callback. (#5446)
- Use operational lock when checking for activity on streams. (#5445)
- Add additional error handling to unary RPCs (#5438)
- Add heartbeating to the streaming pull manager (#5413)
- Fix retrying of bidirectional RPCs and closing the streaming pull manager (#5412)
- Catch errors when re-retying send() or recv() in addition to open() (#5402)
- Send requests during streaming pull over a separate unary RPC (#5377)
- Initialize references to helper threads before starting them (#5374)
- Make leaser exit more quickly (#5373)
- Make re-open failures bubble to callbacks (#5372)
- Avoid overwriting 'module' of messages from shared modules. (#5364)
- Normalize overflow handling for max count and bytes (#5343)
- Restore the synchronous pull method (#5379)
- Promote subscribe_experimental() to subscribe(), remove old subscriber implementation. (#5274)
- Wire up scheduler argument for subscribe() (#5279)
- Add link to streaming pull behavior documentation (#5378)
- Fix example in subscribe's documentation (#5375)
- Add Test runs for Python 3.7 and remove 3.4 (#5295)
- Modify system tests to use prerelease versions of grpcio (#5304)
- Lower the flow control defaults. (#5248)
- A new implementation of the subscriber has been added. This is available as
SubscriberClient.subscribe_experimental. In the next release, this will be replace the currentsubscribemethod. If you use this, please report your findings to us on GitHub. (#5189, #5201, #5210, #5229, #5230, #5237, #5256)
- Remove psutil dependency. (#5248)
- Surface publish RPC errors back to the publish futures (#5124)
- Make the pausable response iterator aware of the RPC state to prevent deadlock (#5108)
- Properly handle graceful stop in request generator (#5097)
- Drop leased messages after flow_control.max_lease_duration has passed. (#5020)
- Fix mantain leases to not modack messages it just dropped (#5045)
- Avoid race condition in maintain_leases by copying leased_messages (#5035)
- Retry subscription stream on InternalServerError, Unknown, and GatewayTimeout (#5021)
- Use the rpc's status to determine when to exit the request generator thread (#5054)
- Fix missing iter on request stream (#5078)
- Nack messages when the subscriber callback errors (#5019)
- pubsub nox.py cleanup (#5056)
- Fix test that checks for retryable exceptions (#5034)
- Update dependency range for api-core to include v1.0.0 releases (#4944)
- Install local dependencies when running lint (#4936)
- Re-enable lint for tests, remove usage of pylint (#4921)
- Added support for streaming pull receipts. (#4878)
- Added the ability for subscriber to batch requests. (#4895)
- Added pending request backpressure for subscriber. (#4892)
- Raise
ValueErrorwhen a message is too large for a batch. (#4872) - Updated the default batch size to 10 MB. (#4857)
- Allow a custom
Eventtype in Pub / Sub futures. (#4643)
- Clarify that
modify_ack_deadlineresets the deadline. (#4822)
- Fix unit test for default
max_bytesvalue. (#4860)
- Moving lock factory used in publisher client to the Batch implementation (#4628).
- Use a UUID (rather than a sentinel object) on
Future(#4634). - Apply scopes to explicitly provided credentials if needed (#4594).
Fixes #4479. This feature comes as part of
google-api-core==0.1.3.
- Upgrading to
google-api-core==0.1.3which depends on the latestgrpcio==1.8.2(#4642). This fixes #4600. For details, see related gRPC bug and fix.
PyPI: https://pypi.org/project/google-cloud-pubsub/0.30.1/
- Dropping redundant
Policy._pauseddata member (#4568). - Removing redundant "active" check in policy (#4603).
- Adding a
Consumer.activeproperty (#4604). - Making it impossible to call
Policy.open()on an already opened policy (#4606). - Bug fix (#4575): Fix bug with async publish for batches. There
were two related bugs. The first: if a batch exceeds the
max_messagesfrom the batch settings, then thecommit()will fail. The second: when a "monitor" worker callscommit()aftermax_latencyseconds, a failure can occur if a new message is added to the batch during the commit. To fix, the following changes were implemented:- Adding a "STARTING" status for
Batch.commit()(#4614). This fixes the issue when the batch exceedsmax_messages. - Adding extra check in
Batch.will_acceptfor the number of messages (#4612). - Moving
will_accept()check out ofPublisherClient.batch()factory (#4613). - Checking
Batch.will_acceptin thread-safe way (#4616).
- Adding a "STARTING" status for
- Breaking API change: As part of #4613, changing
PublisherClient.batch()to no longer accept amessage(since thewill_acceptcheck needs to happen in a more concurrency friendly way). In addition, changing thecreateargument so that it means "create even if batch already exists" rather than "create if missing".
- Add more explicit documentation for
Message.attributes(#4601). - Make
Message.__repr__a bit prettier / more useful (#4602).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.30.0/
- Bug fix: Restore previous behavior of the subscription lease
maintenance worker. This was accidentally "stopped" in
0.29.3due to a change in implementation that went from anactiveboolean to an "inactive" /stoppedboolean, soTruebecameFalseand vice-versa (#4564).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.4/
- In subscription consumer thread: Making sure the request generator attached to an inactive bidirectional streaming pull is stopped before spawning a new request generator. This way we have a (fairly strong) guarantee that requests in the queue don't get sent into an inactive stream (#4503, #4554).
- Adding
pause/resumeto subscription consumer thread and using these methods during flow control. The previous implementation tried to close the subscription (which involved 3 worker threads and 10 executors in a thread pool) and then re-open a new subscription. But, this was not entirely possible to shut down correctly from within one of the worker threads. Instead, we only pause the worker (of the 3) that is pulling new responses from the bidirectional streaming pull (#4558). - Bug fix (#4516): Using
maxwhereminwas used by mistake to ensure the number of bytes tracked for subscription flow control remained non-negative (#4514). - Raising
TypeErrorifSubscriberClient.subscribereceives a non-callable callback (#4497). - Shutting down thread pool executor when closing a subscriber policy (#4522).
- Renaming
Policy.on_callback_requesttoPolicy.dispatch_callbackand making the behavior much less dynamic (#4511). - Make sure subscription consumer thread doesn't try to join itself when exiting in error (#4540).
- Upgrading
google-api-coredependency to latest revision (0.1.2) since we rely on the latest version of theconcurrent.futuresbackport to provide thethread_name_prefixargument for thread pool executor (#4521, #4559).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.3/
- Bug fix (#4463): Making a subscription consumer actually stop
running after encountering an exception (#4472, #4498). This bug
is the only reason for the
0.29.2release. - Thread Changes
- Added names to all threads created directly by Pub / Sub (#4474, #4476, #4480). Also removing spaces and colons from thread names (#4476).
- Logging changes
- Adding debug logs when lease management exits (#4484)
- Adding debug logs when
QueueCallbackThreadexits (#4494). Instances handle the processing of messages in a subscription (e.g. toack). - Using a named logger in
publisher.batch.thread(#4473) - Adding newlines before logging protobuf payloads (#4471)
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.2/
- Bug fix (#4234): Adding retries for connection
UNAVAILABLE. This bug made the Pub / Sub client mostly unusable for subscribers to topics that don't have a steady stream of messages. After ~2 minutes of inactivity, the gRPC connection would timeout and raiseUNAVAILABLElocally, i.e. not due to a response from the backend. (#4444) - Updating autogenerated packages (#4438)
- Fixing broken examples in quick start (#4398)
- Fixing broken example in README (#4402, h/t to @mehmetboraezer)
- Updating old/dead link to usage doc in README (#4406, h/t to @mehmetboraezer)
- Dropping dependency on
google-cloud-corein exchange forgoogle-api-core(#4438)
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.1/
- Honor
max_messagesalways (#4262) - Add futures for subscriptions (#4265)
- Set gRPC message options and keepalive (#4269)
- Added link to "Python Development Environment Setup Guide" in project README (#4187, h/t to @michaelawyu)
- Upgrading to
google-cloud-core >= 0.28.0and adding dependency ongoogle-api-core(#4221, #4280) - Deferring to
google-api-coreforgrpcioandgoogleapis-common-protosdependencies (#4096, #4098)