Release Note (v3.10.0
)
Release time: 2022-09-29 16:18:19
This release contains 10 new features, 9 bug fixes and 12 documentation improvements.
π Features
Enable jina ping
as readiness probe on local and Kubernetes (#5200)
This feature lets you check the readiness of an entire Flow or its individual components:
jina ping flow grpc://localhost:12345
jina ping executor localhost:12346
jina ping gateway grpc://localhost:12345
Successful output:
INFO JINA@28600 readiness check succeeded 1 times!!!
Unsuccessful output:
This command exits with code 1 when the readiness check is not successful.
Therefore, it is a good choice to use as a readiness probe for Executor and Gateway when
deployed in Kubernetes.
Add argument to specify exceptions that will exit the runtime (#5165)
You can specify which Exceptions should trigger termination of an affected Executor:
Flow().add(uses=MyExecutor, exit_on_exceptions: ['Exception', 'RuntimeException'])
This ensures an Executor is not stuck in an unusable but technically alive state, and that the Executor can be restarted.
This is especially useful when Executor restarts are automated through Kubernetes.
Retry mechanism for client.post
(#5176)
client.post()
accepts max_attempts
, initial_backoff
, max_backoff
and backoff_multiplier
parameters to control the capacity to retry requests, when a transient connectivity error occurs, using an exponential backoff strategy:
client.post(
on='/',
inputs=docs,
max_attempts=5,
initial_backoff=0.1,
max_backoff=0.5,
backoff_multiplier=1.5
)
Add monitoring of requests size everywhere (#5111)
The size of requests (jina_request_size_bytes
) is now monitored everywhere: On every Executor, every Gateway, and every sharding Head.
Consequently, this new metric can now be accessed via Prometheus and Grafana.
JSON logging for JCloud (#5201)
It is now possible to create logs in JSON format, instead of the standard line-by-line text output.
Sample output:
{"created": 1663930387.5850368, "filename": "data_request_handler.py", "funcName": "_load_executor", "levelname": "DEBUG", "lineno": 98, "module": "data_request_handler", "msg": "<jina.serve.executors.BaseExecutor object at 0x7fc1951f78d0> is successfully loaded!", "name": "WorkerRuntime", "pathname": "/home/foo/jina/serve/runtimes/request_handlers/data_request_handler.py", "process": 13386, "processName": "Pod", "thread": 140469860276032, "threadName": "MainThread"}
To enable this, set the environment variable 'JINA_LOG_CONFIG
to 'json'
.
Support list-like syntax to specify visible cuda devices (#5187)
You can now use device id's to specify visible CUDA devices that should be used in the round-robin GPU assignment:
`CUDA_VISIBLE_DEVICES=RR1,3`
This will assign CUDA devices 1 and 3 to the different Executor replicas in a round-robin fashion.
Make jina hub push
non-blocking (#5129)
jina hub push
is now a non-blocking operation, meaning that the user does not have to wait for the entire push to be completed on the server side.
While the push is being processed in the background, its status can be checked with the following command:
jina hub status [<path_to_executor_folder>] [--id TASK_ID] [--verbose] [--replay]
Warning messages in jina hub push
(#5156)
jina hub push
can now display helpful warning messages, such as deprecation warnings:
Add duration info in events (#5157)
Telemetry data now also includes the duration of every event that is reported.
π Bug Fixes
Fix compatibility with Protobuf Python backend (#5222)
This bug caused an exception when Python was used as a backend for Protobuf, rather than cpp or udp.
With this fix, Python can also be used as a backend for Protobuf.
Move significant params to sequential (#5205)
This bug (occasionally) caused docker.errors.NullResource: Resource ID was not provided
when pulling from Jina Hub.
This was due to a faulty local caching implementation, which is now fixed.
Fix missing secret when logged-in user with --force-update (#5180)
This bug caused a failure for logged in users when force pushing to Jina Hub: Their secret would not be passed. This is now fixed and force push works as expected.
Use default gRPC parameters for gRPC connection pool connection (#5211)
We brought our gRPC client in line with the recommended configuration at https://github.com/grpc/grpc/blob/master/doc/keepalive.md
Bump DocArray version for new column syntax (#5171)
Some changes to the column syntax in DocArray required a version bump.
Increase minimum Protobuf version (#5166)
Some changes in the Protobuf library required a version bump.
Remove leftover prints (#5199)
Some unwanted print statements had sneaked their way into our codebase, and we kicked them right back out!
π Documentation Improvements
- Change setenv into environ (#5223)
- Mention prefetch (#5220)
- Fix install instructions docker (#5213)
- Fix grammar, wording, punctuation (#5209)
- Fix grammar, punctuation (#5208)
- Clarify exec endpoint usage in http (#5202)
- Document grpc client limitation (#5193)
- Update faq and lifetime (#5191)
- Improve warning about config file in custom docker (#5190)
- Clarify return behavior in parameters (#5179)
- Add section for exit_on_exceptions argument (#5172)
- Labels in flow yaml (#5164)
π€ Contributors
We would like to thank all contributors to this release:
- AlaeddineAbdessalem (@alaeddine-13)
- Girish Chandrashekar (@girishc13)
- Andrei Ungureanu (@Andrei997)
- Michael GΓΌnther (@guenthermi)
- Deepankar Mahapatro (@deepankarm)
- Han Xiao (@hanxiao)
- zhangkai (@floralatin)
- Joan Fontanals (@JoanFM)
- Alex Cureton-Griffiths (@alexcg1)
- Yanlong Wang (@nomagick)
- Nikolas Pitsillos (@npitsillos)
- samsja (@samsja)