Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

onOneServer() locks are not stored on lock_connection #55610

Copy link
Copy link
Open
@mortenscheel

Description

@mortenscheel
Issue body actions

Laravel Version

12.10.2

PHP Version

8.3.20

Database Driver & Version

No response

Description

Context

In config/cache.php you can define a separate connection to use for locks:
https://github.com/laravel/laravel/blob/f6e4638ee6ca1cd40aa7c56311d89ea3d91a24f8/config/cache.php#L74-L78

This makes it possible to run cache:clear without losing mutexes and atomic locks.
The lock_connection is used when calling

  • Cache::lock(...)->get()
  • Schedule::command(...)->withoutOverlapping()

It might be used in other contexts too, but those are the ones I'm aware of.

The problem

Schedule::command(...)->onOneServer() creates the lock on the regular cache connection via

public function create(Event $event, DateTimeInterface $time)
{
return $this->cache->store($this->store)->add(
$event->mutexName().$time->format('Hi'), true, 3600
);
}

Which means that cache:clear will wipe those locks and allow another server to pick up the task.

Thoughts

I'm not familiar enough with the source to send a PR, and I don't know if there's a good reason for this behavior. Naively I would assume that onOneServer() should use CacheEventMutex in stead of CacheSchedulingMutex(which is apparently only used in this context).

Steps To Reproduce

  1. Use a cache driver with a separate lock_connection
  2. Configure a scheduled job with onOneServer(), which calls sleep(60).
  3. Run schedule:run
  4. Observe where the lock is stored.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.