Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Webservice Core Async Bundle Laravel Package

hengebytes/webservice-core-async-bundle

Adds asynchronous web service request handling to Hengebytes WebService Core. It lets PHP applications dispatch concurrent calls without blocking, helping integrate slow or multiple remote services more efficiently while keeping core client workflows intact.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Context caveat: no prior assessment and an empty data set were supplied, so this evaluation is derived from the v1.3.11 release notes alone. Findings below are labelled [Confirmed] where the notes state them directly and [Assumed] where they follow from typical Laravel middleware/cache-lock patterns and must be validated before adoption.

Architecture fit. The package is a request-pipeline middleware layer that coalesces concurrent identical requests behind a Laravel cache lock: the first request executes and stores its response, subsequent "waiters" block on the lock and then serve the cached response. It ships at least four collaborating middleware — lock acquisition, logging, store-to-cache, and unlock — plus response modifiers (LockResponseLoaderResponseModifier, ReloadLockedResponseResponseModifier) and a CacheManager service. [Assumed] This is a horizontal concern that sits in front of controllers, so it fits Laravel's kernel/middleware model cleanly and is conceptually compatible with any stack that routes through middleware. The dependency on MonologLogHandler ties it to Monolog, which Laravel ships by default. The public reloadLockedResponse() entry point consumed by soap-core-async-bundle v2.0.1 indicates the package is a shared primitive across at least two internal services, not a standalone library.

Integration feasibility. [Assumed] Low-to-moderate: Composer install, service provider auto-discovery, publish config (logs/lock_wait_threshold), and correct middleware ordering. The ordering constraint is real and load-bearing — the v1.3.11 bug existed precisely because the reloaded request did not traverse the log/store/unlock chain, so an integrator who hand-orders middleware can reintroduce an equivalent defect. The tagging and TTL-callback support called out in the fix implies the cache store must support both locks and tags, which effectively means Redis or Memcached; file and database stores are likely non-starters. [Assumed] A TPM should treat store selection as a gating prerequisite, not an implementation detail.

Technical risk. The bug fixed here was severe, and its severity is itself a risk signal. Prior behaviour: after a lock-TTL-sized wait, one request per 60 seconds succeeded per lock and everything else queued, with no caching and no logging — a silent availability incident with zero observability. That a defect of this class reached a patch release suggests thin concurrency testing in CI. Two change-surface risks:

  • CacheManager::awaitUnlock() changes return type from void to float. Source-compatible for callers that ignore the return value; breaking for any subclass or interface implementation that overrides it with a void signature. [Assumed] PHP will fatal on such an override.
  • LockResponseLoaderResponseModifier gains an optional MonologLogHandler constructor argument, autowired and null when logging is disabled. Safe under container resolution; breaking for any code that instantiates it manually with the old arity, and it introduces a null-guard path that must be exercised.

Key questions.

  1. Which cache stores are certified for locks and tags, and what is the lock TTL — is the 60s window configurable per route?
  2. Is the coalescing key derived from method + URL + body hash, and is the package therefore safe only for idempotent GETs? What happens on POST?
  3. Does the waiter receive the true exception and HTTP status of a failed leader, or a synthesized 5xx? The notes claim real causes now propagate — what does that look like on the wire?
  4. Does awaitUnlock()'s new float return require any caller changes, and do we own any such callers?
  5. Is soap-core-async-bundle v2.0.1 a hard floor? Can the two be upgraded independently, or must they move together?
  6. What is the supported matrix for PHP and Laravel versions, and is this release covered by the project's security-support policy?
  7. Does the package handle streamed, chunked, or large binary responses, or does it buffer everything into the cache?

Integration Approach

Stack fit. [Assumed] Native Laravel service provider + middleware; no framework fork, no custom kernel. The only non-Laravel dependency visible is Monolog, which is already present. The coupling to soap-core-async-bundle means this package is an infrastructure component for a SOAP/async edge, so the natural home is the service tier that fronts those upstream calls, not a general-purpose web tier.

Migration path. v1.3.11 is a patch-level release containing bug fixes plus two minor API deltas — treat it as a low-ceremony upgrade with a mandatory concurrency regression test, not a drop-in bump. Pin the exact version, upgrade in a non-production environment first, and only then roll out. Because the fixed defect was throughput-destructive rather than corrupting, there is no data-remediation step; but the old behaviour may have masked load problems that will surface as increased cache-write volume once waiters start succeeding.

Compatibility. Callers of awaitUnlock() that discard the return value are unaffected; overriders are not. Manual constructors of LockResponseLoaderResponseModifier must be updated or switched to container resolution. The new static reloadLockedResponse() is purely additive. [Assumed] Semver discipline was not strictly observed here — a return-type change on a public method in a patch release is a contract change — so a TPM should not assume future patches are behaviourally inert.

Sequencing.

  1. Confirm the cache store supports locks and tags in every target environment; block on this.
  2. Pin v1.3.11 and audit the codebase for awaitUnlock() overrides and manual modifier construction.
  3. Verify middleware ordering matches the package's expected chain (lock → log → store → unlock), ideally via the package's own registration rather than hand-wiring.
  4. Coordinate with the soap-core-async-bundle v2.0.1 owner and agree a joint or ordered release window.
  5. Run a concurrency test with N parallel identical requests; assert every waiter gets a real response, the lock is released, and exactly one leader executes.
  6. Exercise failure injection: cache-store failure mid-write, exception before response exists, cache tagging unsupported.
  7. Set logs/lock_wait_threshold deliberately (5s default will be noisy or silent depending on upstream latency) and confirm the <action>:lock_wait warning reaches the alerting pipeline.
  8. Roll out to a canary cohort, then fleet-wide.

Operational Impact

Maintenance. Small, focused package with a narrow surface — cheap to own, but it sits in the request path of every in-scope call, so its blast radius is disproportionate to its size. It has at least one downstream consumer with a version-pinned dependency, which means upgrade cadence must be negotiated rather than unilateral. Budget for tracking that coupling; it is the main ongoing maintenance cost, not the code itself.

Support. The new lock_wait warning is the single most valuable operational addition in this release — it converts a previously silent stall into a greppable, alertable signal. Instrument it on day one: a sustained rise in lock_wait events is the leading indicator of the exact pathology v1.3.11 fixed. Support load should fall versus prior versions, since the dominant failure mode (queued requests, no logs, no trace) becomes diagnosable.

Scaling. The pre-fix behaviour was a hard throughput ceiling of roughly one request per lock TTL per key. That ceiling is removed, but the underlying mechanism still serializes identical concurrent requests by design — that is the point of the package. Scaling questions shift to cache tier capacity and lock contention on hot keys. Expect higher write volume to cache post-upgrade as waiters actually populate and read entries, and size the cache tier accordingly. Cross-region or multi-cluster deployments need a shared lock store, or coalescing silently degrades to per-cluster.

Failure modes. Now explicitly handled: cache-write failure releases the lock (TTL callback, tagging); pre-response Throwable releases the lock; the 423 placeholder is never returned as success; reloaded-request failures propagate with real causes. Remaining exposure: cache-store unavailability generally (behaviour unstated — fail-open to direct execution is presumably the sane default and should be confirmed), stampede on lock release if the unlock path is delayed, and non-idempotent methods if the coalescing key does not distinguish them.

Ramp-up. Moderate. A competent Laravel engineer can wire the middleware in an afternoon; understanding why ordering matters and how the reload pipeline works takes longer, and is exactly the knowledge that was missing when this bug shipped. Require the integrator to read the reload path, not just the install docs. Plan a short internal write-up on the coalescing model and the lock_wait signal so on-call engineers can interpret the new log line without escalation.

Recommendation. Adopt v1.3.11 — the fixed defect is a genuine availability bug and staying on the prior version means accepting a one-request-per-TTL ceiling with no visibility. Gate the rollout on the concurrency test and the awaitUnlock()/constructor audit, and sequence the release with soap-core-async-bundle v2.0.1.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums