Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

This cache store does not support tagging. #4

Closed
marvinhosea opened this issue May 9, 2019 · 7 comments
Closed

This cache store does not support tagging. #4

marvinhosea opened this issue May 9, 2019 · 7 comments
Assignees

Comments

@marvinhosea
Copy link

This cache store does not support tagging.

@jamesmills
Copy link
Owner

Hi,

I am not aware that this package used the cache. Are you sure it's not something else which is causing this error?

This usually happens when you try and use something which ads tagging to cache but you have your cache settings to use file (which does not support tagging). I usually just use Redis for caching which solves this issue.

James

@GreenImp
Copy link

I'm getting this issue as well. It looks like it's being caused by something in the Torann\GeoIP\Cache's __construct method.

Here's the full error log:

BadMethodCallException thrown with message "This cache store does not support tagging."

Stacktrace:
#73 BadMethodCallException in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Cache/Repository.php:485
#72 Illuminate\Cache\Repository:tags in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php:356
#71 Illuminate\Cache\CacheManager:__call in /home/vagrant/code/vendor/torann/geoip/src/Cache.php:32
#70 Torann\GeoIP\Cache:__construct in /home/vagrant/code/vendor/torann/geoip/src/GeoIP.php:91
#69 Torann\GeoIP\GeoIP:__construct in /home/vagrant/code/vendor/torann/geoip/src/GeoIPServiceProvider.php:38
#68 Torann\GeoIP\GeoIPServiceProvider:Torann\GeoIP\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Container/Container.php:787
#67 Illuminate\Container\Container:build in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Container/Container.php:667
#66 Illuminate\Container\Container:resolve in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Container/Container.php:615
#65 Illuminate\Container\Container:make in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:757
#64 Illuminate\Foundation\Application:make in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:121
#63 app in /home/vagrant/code/vendor/torann/geoip/src/helpers.php:14
#62 geoip in /home/vagrant/code/vendor/jamesmills/laravel-timezone/src/Listeners/Auth/UpdateUsersTimezone.php:18
#61 JamesMills\LaravelTimezone\Listeners\Auth\UpdateUsersTimezone:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php:366
#60 call_user_func_array in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php:366
#59 Illuminate\Events\Dispatcher:Illuminate\Events\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php:196
#58 Illuminate\Events\Dispatcher:dispatch in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php:603
#57 Illuminate\Auth\SessionGuard:fireLoginEvent in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php:421
#56 Illuminate\Auth\SessionGuard:login in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php:355
#55 Illuminate\Auth\SessionGuard:attempt in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php:82
#54 App\Http\Controllers\Auth\LoginController:attemptLogin in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php:45
#53 App\Http\Controllers\Auth\LoginController:login in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
#52 call_user_func_array in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
#51 Illuminate\Routing\Controller:callAction in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45
#50 Illuminate\Routing\ControllerDispatcher:dispatch in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php:219
#49 Illuminate\Routing\Route:runController in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php:176
#48 Illuminate\Routing\Route:run in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php:680
#47 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#46 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/app/Http/Middleware/RedirectIfAuthenticated.php:24
#45 App\Http\Middleware\RedirectIfAuthenticated:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#44 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#43 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41
#42 Illuminate\Routing\Middleware\SubstituteBindings:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#41 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#40 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:75
#39 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#38 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#37 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49
#36 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#35 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#34 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:56
#33 Illuminate\Session\Middleware\StartSession:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#31 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
#30 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#29 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#28 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:66
#27 Illuminate\Cookie\Middleware\EncryptCookies:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#25 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#24 Illuminate\Pipeline\Pipeline:then in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682
#23 Illuminate\Routing\Router:runRouteWithinStack in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php:657
#22 Illuminate\Routing\Router:runRoute in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623
#21 Illuminate\Routing\Router:dispatchToRoute in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php:612
#20 Illuminate\Routing\Router:dispatch in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176
#19 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#18 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/fideloper/proxy/src/TrustProxies.php:57
#17 Fideloper\Proxy\TrustProxies:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#16 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#15 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
#14 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#13 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#12 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
#11 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#10 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#9 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27
#8 Illuminate\Foundation\Http\Middleware\ValidatePostSize:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#6 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php:62
#5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode:handle in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#4 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#3 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#2 Illuminate\Pipeline\Pipeline:then in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151
#1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116
#0 Illuminate\Foundation\Http\Kernel:handle in /home/vagrant/code/public/index.php:55

And my cache.php config is setting the default to file.

@GreenImp
Copy link

I've found that there is a geoip.php config file on the Torann\GeoIP package.
If I duplicate that into my own config directory and change this line:

'cache_tags' => ['torann-geoip-location'],

To this:

'cache_tags' => null,

It stops the error being thrown.

I'm not sure if this is a good way of doing it, but it's a temporary fix at least.
Is there any way that the error can be resolved in your package?

@jamesmills
Copy link
Owner

ah, yes!

I should probably have included a little more detailed information about the underlying package which does the timezone lookup! I rely on the torann/geoip (http://lyften.com/projects/laravel-geoip/) package to do the GeoIP lookup. This allows me to get the TimeZone of the user based on their location. It's the torann/geoip package which requires you to use a cache store which supports tagging.

By default, Laravel will use the 'file' cache driver (https://github.com/laravel/laravel/blob/master/config/cache.php#L21) but this does not support tagging (https://laravel.com/docs/5.8/cache#cache-tags).

As @GreenImp has suggested the best thing to do is to publish the torann/geoip config file by running

php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config

and then update the cache_tags to null

 /*
    |--------------------------------------------------------------------------
    | Cache Tags
    |--------------------------------------------------------------------------
    |
    | Cache tags are not supported when using the file or database cache
    | drivers in Laravel. This is done so that only locations can be cleared.
    |
    */

    'cache_tags' => null,

The only thing that this will prevent you from doing is being able to flush the cache and delete only those cache items linked to the geopip lookup.

@jamesmills jamesmills self-assigned this May 22, 2019
@jamesmills jamesmills pinned this issue May 22, 2019
@jamesmills
Copy link
Owner

I have updated the README with some additional information around this.

Thank you.

@GreenImp
Copy link

Fab, thanks for the explanation as well.

@jamesmills jamesmills unpinned this issue Aug 6, 2019
@jamesmills jamesmills pinned this issue Aug 6, 2019
@seabasss
Copy link

seabasss commented Aug 5, 2021

I found that changing file to array also solves the problem, but what are the pros/cons of using array vs. setting cache_tags to null? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants