Update mix non-major dependencies #51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/mix-minor-patch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
~> 0.2.9->~> 0.3.01.4.2->1.8.03.1.0->3.3.21.0.7->1.2.11.0.7->1.0.161.7.5->1.7.130.8.0->0.8.83.11.3->3.13.2~> 0.8->~> 0.10~> 0.18.0->~> 0.20.00.36.1->0.38.0~> 0.24->~> 0.26v2.1.4->v2.2.01.4.3->1.4.42.17.9->2.20.10.3.0->0.3.11.7.12->1.8.14.5.1->4.6.54.1.1->4.3.00.8.3->0.8.71.5.3->1.6.10.20.14->0.20.170.18.0->0.21.10.5.1->0.5.15~> 0.33.0->~> 0.37.01.16.3->1.19.8~> 0.2.0->~> 0.4.01.0.0->1.1.01.1.0->1.3.00.4.7->0.4.9~> 1.11.0->~> 1.15.0Release Notes
pow-auth/assent (assent)
v0.3.1Compare Source
Bug fixes
Assent.JWTAdapter.AssentJWTfixed padding issue with ECDSA that caused invalid signaturesv0.3.0Compare Source
This release consists of breaking changes.
Userinfo is now cast to the correct type per https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.5.1. When upgrading you must ensure that you do not depend on a specific type in the returned userinfo for any of the strategies listed below.
Breaking changes
Assent.Strategy.Auth0.authorize_url/2no longer accepts:domainconfig, use:base_urlinsteadAssent.Strategy.Basecamp.callback/2now encodessubas abinary()instead of aninteger()Assent.Strategy.Github.callback/2now encodessubas abinary()instead of aninteger()Assent.Strategy.Googlenow encodesemail_verifiedas aboolean()instead of abinary()Assent.Strategy.Googlenow returnhdinstead ofgoogle_hdAssent.Strategy.Strava.callback/2now encodessubas abinary()instead of aninteger()Assent.Strategy.Telegram.callback/2now encodessubas abinary()instead of aninteger()Assent.Strategy.Twitter.callback/2now encodessubas abinary()instead of aninteger()Assent.Strategy.VK.callback/2now encodessubas abinary()instead of aninteger():siteconfiguration option removed, use:base_urlinsteadAssent.Strategy.OAuth2.authorize_url/2no longer allows:statein:authorization_paramsAssent.Strategy.decode_response/2removed, useAssent.HTTPAdapter.decode_response/2insteadAssent.Strategy.request/5removed, useAssent.Strategy.http_request/5insteadAssent.Strategy.prune/1removedAssent.MissingParamErrorno longer accepts:expected_key, use:keyinsteadAssent.HTTPAdapter.MintremovedAssent.ConfigremovedChanges
Assent.Strategy.Auth0now uses OIDC instead of OAuth 2.0 base strategyAssent.Strategy.Gitlabnow uses OIDC instead of OAuth 2.0 base strategyAssent.Strategy.Googlenow uses OIDC instead of OAuth 2.0 base strategyAssent.Strategy.normalize_userinfo/2now casts the user claims per OpenID specificationv0.2.13Compare Source
Assent.Strategy.Auth0deprecated:domainconfig option in favor of:base_url#177v0.2.12Compare Source
Assentnow has a module doc #176v0.2.11Compare Source
JSONinstead ofJasonfor JSON parsing on Elixir 1.18 #161Assent.Strategy.OAuth2now supports:stateconfig option #162Assent.Strategy.OAuth2:stateoverride in:authorization_parmshas been deprecated #162Assent.Strategy.OIDCnow supportsnoneauthentication method #163 (thanks @tommasop)Assent.Strategy.Bitbucketadded #160 (thanks @djgoku)Assent.Strategy.Twitchadded #159 (thanks @s0er3n)Assent.Strategy.Telegramadded #152 (thanks @vheathen)Assent.Strategy.Zitadeladded #154 (thanks @tommasop)Assent.Strategy.Facebook.fetch_user/2fixed bug with user not being decoded #168 (thanks @JohnDoneth)Assent.Strategy.OAuth2now supports PKCE #164 (thanks @tommasop)Assent.Strategy.OAuth2.Base.authorize_url/2incomplete typespec fixed #166 (thanks @diogomrts)Assent.Strategy.decode_response/2deprecated accepting result tuples and now acceptsAssent.HTTPAdapter.HTTPResponsestructs #172Assent.Strategy.request/5deprecated in favor ofAssent.Strategy.http_request/5#175Assent.Strategy.decode_response/2deprecated in favor ofAssent.HTTPAdapter.decode_response/2#175Assent.Config.get/3deprecated in favor ofKeyword.get/3#175Assent.Config.put/3deprecated in favor ofKeyword.put/3#175Assent.Config.merge/2deprecated in favor ofKeyword.merge/2#175Assent.Config.t()type deprecated in favor ofKeyword.t()type #175Assent.Config.fetch/2deprecated in favor ofAssent.fetch_config/2#175mtrudel/bandit (bandit)
v1.8.0Compare Source
Enhancements
content-lengthheader when callingsend_chunked/3,the response is streamed via content-length delimited framing and not chunked (#510)
v1.7.0Compare Source
Enhancements
get_sock_data/1andget_ssl_data/1callbacks from Plug 1.18 (#497)Connection: closeheaders (#495, thanks @ruslandoga!)Fixes
v1.6.11Compare Source
Changes
sent (#482)
cookiesheader with an empty string if no cookies weresent in HTTP/2 (#483)
v1.6.10Compare Source
Fixes
Enhancements
v1.6.9Compare Source
Fixes
thanks @thiagopromano!)
v1.6.8Compare Source
Fixes
Enhancements
statusto the telemetry metadata emitted on WebSocket upgrades (#466)v1.6.7Compare Source
Changes
v1.6.6Compare Source
Fixes
log_client_closuresconfig flagconnection: closewhen closing connection on error per RFC9112§9.6Enhancements
v1.6.5Compare Source
Fixes
Enhancements
v1.6.4Compare Source
Fixes
v1.6.3Compare Source
Fixes
v1.6.2Compare Source
Enhancements
plugandwebsockto logging metadata whenever possible (#448)plugandwebsockto telemetry metadata whenever possible (#447)Fixes
Changes
v1.6.1Compare Source
Changes
sent (#482)
cookiesheader with an empty string if no cookies weresent in HTTP/2 (#483)
v1.6.0Compare Source
Enhancements
thanks @alisinabh!)
log_client_closureshttp option, defaulting to false (#397, thanks @goncalotomas!)Fixes
Changes
v1.5.7Compare Source
Changes
408 Request Timeoutbeing returned to the client by way of aBandit.HTTPErrorbeing raised. Previously, a
:moretuple was returned (#385, thanks@martosaur!)
v1.5.6Compare Source
Fixes
a body which isn't read by the Plug (#387, thanks @fekle!)
v1.5.5Compare Source
Changes
domain: [:bandit]to the metadata of all logger callslog_protocol_errorsumbrellav1.5.4Compare Source
Changes
protocol errors (thanks @hunterboerner!)
v1.5.3Compare Source
Changes
:shortand:verboseoptions tolog_protocol_errorsconfigurationoption. Change default value to
:short, which will log protocolerrors as a single summary line instead of a full stack trace
Bandit.HTTPErrorerrors when attempting to write to a closed clientconnection (except for chunk/2 calls, which now return
{:error, reason}).Unless otherwise caught by the user, these errors will bubble out past the
configured plug and terminate the plug process. This closely mimics the
behaviour of Cowboy in this regard (#359)
@meeq!)
Fixes
preamble
v1.5.2Compare Source
Fixes
@ryanwinchester, @chrismccord!)
v1.5.1Compare Source
Enhancements
between keepalive requests (#349)
v1.5.0Compare Source
Enhancements
Plug.Exceptionwhendetermining which status code to return to the client (if the plug did not
already send one). Previously they were always returned as 500 (for HTTP/1)
or an 'internal error' stream error (for HTTP/2)
code (as determined by
Plug.Exception.status/1) is contained within the newlog_exceptions_with_status_codesconfiguration option (defaulting to500..599)abnormally in the case of plug-generated exceptions
Changes
client using their proper status code instead of as a 'protocol error' stream
error
riverrun/bcrypt_elixir (bcrypt_elixir)
v3.3.2Compare Source
v3.3.1Compare Source
v3.3.0Compare Source
v3.2.1Compare Source
v3.2.0Compare Source
dashbitco/broadway (broadway)
v1.2.1Compare Source
setupcallback on Broadway startupv1.2.0Compare Source
v1.1.0Compare Source
Bug fix
:accumulatewhen draining, for compatibility with GenStage v1.2+. This means that any polling implementation must implement theprepare_for_drainingcallback and stop polling messages. You can check how BroadwaySQS tackles this problem as an exampleEnhancements
elixir-mint/castore (castore)
v1.0.16Compare Source
v1.0.15Compare Source
v1.0.14Compare Source
v1.0.13Compare Source
v1.0.12Compare Source
v1.0.11Compare Source
v1.0.10Compare Source
v1.0.9Compare Source
v1.0.8Compare Source
rrrene/credo (credo)
v1.7.13Compare Source
Credo.Check.Refactor.ABCSizefixed false positivev1.7.12Compare Source
:columnon all checksCredo.Check.Refactor.DoubleBooleanNegationfixed false positiveCredo.Check.Readability.NestedFunctionCallsfixed false positiveCredo.Check.Consistency.UnusedVariableNamesfixed duplicate issuesv1.7.11Compare Source
:exit_statusand:categorytoformat_issue/2when usingCredo.CheckCredo.Check.Readability.ModuleDocfixed false positiveCredo.Check.Warning.UnusedEnumOperationfixed false positiveCredo.Check.Refactor.ABCSizefixed false positive for tuples and underscored matches (_foo)v1.7.10Compare Source
v1.7.9Compare Source
Credo.Check.Refactor.ABCSizefixed false positive for pin operator (^)Credo.Check.Readability.FunctionNamesfixed false positive for pow operator (**)Credo.Code.Parameterswhen couting parameters for functions with guardsv1.7.8Compare Source
Credo.Check.Refactor.Applyfixed false positiveCredo.Check.Warning.IoInspectfixed false positiveCredo.Check.Warning.UnsafeToAtomfixed false positiveCredo.Check.Readability.FunctionNamesfixed false positivev1.7.7Compare Source
Credo.Check.Design.SkipTestWithoutComment,Credo.Check.Refactor.PassAsyncInTestCasesandCredo.Check.Warning.WrongTestFileExtensionnow work for umbrella appsv1.7.6Compare Source
Credo.Check.Consistency.MultiAliasImportRequireUsefixed false positiveCredo.Check.Readability.PredicateFunctionNamesnow ignores functions that implement a behaviourCredo.Check.Readability.FunctionNamenow supports multi-letter sigilsCredo.Check.Readability.Specsfixed false positiveCredo.Check.Warning.UnusedKeywordOperationfixed false positivecolumninformation on several checks in case there are two offending calls on the same lineelixir-ecto/ecto_sql (ecto_sql)
v3.13.2Compare Source
Enhancements
Ecto.Adapters.SQL.Sandbox.allow/4callsON DELETE SET DEFAULTBug fixes
v3.13.1Compare Source
Bug fixes
v3.13.0Compare Source
Enhancements
:log_stacktrace_mfafor filtering or modifying stacktrace-derived info in query logs:prepareper operationjson_extract_pathv3.12.1Compare Source
Enhancements
:pool_countoptionv3.12.0Compare Source
Enhancements
Ecto.Migration.remove_if_exists/1.ex:durationtype:planexplain option for Postgres%Tds.Parameterstructs as params for named parameter usage inqueryBug fix
phoenixframework/esbuild (esbuild)
v0.10.0Compare Source
correct
PATHseparator. For example:v0.9.0Compare Source
This release requires Elixir v1.14+ and Erlang/OTP 25+.
esbuildversionsesbuildto version 0.25.0CAStorein favor of using Erlang certificatesv0.8.2Compare Source
sneako/finch (finch)
v0.20.0Compare Source
Enhancements
:supported_groupsto list of TLS options #307:defaultpool in documentation #314nimble_optionsto document deprecations #315Bug Fixes
Other
v0.19.0Compare Source
Enhancements
Bug Fixes
philss/floki (floki)
v0.38.0Compare Source
Added
This version adds initial support for the
:haspseudo-selector.It is a great addition that enables finding elements containing
matching children.
Examples for selectors:
"div:has(h1)""div:has(h1, p, span)""div:has(p.foo)""div:has(img[src='https://example.com'])""tr:has(*:fl-contains('TEST'))"Note that combinators like
">"are not allowed yet.Thank you @bvobart for this feature!
Fixed
Add
:styleoption documentation toFloki.text/2.Thanks @s3cur3 for the fix.
Fix deprecation warnings for upcoming Elixir 1.19.
Prevent from crashing when selector is an empty string.
Removed
Remove support for Elixir 1.14 and OTP 23.
Remove deprecated functions and function clauses
that were accepting strings (binaries).
Affected functions:
parse/1- removed functionmap/2- removed functionattr/4- removed clausefind/2- removed clausetext/3- removed clausetext/3- removed clauseattribute/2- removed clausefilter_out/2- removed clauseHTML must be parsed before searching. Functions like
Floki.find/2,Floki.attribute/2, and other HTML manipulation functions no longer workdirectly with HTML strings. The HTML must be parsed first using
Floki.parse_fragment/2orFloki.parse_document/2.Before:
After:
v0.37.1Compare Source
Fixed
This is a fix to be compatible with the upcoming OTP 28.
v0.37.0Compare Source
Added
Floki.css_escape/1- thanks @SteffenDE.Fixed
raw_html/2- thanks @andyleclair.Removed
v0.36.3Compare Source
This release contains some performance improvements, thanks to @ypconstante.
Fixed
Stop
Floki.get_by_id/2traversal on first match. Thanks @ypconstante.Remove extra whitespaces from nodes without attributes on
Floki.raw_html/1.Thank you @ypconstante.
Fix
Floki.raw_html/1typespecs. Thanks @davydog187.v0.36.2Compare Source
Added
Inspectprotocol for theFloki.HTMLTreestruct.This struct is currently private. Thank you @vittoriabitton.
Fixed
Fix regression to respect config option
:encodeinFloki.raw_html/2.Thanks @Sgoettschkes.
Make the
Floki.raw_html/2treat the contents of the<title>tag as plain text.The idea is to align with
parse_document/2.Thank you @aymanosman.
elixir-gettext/gettext (gettext)
v0.26.2Compare Source
v0.26.1Compare Source
v0.26.0Compare Source
v0.25.0Compare Source
tailwindlabs/heroicons (heroicons)
v2.2.0Compare Source
Added
v2.1.5Compare Source
Added
michalmuskala/jason (jason)
v1.4.4Compare Source
oban-bg/oban (oban)
v2.20.1Compare Source
Bug Fixes
[Worker] Handle missing fields in unique Worker validation.
Workers that specified
keyswithoutfieldswould fail validation at compile time. Nowdefault values are considered for
use Oban.Workeras well asJob.new/2.v2.20.0Compare Source
Enhancements
MigrationAdd V13 migration for indexing cancelled and discarded states.A new V13 migration adds compound indexes to significantly improve
Oban.Plugins.Prunerperformance when cleaning up
discardedandcancelledjobs. This is especially beneficial forapplications that process large volumes of jobs and retain them for extended periods.
RepoExpose dynamic repo switching aswith_dynamic_repo/2The function was previously internal, which made impossible to use in external modules or extend
upon. Now custom plugins and extensions can use
Repo.with_dynamic_repo/2to use the configureddynamic repo options.
Bug Fixes
[Oban] Allow
insert_all/1,3via Oban facadeThe
insert_all/1andinsert_all/3function variants were missing from the generated Obanfacade functions when using a named instance.
[Testing] Generate correct
perform_job/1,2,3clauses.The
perform_job/2,3clauses generated byuse Oban.Testingdidn't handle theperform_job/2variant designed to run jobs created with
build_job/3. This caused test failures when tryingto execute jobs built using the
build_job/3helper function.The fix generates the missing
perform_job/2clause along with a convenientperform_job/1variant, ensuring all testing scenarios work seamlessly regardless of how jobs are constructed.
[Testing] Restrict inline execution to
availableandscheduledstates.Jobs in the
completedstate or other non-runnable states were incorrectly attempted by theinline engine, potentially causing errors or unexpected behavior during testing.
[Worker] Disallow
:keyswhen:fieldsdoesn't contain:argsor:metaUnique job configurations using
:keyswere allowed even when:fieldsdidn't include:argsor
:meta, which would result in runtime errors since keys can only extract values from thesekeyable fields.
[Cron] Fix error message when the crontab has an invalid range.
Cron validation errors for invalid ranges were returning exception structs instead of readable
error messages, making it difficult to understand and fix crontab configuration issues.
v2.19.4Compare Source
v2.19.3Compare Source
v2.19.2Compare Source
Enhancements
[Oban] Allow setting a MFA in
:get_dynamic_repoAnonymous functions don't work with OTP releases, as anonymous functions cannot be used in configuration. Now a MFA tuple can be passed instead of a fun, and the scaling guide recommends a function instead.
[Cron] Include configured timezone in cron job metadata
Along with the cron expression, stored as
cron_expr, the configured timezone is also recorded ascron_tzin cron job metadata.[Cron] Add
next_at/2andlast_at/2for cron time calculationsThis implements jumping functions for cron expressions. Rather than naively iterating through minutes, it uses the expression values to efficiently jump to the next or last cron run time.
[Executor] Always convert
queue_timeto native time unitThe telemetry docs state that measurements are recorded in
nativetime units. However, that hasn't been the case forqueue_timefor a while now. It usually worked anyway native and nanosecond is of the same resolution, but now it is guaranteed.Bug Fixes
[Peer] Correct leadership elections for the
DolphinengineMySQL always returns the number of entries attempted, even when nothing was added. The previous match caused all nodes to believe they were the leader. This uses a secondary query within the same transaction to detect if the current instance is the leader.
[Reindexer] Drop invalid indexes concurrently when reindexing.
The
DROP INDEXquery would lock the whole table with anACCESS EXCLUSIVElock and could cause queries to fail unexpectedly.[Testing] Use
Ecto.Type.cast/2for backward compatibilityThe
cast!/2function wasn't added until Ecto 3.12. This reverts time casting to usecast/2for compatibility with earlier Ecto versions.[Worker] Validate that the
uniqueoption isn't an empty list.An empty list was accepted at compile time, but wouldn't be valid later at runtime. Now the two validations match for greater parity.
v2.19.1Compare Source
Bug Fixes
[Mix] Improve igniter installer idempotency and compatibility.
The installer now uses
on_exists: :skipwhen generating a migration, so it composes safely with other igniter installers. It also removes unnecessaryadd_depcalls that would overwrite a previously specified Oban version with~> 2.18.v2.19.0: v2.19Compare Source
The minimum Elixir version is now v1.15. The official policy is to only support the three latest versions of Elixir.
🐬 MySQL Support
Oban officially supports MySQL with the new
Dolphinengine. Oban supports modern (read "with full JSON support") MySQL versions from 8.4 on, and has been tested on the highly scalable Plantescale database.Running on MySQL is as simple as specifying the
Dolphinengine in your configuration:With this addition, Oban can run in estimated 10% more Elixir applications!
⚗️ Automated Installer
Installing Oban into a new application is simplified with a new igniter powered
mixtask. The newoban.installtask handles installing and configuring a standard Oban installation, and it will deduce the correctengineandnotifierautomatically based on the database adapter.This
oban.installtask is currently the recommended way to install Oban. As a bonus, the task composes together with other igniter installers, making it possible to installphoenix,ash,oban, and other packages with a single command:Look at the
Mix.Oban.Installdocs for full usage and options.📔 Logging Enhancements
Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. A new
eventsoption forattach_default_logger/1allows selective event logging, so it's possible to receive important notices such as notifier connectivity issues, without logging all job activity:Along with filtering, there are new events to make diagnosing operational problems easier.
A
peer:electionevents logs leadership changes to indicate when nodes gain or lose leadership. Leadership issues are rare, but insidious, and make diagnosing production problems especially tricky.Helpfully,
plugin:stopevents are now logged for all core plugins via an optional callback, andplugin:exceptionevents are logged for all plugins regardless of whether they implement the callback. Runtime information is logged forCron,Lifeline,Pruner,Stager, andReindexerplugins.For example, every time
Cronruns successfully it will output details about the execution time and all of the inserted job ids:⛵️ Official JSON
Oban will default to using the official
JSONmodule built into Elixir v1.18+ when available.A new
Oban.JSONmodule detects whether the official ElixirJSONmodule is available at compile time. If it isn't available, then it falls back toJason, and ifJasonisn't available (which is extremely rare) then it warns about a missing module.This approach was chosen over a config option for backward compatibility because Oban will only support the JSON module once the minimum supported Elixir version is v1.18.
v2.19.0 — 2025-01-16
Enhancements
[Oban] Start all queues in parallel on initialization.
The midwife now starts queues using an async stream to parallelize startup and minimize boot time for applications with many queues. Previously,
[Oban] Safely return
nilfromcheck_queue/2when checking queues that aren't running.Checking on a queue that wasn't currently running on the local node now returns
nilrather than causing a crash. This makes it safer to check the whether a queue is running at all without atry/catchclause.[Oban] Add
check_all_queues/1to gather all queue status in a single function.This new helper gathers the "check" details from all running queues on the local node. While it was previously possible to pull the queues list from config and call
check_queue/2on each entry, this more accurately pulls from the registry and checks each producer concurrently.[Oban] Add
delete_job/2anddelete_all_jobs/2operations.This adds
Oban.delete_job/2,Oban.delete_all_jobs/2, Engine callbacks, and associated operations for all native engines. Deleting jobs is now easier and safer, due to automatic state protections.[Engine] Record when a queue starts shutting down
Queue producer metadata now includes a
shutdown_started_atfield to indicate that a queue isn't just paused, but is actually shutting down as well.[Engine] Add
rescue_jobs/3callback for all engines.The
Lifelineplugin formerly used two queries to rescue jobs—one to mark jobs with remaining attempts asavailableand another thatdiscardedthe remaining stuck jobs. Those are now combined into a single callback, with the base definition in theBasicengine.MySQL won't accept a select in an update statement. The Dolphin implementation of
rescue_jobs/3uses multiple queries to return the relevant telemetry data and make multiple updates.[Cron] Introduce
Oban.Cronwithschedule_interval/4The new
Cronmodule allows processes, namely plugins, to get cron-like scheduled functionality with a single function call. This will allow plugins to removes boilerplate around parsing, scheduling, and evaluating for cron behavior.[Registry] Add
select/1to simplify querying for registered modules.[Testing] Add
build_job/3helper for easier testing.Extract the mechanism for verifying and building jobs out of
perform_job/3so that it's usable in isolation. This also introducesperform_job/2for executing built jobs.[Telemetry] Add information on leadership changes to
oban.peer.electionevent.An additional
was_leader?field is included in[:oban, :peer, :election | _]event metadata to make hooking into leadership change events simpler.[Telemetry] Add callback powered logging for plugin events.
Events are now logged for plugins that implement the a new optional callback, and exceptions are logged for all plugins regardless of whether they implement the callback.
This adds logging for
Cron,Lifeline,Pruner,Stager, andReindexer.[Telemetry] Add peer election logging to default logger.
The default logger now includes leadership events to make identifying the leader, and leadership changes between nodes, easier.
[Telemetry] Add option to restrict logging to certain events.
Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. This adds an
eventsoption toattach_default_logger/1to allow selective event logging.[Telemetry] Expose
default_handler_id/0for telemetry testing.Simplifies testing whether the default logger is attached or detached in application code.
Chores
PostgrestoDatabasebecause it is also used for MySQL databases.Bug Fixes
[Oban] Allow overwriting all
insert/*functions arities afteruse Oban.[Node] Correctly handle
:nodeoption forscale_queue/2Scoping
scale_queue/2calls to a single node didn't work as advertised due to some extra validation for producer meta compatibility.[Migration] Fix version query for databases with non-unique
oidUse
pg_catalog.obj_description(object_oid, catalog_name), introduced in PostgreSQL 7.2, to specify thepg_classcatalog so only theoban_jobsdescription is returned.[Pruner] Use state specific fields when querying for prunable jobs.
Using
scheduled_atis not correct in all situations. Depending on job state, one ofcancelled_at,discarded_at, orscheduled_atshould be used.[Peer] Conditionally return the current node as leader for isolated peers.
Prevents returning the current node name when leadership is disabled.
[Testing] Retain time as microseconds for
scheduled_attests.Include microseconds in the
beginanduntiltimes used for scheduled_at tests with a delta. The prior version would truncate, which rounded theuntildown and broke microsecond level checks.[Telemetry] Correct spelling of "elapsed" in
oban.queue.shutdownmetadata.v2.18.3Compare Source
Enhancements
[Basic] Use the shared concat operator when appending errors.
The standard
pushoperation for updates is designed for arrays and usesarray_appendinternally. This replaces all use ofpushwith a fragment that uses the||operator instead, which works for both arrays and jsonb.CockroachDB doesn't support arrays of jsonb, but they do support simple jsonb columns. Now we can append to the errors column in either format for CRDB compatibility.
Bug Fixes
[Queue] Link the dynamic queue supervisor and
Midwifefor automatic restarts.When a producer crashes it brings the queue's supervisor down with it. With enough database errors, the producer may crash repeatedly enough to exhaust restarts and bring down the DynamicSupervisor in charge of all queues.
Now the supervisor is linked to the midwife to ensure that the midwife restarts as well, and it restarts all of the queues.
[Testing] Handle
insert_all/3with streams for the:inlinetesting engine.The inline engine's
insert_all_jobscallback incorrectly expected changesets to always be a list rather and couldn't handle streams.v2.18.2Compare Source
Bug Fixes
[Repo] Prevent debug noise by ensuring default opts for standard transactions.
Without default opts each transaction is logged. Many standard operations execute each second, which makes for noisy logs. Now transaction opts are passed as a third argument to ensure defaults are applied.
[Repo] Increase transaction retry delay and increase with each attempt.
Bump the base transaction retry from 100ms to 500ms, and increase linearly between each successive attempt to provide deeper backoff. This alleviates pressure on smaller connection pools and gives more time to recover from contentions failures.
v2.18.1Compare Source
Enhancements
[Repo] Automatically retry all transactions with backoff.
Avoid both expected an unexpected database errors by automatically retrying transactions. Some operations, such as serialization and lock not available errors, are likely to occur during standard use depending on how a database is configured. Other errors happen infrequently due to pool contention or flickering connections, and those should also be retried for increased safety.
This change is applied to
Oban.Repo.transaction/3itself, so it will apply to every location that uses transactions.[Migration] Declare
tagsas an array oftextrather thanvarchar.We don't provide a limit on the size of tags and they could conceivably be larger than 256 characters. Externally the types are interchangeable, but internally there are minor advantages to using the text type.
There isn't a new migration; this change is only for new tables.
Bug Fixes
query!/4toquery!rather thanquerywithout a bang.v2.18.0Compare Source
🔭 Queue Shutdown Telemetry
A new queue shutdown event,
[:oban, :queue, :shutdown], is emitted by each queue when it terminates. The event originates from thewatchmanprocess, which tracks the total ellapsed time from when termination starts to when all jobs complete or the allotted period is exhausted.Any jobs that take longer than the
:shutdown_grace_period(by default 15 seconds) are brutally killed and left as orphans. The ids of jobs left in an executing state are listed in the event'sorphanedmeta.This also adds
queue:shutdownlogging to the default logger. Only queues that shutdown with orphaned jobs are logged, which makes it easier to detect orphaned jobs and which jobs were affected:🚚 Distributed PostgreSQL Support
It's now possible to run Oban in distributed PostgreSQL databases such as Yugabyte. This is made possible by a few simple changes to the
Basicengine, and a newunloggedmigration option.Some PostgreSQL compatible databases don't support unlogged tables. Making
oban_peersunlogged isn't a requirement for Oban to operate, so it can be disabled with a migration flag:🧠 Job Observability
Job
stopandexceptiontelemetry now includes the reported memory and total reductions from the job's process. Values are pulled withProcess.info/2after the job executes and safely fall back to0in the event the process has crashed. Reductions are a rough proxy for CPU load, and the new measurements will make it easier to identify computationally expensive or memory hungry jobs.In addition, thanks to the addition of
Process.set_labelin recent Elixir versions, the worker name is set as the job's process label. That makes it possible to identify which job is running in apidvia observer or live dashboard.v2.18.0 — 2024-07-26
Enhancements
[Job] Support simple
unique: trueandunique: falsedeclarationsUniqueness can now be enabled with
unique: trueand disabled withunique: falsefrom job options or a worker definition. Theunique: trueoption uses all the standard defaults, but sets the period to:infinityfor compatibility with Oban Pro's newsimpleunique mode.[Cron] Remove forced uniqueness when inserting scheduled jobs.
Using uniqueness by default prevents being able to use the Cron plugin with databases that don't support uniqueness because of advisory locks. Luckily, uniqueness hasn't been necessary for safe cron insertion since leadership was introduced and scheduling changed to top-of-the-minute many versions ago.
[Engine] Introduce
check_available/1engine callbackThe
check_available/1callback allows engines to customize the query used to find jobs in theavailablestate. That makes it possible for alternative engines, such Oban Pro's Smart engine, to check for available jobs in a fraction of the time with large queues.[Peer] Add
Oban.Peer.get_leader/2for checking leadershipThe
get_leader/2function makes it possible to check which node is currently the leader regardless of the Peer implementation, and without having to query the database.[Producer] Log a warning for unhandled producer messages.
Some messages are falling through to the catch-all
handle_info/2clause. Previously, they were silently ignored and it degraded producer functionality because inactive jobs with dead pids were still tracked asrunningin the producer.[Oban] Use structured messages for most logger warnings.
A standard structure for warning logs makes it easier to search for errors or unhandled messages from Oban or a particular module.
Bug Fixes
[Job] Include all fields in the unique section of
Job.t/0.The unique spec lacked types for both
keysandtimestampkeys.[Basic] Remove
materializedoption fromfetch_jobs/3.The
MATERIALIZEDclause for CTEs didn't make a meaningful difference in job fetching accuracy. In some situations it caused a performance regression (which is why it was removed from Pro's Smart engine a while ago).v2.17.12Compare Source
v2.17.11Compare Source
Bug Fixes
[Oban] Handle deprecation warnings from Elixir 1.17
[Notifier] Prevent noisy logging about switching between modes.
There's an apparent race condition in Sonar between pruning stale nodes on
:pingand updating the status after a notification. This primarily happens in development for two reasons:Using
monotonic_time/1instead ofsystem_time/1guards against clock drift/time warp effects.[Stager] Prevent notification status timeouts from bubbling into the Stager.
A clogged Ecto pool could cause cascading errors on startup due to a sequence of calls between the
Notifier,Sonar, andStager.Sonarsends a notification inhandle_continueon startup.Notifierwaits for a connection from the Ecto pool.Stagerchecks for the connection status on startup, which would eventually time out because theSonarhadn't finished initializing.Stagercrashes from the timeout error.This makes the following changes to prevent this sequence of events:
Stagerno longer gets the sonar status during startup.Notifiercatches timeout errors fromSonarchecks, warns about it, then returns an:unknownstatus.[Engine] Defensively check the process dictionary during inline testing.
Not all processes are guaranteed to return a value for the process dictionary. Sometimes a value was missing during inline testing, which would crash the test.
[Basic] Set
conflict?flag when encountering a unique advisory lock.The
conflict?flag wasn't set when inserting a unique job was blocked by an advisory lock. Now the flag is set on either a fetched duplicate, or when the advisory lock is set.[Job] Correct
replace_by_state_optiontype by switching from keyword to tuples.[Config] Correctly type
shutdown_grace_periodas anintegerrather than atimeout.v2.17.10Compare Source
Enhancements
[Oban] Make all generated functions from
use Obanoverridable.Now the functions generated by
use Obanare all marked withdefoverridablefor extensibility.Bug Fixes
[Testing] Use
$callersrather than$ancestorsfor ancestry tree check.We care about Tasks for inline testing checks, not normal supervision tree ancestry. The
$callersentry is the appropriate mechanism to find the trail of calling processes:pgvector/pgvector-elixir (pgvector)
v0.3.1Compare Source
phoenixframework/phoenix (phoenix)
v1.8.1Compare Source
Bug fixes
v1.8.0Compare Source
Bug fixes
tsconfig.jsonEnhancements
mix precommitaliasAGENTS.mdgeneration compatible withusage_rulesusage_rulesfolder to installer, allowing to sync generic Phoenix rules into new projectsv1.7.21Compare Source
v1.7.20Compare Source
v1.7.19Compare Source
v1.7.18Compare Source
v1.7.17Compare Source
v1.7.16Compare Source
v1.7.15Compare Source
v1.7.14Compare Source
v1.7.13Compare Source
phoenixframework/phoenix_ecto (phoenix_ecto)
v4.6.5v4.6.4v4.6.3Compare Source
Enhancements
Bug fix
v4.6.2Compare Source
v4.6.1Compare Source
v4.6.0Compare Source
phoenixframework/phoenix_html (phoenix_html)
v4.3.0Compare Source
Enhancements
Phoenix.HTML.Safefor Durationnormalize_value/2to improve documentationBug fixes
v4.2.1Compare Source
Phoenix.HTML.FormFieldv4.2.0Compare Source
Enhancements
Phoenix.HTML.css_escape/1to escape strings for use inside CSS selectors:hrtooptions_for_select/2to render a horizontal ruleBug fixes
phoenixframework/phoenix_live_dashboard (phoenix_live_dashboard)
v0.8.7Compare Source
v0.8.6Compare Source
v0.8.5Compare Source
v0.8.4Compare Source
phoenixframework/phoenix_live_reload (phoenix_live_reload)
v1.6.1Compare Source
:phoenix_live_reloadprivate field to downstream instrumentation@importdirective support to CSS reload strategyv1.6.0Compare Source
Enhancements
__RELATIVEFILE__when invoking editors:parentto not reload the whole page if a Phoenix app is shown inside an iframe. You can get the old behavior back by setting the:target_windowoption to:top:Bug fixes
phoenixframework/phoenix_live_view (phoenix_live_view)
v0.20.17Compare Source
v0.20.16Compare Source
v0.20.15Compare Source
elixir-ecto/postgrex (postgrex)
v0.21.1Compare Source
ssl: truewith missing ssl_opts handlingv0.21.0Compare Source
This release requires Erlang/OTP 25+
Enhancements
Bug fixes
v0.20.0Compare Source
Deprecations
:search_pathand use:parametersoption insteadBug fixes
Durationtype returns same units asPostgrex.IntervalPostgrex.ReplicationConnectionPostgrex.SimpleConnectionv0.19.3Compare Source
Enhancements
[]:commentas options to query APIsBug fixes
Postgrex.SimpleConnectionv0.19.2Compare Source
v0.19.1Compare Source
Enhancements
Bug fixes
v0.19.0Compare Source
Enhancements
Bug fixes
{:stop, state}fromgen_statemconnection callbackwojtekmach/req (req)
v0.5.15Compare Source
Req.Response]: Add [Req.Response.to_map/1].v0.5.14Compare Source
[
run_plug]: Remove warning aboutinto: funwith{:halt, acc}result.The warning never been particularly useful because it's not like users
can do anything about it.
v0.5.13Compare Source
[
run_plug]: Ease transition to automatically parsing request body.Since v0.5.11, this code:
Needed to be updated to:
This change makes it so both work. The latter will be required, however.
v0.5.12Compare Source
[
run_plug]: Do not raise on unknown content types.Req.Test]: ImproveReq.Test.transport_error/2error message.v0.5.11Compare Source
[
encode_body]: Fix leading newline before multipart body.[
run_finch]: Handle initial transport errors oninto: :self.[
run_plug]: Automatically parse request body.Prior to this change, users would typically write:
Now, it can be:
This is a breaking change as
Plug.Conn.read_bodywill now return"".It can be easily fixed by using [
Req.Test.raw_body/1] which returns copy ofthe request raw body:
Furthermore, prior to this change
conn.body_paramswas unfetched:Now it is:
If in your
:plugusage you look atconn.params, it willnow include
conn.body_paramsas Plug always merges them.[
retry]: Use jitter by default[
Req.Request]: Add [Req.Request.put_option/3].[
Req.Request]: Add [Req.Request.put_new_option/3].[
Req.Request]: Add [Req.Request.merge_new_options/2].[
Req.Test]: Add [Req.Test.redirect/2].v0.5.10Compare Source
Req]: Add [Req.get_headers_list/1].v0.5.9Compare Source
[
encode_body]: Support any enumerable in:form_multipart[
Req.Test.expect/3]: Fix usage in shared mode[
retry]: Do not carry halt between retries(Internal) Support custom headers in
Req.Utils.aws_sigv4_url/1(Internal) Support custom query params in
Req.Utils.aws_sigv4_url/1v0.5.8Compare Source
[
Req]: Check legacy headers when streaming headers[
Req]: Ignore :into collectable for non-200 responses[
put_aws_sigv4]: Fix encoding path[
run_finch]: Add option to configure Finch:pool_max_idle_time[
run_finch]: Prepare for upcoming Finch v0.20v0.5.7Compare Source
[
put_aws_sigv4]: Fix signature when using custom port[
retry]: Do not callretry_delayfun twice[
auth]: Support passing a 0-arity functionv0.5.6Compare Source
v0.5.5Compare Source
[
put_aws_sigv4]: Fix detecting service[
put_aws_sigv4]: Raise on no:access_key_id/:secret_access_key/:service[
put_aws_sigv4]: Fix handling?name(no value)[
handle_http_errors]: should run beforeverify_checksum[
encode_body]: Support%File.Stream{}in:form_multipart[
encode_body]: Support%File.Stream{}from other nodes in:form_multipartv0.5.4Compare Source
run_finch], [Req.parse_message/2]: Gracefully handle process messages not meantfor the asynchronous response. In that case,
Req.parse_message/2returns:unknown.v0.5.3Compare Source
[
Req.Test]: Fix using shared mode[
encode_body]: Add:form_multipartoption[
put_aws_sigv4]: Try detecting the service[
run_finch]: Fix setting:finchoptionv0.5.2Compare Source
[
put_aws_sigv4]: Fix bug when using custom headers[
put_aws_sigv4]: Add:tokenoption[
redirect]: Cancel async request before redirecting[
decode_body]: Supportapplication/zstdand.zstrusterlium/rustler (rustler)
v0.37.1Compare Source
Fixed
rustler_mixchdirinrustler_mixwhen compiling in a subdirectory (#706)v0.37.0Compare Source
Added
staticlibfeature to compile withoutnif_initand add{pkg}_nif_initsymbol (#688)
IntoIteratortoOwnedBinary(#702, thanks aDifferentJT)Fixed
ErlNifEntry.min_ertsto a placeholder value (#703)Changed
inlineon commonly used functions (#475, thanks @joshuataylor)EnifAllocatoravailable even if theallocatorfeature is not enabledv0.36.2Compare Source
Added
std::hash::Hashimplementation for atoms (#695)Fixed
rustler_mix(#696, thanks @dkuku)v0.36.1Compare Source
No changes in the Rust code, only
rustler_mixadjustments and dependencyupdates.
Added
:module_name) (#682)Fixed
(#682, fixes #680)
.gitignorehandling to match the new workspace styleChanged
libloadingon non-Windows systems (#677)v0.36.0Compare Source
Added
Cargo.tomlfile withmix rustler.new(#672)Fixed
decodewas requested (#676)Removed
the template (#672)
v0.35.1Compare Source
Fixed
rustler_codegen(#671)Rustlermacros to not produce warnings on Elixir 1.18 (#670)v0.35.0Compare Source
Added
#[register_impl(name = "...")](#638)EncoderandDecoderimplementations forBox<T>(#644)Referencetype andenv.make_ref()function (#657)Fixed
registerattribute on#[register_impl]works as advertisednow (#638)
above (#635)
fixes #651)
Changed
names (#639)
rustler_sysas a separate library is merged intorustler::sysand will notbe released independently of
rustleranymore (#653)v0.34.0Compare Source
Added
rustler::resource!macro (#617, necessary due to a pending deprecation of aRust feature, #606)
Resourcetraitand provide a custom
destructorfunction that is run beforedropandreceives an
Envparameter (#617)implement the
Resource::downcallback (#617)Fixed
on_loadcallback is now caught and leads to a panic (#617)Changed
argument of
rustler::init!is ignored (#613)derivefeature flag is now ignored and its functionality unconditionallyenabled (#621)
swoosh/swoosh (swoosh)
v1.19.8Compare Source
✨ Features
v1.19.7Compare Source
🐛 Bug Fixes
v1.19.6Compare Source
✨ Features
v1.19.5Compare Source
🐛 Bug Fixes
"TEMPLATE"in the mailbox @axelson (#1059)v1.19.4Compare Source
✨ Features
"TEMPLATE"for from @axelson (#1058)v1.19.3Compare Source
✨ Features
v1.19.2Compare Source
✨ Features
🧰 Maintenance
v1.19.1Compare Source
🐛 Bug Fixes
v1.19.0Compare Source
✨ Features
🐛 Bug Fixes
v1.18.4Compare Source
✨ Features
v1.18.3Compare Source
🧰 Maintenance
v1.18.2Compare Source
🐛 Bug Fixes
v1.18.1Compare Source
✨ Features
v1.18.0Compare Source
✨ Features
v1.17.10Compare Source
🐛 Bug Fixes
v1.17.9Compare Source
🐛 Bug Fixes
v1.17.8Compare Source
🐛 Bug Fixes
v1.17.7Compare Source
✨ Feature
🧰 Maintenance
v1.17.6Compare Source
✨ Features
📝 Documentation
v1.17.5Compare Source
This release fixes a bug introduced in 1.17.4
🐛 Bug Fixes
📝 Documentation
v1.17.4Compare Source
🐛 Bug Fixes
🧰 Maintenance
v1.17.3Compare Source
✨ Features
v1.17.2Compare Source
✨ Features
v1.17.1Compare Source
🐛 Bug Fixes
v1.17.0Compare Source
A new adapter for Postal, thanks to @onvlt
✨ Features
v1.16.12Compare Source
✨ Features
v1.16.11Compare Source
✨ Features
📝 Documentation
v1.16.10Compare Source
🐛 Bug Fixes
📝 Documentation
v1.16.9Compare Source
🐛 Bug Fixes
v1.16.8Compare Source
Breaking Change
Muais bumped to0.2.0, and brings some breaking changes. The change in v0.2.0 is splittingtransport_optsintotcpandsslspecific ones since:gen_tcp.connectcomplains when it receives opts for:ssl.connect.🧰 Maintenance
v1.16.7Compare Source
✨ Features
v1.16.6Compare Source
✨ Features
📝 Documentation
v1.16.5Compare Source
✨ Features
v1.16.4Compare Source
✨ Features
🧰 Maintenance
phoenixframework/tailwind (tailwind)
v0.4.1Compare Source
v0.4.0Compare Source
mix tailwind.installv0.3.1Compare Source
v0.3.0Compare Source
Note: v0.3.0 dropped target code for handling Linux MUSL with Tailwind v3. Use v0.3.1+ instead.
v0.2.4Compare Source
v0.2.3Compare Source
beam-telemetry/telemetry_metrics (telemetry_metrics)
v1.1.0Compare Source
Changed
Add support for measurements as second argument of keep/drop callback.
beam-telemetry/telemetry_poller (telemetry_poller)
v1.3.0Compare Source
Added
atom_limit,process_limit, andport_limitmeasurements to the[vm, system_counts]event. (#79)v1.2.0Compare Source
Added
persistent_termmeasurements.elixir-tesla/tesla (tesla)
v1.15.3Compare Source
Bug Fixes
v1.15.2Compare Source
Bug Fixes
v1.15.1Compare Source
Bug Fixes
v1.15.0Compare Source
Features
:levelinstead of deprecated:log_level(#779) (ffc3609)Bug Fixes
v1.14.3Compare Source
Bug Fixes
v1.14.2Compare Source
Bug Fixes
v1.14.1Compare Source
Bug Fixes
v1.14.0Compare Source
Features
Bug Fixes
v1.13.2Compare Source
What's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.13.1...v1.13.2
v1.13.1Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.13.0...v1.13.1
v1.13.0Compare Source
Feature
Tesla.Testmodule, please check the How-To Guides, and module documentationWhat's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.3...v1.13.0
v1.12.3Compare Source
What's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.2...v1.12.3
v1.12.2Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.1...v1.12.2
v1.12.1Compare Source
Important
What's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.0...v1.12.1
v1.12.0Compare Source
Important
:httpcenables SSL by default in OTP 25+ Please keep the eye on around the topicWhat's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.11.2...v1.12.0
v1.11.2Compare Source
What's Changed
Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.11.1...v1.11.2
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.
Update dependency rustler to ~> 0.34.0to Update mix non-major dependencies4bd30462abto110e17670dUpdate mix non-major dependenciesto Update dependency rustler to ~> 0.34.0Update dependency rustler to ~> 0.34.0to Update mix non-major dependencies110e17670dto18bfd7383e18bfd7383eto23b15f576423b15f5764to9cfa73565d9cfa73565dto6efbb928cd6efbb928cdto4fa620d8614fa620d861to952ba0c823952ba0c823to8ce0ddbad98ce0ddbad9toa3dc60b2f5a3dc60b2f5to8f55aa97238f55aa9723tocfa8beacc2cfa8beacc2toe93b4d67b4e93b4d67b4to8c112604618c11260461to86df2c59c986df2c59c9toa04adf0bdaa04adf0bdatod09f07d07fd09f07d07ftodb2ff6da27db2ff6da27to6e4e2f2d226e4e2f2d22tod77a375769d77a375769to1936354b061936354b06tob3f2c2ece7b3f2c2ece7todddcf23010dddcf23010toa87210c9e2a87210c9e2to48a4e6437e48a4e6437etoea63abd618ea63abd618tof775457f33f775457f33to4af68fa4fc4af68fa4fcto028dba7963028dba7963to9ec9de0ab29ec9de0ab2toec26a1ac89ec26a1ac89tof606919f11f606919f11toef12afa9a9ef12afa9a9to4f64a658fc4f64a658fcto4583ab14914583ab1491toc4df27e22fc4df27e22fto16304ceb96View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.