Controller.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2022 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_STORE_CONTROLLER_H
10#define SQUID_STORE_CONTROLLER_H
11
12#include "store/Storage.h"
13
14class MemObject;
15class RequestFlags;
17
18namespace Store {
19
22class Controller: public Storage
23{
24public:
25 Controller();
26 virtual ~Controller() override;
27
28 /* Storage API */
29 virtual void create() override;
30 virtual void init() override;
31 virtual uint64_t maxSize() const override;
32 virtual uint64_t minSize() const override;
33 virtual uint64_t currentSize() const override;
34 virtual uint64_t currentCount() const override;
35 virtual int64_t maxObjectSize() const override;
36 virtual void getStats(StoreInfoStats &stats) const override;
37 virtual void stat(StoreEntry &) const override;
38 virtual void sync() override;
39 virtual void maintain() override;
40 virtual void evictCached(StoreEntry &) override;
41 virtual void evictIfFound(const cache_key *) override;
42 virtual int callback() override;
43
47 StoreEntry *find(const cache_key *);
48
54 StoreEntry *peek(const cache_key *);
55
61
64 bool markedForDeletion(const cache_key *key) const;
65
68 bool markedForDeletionAndAbandoned(const StoreEntry &) const;
69
71 bool hasReadableDiskEntry(const StoreEntry &) const;
72
75 int64_t accumulateMore(StoreEntry &) const;
76
78 void configure();
79
82
86 void freeMemorySpace(const int spaceRequired);
87
89 void memoryOut(StoreEntry &, const bool preserveSwappable);
90
93
96
99 void addReading(StoreEntry *, const cache_key *);
100
103 void addWriting(StoreEntry *, const cache_key *);
104
106 bool transientsReader(const StoreEntry &) const;
107
109 bool transientsWriter(const StoreEntry &) const;
110
112 void syncCollapsed(const sfileno);
113
116
118 int transientReaders(const StoreEntry &) const;
119
122
125
128
130 static bool SmpAware();
131
134
135private:
136 bool memoryCacheHasSpaceFor(const int pagesRequired) const;
137
138 void referenceBusy(StoreEntry &e);
139 bool dereferenceIdle(StoreEntry &, bool wantsLocalMemory);
140
141 void allowSharing(StoreEntry &, const cache_key *);
143
146 bool keepForLocalMemoryCache(StoreEntry &e) const;
147 bool anchorToCache(StoreEntry &e, bool &inSync);
148 void checkTransients(const StoreEntry &) const;
149 void checkFoundCandidate(const StoreEntry &) const;
150
154
159
162};
163
165extern Controller &Root();
166
168extern void Init(Controller *root = nullptr);
169
171extern void FreeMemory();
172
173} // namespace Store
174
175#endif /* SQUID_STORE_CONTROLLER_H */
176
High-level store statistics used by mgr:info action. Used inside PODs!
Definition: StoreStats.h:14
void memoryOut(StoreEntry &, const bool preserveSwappable)
called to get rid of no longer needed entry data in RAM, if any
Definition: Controller.cc:594
void checkFoundCandidate(const StoreEntry &) const
flags problematic entries before find() commits to finalizing/returning them
Definition: Controller.cc:328
void configure()
update configuration, including limits (re)calculation
Definition: Controller.cc:194
virtual ~Controller() override
Definition: Controller.cc:44
StoreEntry * findCallbackXXX(const cache_key *)
Definition: Controller.cc:400
bool markedForDeletionAndAbandoned(const StoreEntry &) const
Definition: Controller.cc:312
StoreEntry * peekAtLocal(const cache_key *)
Definition: Controller.cc:416
void checkTransients(const StoreEntry &) const
Definition: Controller.cc:914
int transientReaders(const StoreEntry &) const
number of the transient entry readers some time ago
Definition: Controller.cc:637
void noteStoppedSharedWriting(StoreEntry &)
adjust shared state after this worker stopped changing the entry
Definition: Controller.cc:630
void addReading(StoreEntry *, const cache_key *)
Definition: Controller.cc:751
void addWriting(StoreEntry *, const cache_key *)
Definition: Controller.cc:759
virtual uint64_t maxSize() const override
Definition: Controller.cc:159
void handleIdleEntry(StoreEntry &)
called when the entry is no longer needed by any transaction
Definition: Controller.cc:651
bool anchorToCache(StoreEntry &e, bool &inSync)
Definition: Controller.cc:863
bool allowCollapsing(StoreEntry *, const RequestFlags &, const HttpRequestMethod &)
tries to make the entry available for collapsing future requests
Definition: Controller.cc:733
virtual void sync() override
prepare for shutdown
Definition: Controller.cc:218
virtual void stat(StoreEntry &) const override
Definition: Controller.cc:137
bool transientsReader(const StoreEntry &) const
whether the entry is in "reading from Transients" I/O state
Definition: Controller.cc:473
void referenceBusy(StoreEntry &e)
update reference counters of the recently touched entry
Definition: Controller.cc:237
void freeMemorySpace(const int spaceRequired)
Definition: Controller.cc:535
virtual void maintain() override
perform regular periodic maintenance; TODO: move to UFSSwapDir::Maintain
Definition: Controller.cc:92
void syncCollapsed(const sfileno)
Update local intransit entry after changes made by appending worker.
Definition: Controller.cc:771
virtual void getStats(StoreInfoStats &stats) const override
collect statistics
Definition: Controller.cc:111
virtual uint64_t minSize() const override
the minimum size the store will shrink to via normal housekeeping
Definition: Controller.cc:166
void memoryDisconnect(StoreEntry &)
disassociates the entry from the memory cache, preserving cached data
Definition: Controller.cc:622
bool hasReadableDiskEntry(const StoreEntry &) const
whether there is a disk entry with e.key
Definition: Controller.cc:321
bool markedForDeletion(const cache_key *key) const
Definition: Controller.cc:305
void transientsDisconnect(StoreEntry &)
disassociates the entry from the intransit table
Definition: Controller.cc:644
int64_t accumulateMore(StoreEntry &) const
Definition: Controller.cc:485
bool memoryCacheHasSpaceFor(const int pagesRequired) const
whether the memory cache is allowed to store that many additional pages
Definition: Controller.cc:526
static int store_dirs_rebuilding
the number of cache_dirs being rebuilt; TODO: move to Disks::Rebuilding
Definition: Controller.h:133
int memoryPagesDebt_
Hack: Relays page shortage from freeMemorySpace() to handleIdleEntry().
Definition: Controller.h:161
StoreSearch * search()
Definition: Controller.cc:211
virtual int64_t maxObjectSize() const override
the maximum size of a storable object; -1 if unlimited
Definition: Controller.cc:187
void memoryEvictCached(StoreEntry &)
Definition: Controller.cc:611
virtual void init() override
Definition: Controller.cc:58
Memory * sharedMemStore
memory cache that multiple workers can use
Definition: Controller.h:152
static bool SmpAware()
whether there are any SMP-aware storages
Definition: Controller.cc:908
bool transientsWriter(const StoreEntry &) const
whether the entry is in "writing to Transients" I/O state
Definition: Controller.cc:479
virtual void create() override
create system resources needed for this store to operate in the future
Definition: Controller.cc:78
virtual uint64_t currentSize() const override
current size
Definition: Controller.cc:173
Disks * swapDir
summary view of all disk caches
Definition: Controller.h:151
Transients * transients
Definition: Controller.h:158
bool dereferenceIdle(StoreEntry &, bool wantsLocalMemory)
Definition: Controller.cc:262
virtual void evictCached(StoreEntry &) override
Definition: Controller.cc:495
void allowSharing(StoreEntry &, const cache_key *)
indexes and adds SMP-tracking for an ephemeral peek() result
Definition: Controller.cc:370
bool localMemStore
whether local (non-shared) memory cache is enabled
Definition: Controller.h:153
void transientsUnlinkByKeyIfFound(const cache_key *)
virtual void evictIfFound(const cache_key *) override
Definition: Controller.cc:506
void updateOnNotModified(StoreEntry *old, StoreEntry &e304)
using a 304 response, update the old entry (metadata and reply headers)
Definition: Controller.cc:700
StoreEntry * find(const cache_key *)
Definition: Controller.cc:349
virtual uint64_t currentCount() const override
the total number of objects stored right now
Definition: Controller.cc:180
virtual int callback() override
called once every main loop iteration; TODO: Move to UFS code.
Definition: Controller.cc:229
bool keepForLocalMemoryCache(StoreEntry &e) const
whether e should be kept in local RAM for possible future caching
Definition: Controller.cc:577
StoreEntry * peek(const cache_key *)
Definition: Controller.cc:432
summary view of all disk caches (cache_dirs) combined
Definition: Disks.h:19
class Ping::pingStats_ stats
Controller & Root()
safely access controller singleton
Definition: Controller.cc:926
void FreeMemory()
undo Init()
Definition: Controller.cc:939
void Init(Controller *root=nullptr)
initialize the storage module; a custom root is used by unit tests only
Definition: Controller.cc:933
unsigned char cache_key
Store key.
Definition: forward.h:29
signed_int32_t sfileno
Definition: forward.h:22

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors