store.cc
Go to the documentation of this file.
275 debugs(20,7, mem_obj << " lo: " << mem_obj->inmem_lo << " hi: " << mem_obj->endOffset() << " size: " << mem_obj->object_sz);
401 debugs(20, 3, "StoreEntry::hashInsert: Inserting Entry " << *this << " key '" << storeKeyText(someKey) << "'");
485 storeGetPublicByRequestMethod(HttpRequest * req, const HttpRequestMethod& method, const KeyScope keyScope)
654 if (!request->vary_headers.isEmpty() && request->vary_headers.cmp(mem_obj->vary_headers) != 0) {
672 StoreEntry *pe = storeCreateEntry(mem_obj->storeId(), mem_obj->logUri(), request->flags, request->method);
683 rep->setHeaders(Http::scOkay, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
734 storeCreateEntry(const char *url, const char *logUrl, const RequestFlags &flags, const HttpRequestMethod& method)
764 debugs(20, 5, "storeWrite: writing " << writeBuffer.length << " bytes for '" << getMD5Text() << "'");
769 debugs(20, 3, "allow Store clients to get entry content after buffering too much for " << *this);
1217 debugs(20, 3, "storeEntryValidLength: " << (diff < 0 ? -diff : diff) << " bytes too " << (diff < 0 ? "big" : "small") <<"; '" << getMD5Text() << "'" );
1226 Mgr::RegisterAction("store_io", "Store IO Interface Stats", &Mgr::StoreIoAction::Create, 0, 1);
1560 StoreEntry::createMemObject(const char *aUrl, const char *aLogUrl, const HttpRequestMethod &aMethod)
1567 StoreEntry::ensureMemObject(const char *aUrl, const char *aLogUrl, const HttpRequestMethod &aMethod)
1630 debugs(20, DBG_IMPORTANT, "WARNING: Trying to load store replacement policy " << type << " twice.");
1636 storerepl_list = static_cast<storerepl_entry_t *>(xrealloc(storerepl_list, (i + 2) * sizeof(storerepl_entry_t)));
void memoryDisconnect(StoreEntry &)
disassociates the entry from the memory cache, preserving cached data
Definition: Controller.cc:622
Definition: store.cc:102
HASHCMP storeKeyHashCmp
const cache_key * storeKeyPublicByRequest(HttpRequest *request, const KeyScope keyScope)
Definition: store_key_md5.cc:112
void storeReplAdd(const char *type, REMOVALPOLICYCREATE *create)
Definition: store.cc:1623
bool updateOnNotModified(const StoreEntry &e304)
Definition: store.cc:1436
void ensureMemObject(const char *storeId, const char *logUri, const HttpRequestMethod &aMethod)
initialize mem_obj (if needed) and set URIs/method (if missing)
Definition: store.cc:1567
void unregisterAbortCallback(const char *reason)
Definition: store.cc:1467
Definition: Store.h:351
void checkDisk() const
does nothing except throwing if disk-associated data members are inconsistent
Definition: store.cc:1924
static bool Enabled()
whether Squid is correctly configured to use a shared memory cache
Definition: MemStore.h:68
Definition: RemovalPolicy.h:20
const cache_key * storeKeyPublic(const char *url, const HttpRequestMethod &method, const KeyScope keyScope)
Definition: store_key_md5.cc:97
int mostBytesWanted(int max, bool ignoreDelayPools) const
Definition: MemObject.cc:411
struct _store_check_cachable_hist::@144 yes
SQUIDCEXTERN void hash_remove_link(hash_table *, hash_link *)
Definition: hash.cc:220
void setPrivateKey(const bool shareable, const bool permanent)
Definition: store.cc:523
static std::ostream & operator<<(std::ostream &os, const Store::IoStatus &io)
Definition: store.cc:1984
bool setPublicKey(const KeyScope keyScope=ksDefault)
Definition: store.cc:550
bool etagIsStrongEqual(const ETag &tag1, const ETag &tag2)
whether etags are strong-equal
Definition: ETag.cc:49
Definition: StoreMeta.h:114
struct _store_check_cachable_hist store_check_cachable_hist
bool etagIsWeakEqual(const ETag &tag1, const ETag &tag2)
whether etags are weak-equal
Definition: ETag.cc:55
int hot_obj_count
Definition: PackableStream.h:76
char * storeSwapMetaPack(tlv *tlv_list, int *length)
Definition: store_swapmeta.cc:106
static void storeRegisterWithCacheManager(void)
Definition: store.cc:1223
Definition: Pool.h:179
void replaceHttpReply(const HttpReplyPointer &, const bool andStartWriting=true)
Definition: store.cc:1683
int store_open_disk_fd
virtual void evictCached(StoreEntry &) override
Definition: Controller.cc:495
StoreEntry * storeGetPublicByRequest(HttpRequest *req, const KeyScope keyScope)
Definition: store.cc:491
SBuf httpMakeVaryMark(HttpRequest *request, HttpReply const *reply)
Definition: http.cc:585
StoreEntry * storeGetPublicByRequestMethod(HttpRequest *req, const HttpRequestMethod &method, const KeyScope keyScope)
Definition: store.cc:485
#define TexcHere(msg)
legacy convenience macro; it is not difficult to type Here() now
Definition: TextException.h:59
void replaceBaseReply(const HttpReplyPointer &r)
Definition: MemObject.cc:130
void storeReplSetup(void)
void addWriting(StoreEntry *, const cache_key *)
Definition: Controller.cc:779
const char * logUri() const
client request URI used for logging; storeId() by default
Definition: MemObject.cc:64
Definition: Range.h:19
enum _mem_status_t mem_status_t
Definition: HttpRequest.h:49
void transientsDisconnect(StoreEntry &)
disassociates the entry from the intransit table
Definition: Controller.cc:658
virtual void disconnect(StoreEntry &)
called when the entry is about to forget its association with cache_dir
Definition: Disk.h:71
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:17
struct timeval store_complete_stop
Definition: HierarchyLogEntry.h:67
Definition: StoreIOBuffer.h:16
int strListIsMember(const String *list, const SBuf &m, char del)
Definition: StrList.cc:46
bool hasIfNoneMatchEtag(const HttpRequest &request) const
has ETag matching at least one of the If-None-Match etags
Definition: store.cc:1842
Definition: RequestFlags.h:21
static void StatQueues(StoreEntry *e)
reports the current state of Store-related queues
Definition: store.cc:131
bool hasOneOfEtags(const String &reqETags, const bool allowWeakMatch) const
whether at least one of the request ETags matches entity ETag
Definition: store.cc:1853
void stopSharing(StoreEntry &)
stop any current (and prevent any future) SMP sharing of the given entry
Definition: Controller.cc:630
bool hasDisk(const sdirno dirn=-1, const sfileno filen=-1) const
Definition: store.cc:1891
AsyncCallPointer abortCallback
used for notifying StoreEntry writers about 3rd-party initiated aborts
Definition: MemObject.h:195
void setCollapsingRequirement(const bool required)
allow or forbid collapsed requests feeding
Definition: store.cc:1975
Definition: RequestMethod.h:27
const char * getSerialisedMetaData(size_t &length) const
Definition: store.cc:1730
Definition: store.cc:845
bool hasMemStore() const
whether there is a corresponding locked shared memory table entry
Definition: Store.h:211
bool peerResponseTime(struct timeval &responseTime)
Definition: access_log.cc:316
static void StatQueue(std::ostream &)
prints IPC message queue state; suitable for cache manager reports
Definition: CollapsedForwarding.cc:165
int neighbors_do_private_keys
Definition: SquidString.h:26
Definition: RemovalPolicy.h:39
void swapOutDecision(const MemObject::SwapOut::Decision &decision)
Definition: store.cc:1767
RemovalPolicy * createRemovalPolicy(RemovalPolicySettings *settings)
Definition: store.cc:1649
std::ostream & CurrentException(std::ostream &os)
prints active (i.e., thrown but not yet handled) exception
Definition: TextException.cc:69
void(* Remove)(RemovalPolicy *policy, StoreEntry *entry, RemovalPolicyNode *node)
Definition: RemovalPolicy.h:47
hash_table * store_table
AsyncCall::Pointer deferredProducer
producer callback registered with deferProducer
Definition: Store.h:333
void unlockAndReset(const char *resetContext=nullptr)
Definition: Store.h:378
static int store_dirs_rebuilding
the number of cache_dirs being rebuilt; TODO: move to Disks::Rebuilding
Definition: Controller.h:139
void transientsClearCollapsingRequirement(StoreEntry &e)
removes collapsing requirement (for future hits)
Definition: Controller.cc:665
Definition: RefCount.h:27
size_t bytesWanted(Range< size_t > const aRange, bool ignoreDelayPool=false) const
Definition: store.cc:210
StoreEntry * storeCreateEntry(const char *url, const char *logUrl, const RequestFlags &flags, const HttpRequestMethod &method)
Definition: store.cc:734
int64_t store_maxobjsize
void completeSuccessfully(const char *whyWeAreSureWeStoredTheWholeReply)
Definition: store.cc:992
Definition: MemObject.h:33
Definition: HttpReply.h:25
void markEndOfReplyHeaders()
sets baseReply().hdr_sz (i.e. written reply headers size) to endOffset()
Definition: MemObject.cc:222
Definition: Store.h:42
struct _store_check_cachable_hist::@143 no
void(* Add)(RemovalPolicy *policy, StoreEntry *entry, RemovalPolicyNode *node)
Definition: RemovalPolicy.h:46
Decision
Decision states for StoreEntry::swapoutPossible() and related code.
Definition: MemObject.h:155
struct SquidConfig::@110 onoff
const cache_key * calcPublicKey(const KeyScope keyScope)
Definition: store.cc:627
void storeAppendVPrintf(StoreEntry *e, const char *fmt, va_list vargs)
Definition: store.cc:840
virtual void maintain() override
perform regular periodic maintenance; TODO: move to UFSSwapDir::Maintain
Definition: Controller.cc:92
void handleIdleEntry(StoreEntry &)
called when the entry is no longer needed by any transaction
Definition: Controller.cc:672
int RESERVED_FD
CacheDigest * store_digest
bool hasTransients() const
whether there is a corresponding locked transients table entry
Definition: Store.h:209
StoreEntry * storeGetPublic(const char *uri, const HttpRequestMethod &method)
Definition: store.cc:479
static void StatQueue(std::ostream &)
prints IPC message queue state; suitable for cache manager reports
Definition: IpcIoFile.cc:548
virtual int getInUseCount()=0
const cache_key * storeKeyPublicByRequestMethod(HttpRequest *request, const HttpRequestMethod &method, const KeyScope keyScope)
Definition: store_key_md5.cc:118
Store::Disk & disk() const
the disk this entry is [being] cached on; asserts for entries w/o a disk
Definition: store.cc:1882
static Pointer Create(const CommandPointer &cmd)
Definition: StoreIoAction.cc:36
StoreEntry * storeCreatePureEntry(const char *url, const char *log_url, const HttpRequestMethod &method)
Definition: store.cc:716
void freeMemorySpace(const int spaceRequired)
Definition: Controller.cc:535
void attachToDisk(const sdirno, const sfileno, const swap_status_t)
Definition: store.cc:1902
virtual void append(char const *, int)
Appends a c-string to existing packed data.
Definition: store.cc:778
void deferProducer(const AsyncCall::Pointer &producer)
call back producer when more buffer space is available
Definition: store.cc:339
void setHeaders(Http::StatusCode status, const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires)
Definition: HttpReply.cc:167
bool hittingRequiresCollapsing() const
whether this entry can feed collapsed requests and only them
Definition: Store.h:214
RemovalPolicy * REMOVALPOLICYCREATE(wordlist *args)
Definition: RemovalPolicy.h:80
void lengthWentBad(const char *reason)
flags [truncated or too big] entry with ENTRY_BAD_LENGTH and releases it
Definition: store.cc:984
void registerAbortCallback(const AsyncCall::Pointer &)
notify the StoreEntry writer of a 3rd-party initiated StoreEntry abort
Definition: store.cc:1459
void RegisterAction(char const *action, char const *desc, OBJH *handler, int pw_req_flag, int atomic)
Definition: Registration.cc:16
bool swappingOut() const
whether we are in the process of writing this entry to disk
Definition: Store.h:132
bool swappedOut() const
whether the entire entry is now on disk (possibly marked for deletion)
Definition: Store.h:134
bool modifiedSince(const time_t ims, const int imslen=-1) const
Definition: store.cc:1798
bool hasIfMatchEtag(const HttpRequest &request) const
has ETag matching at least one of the If-Match etags
Definition: store.cc:1835
bool hasEtag(ETag &etag) const
whether this entry has an ETag; if yes, puts ETag value into parameter
Definition: store.cc:1824
void setUris(char const *aStoreId, char const *aLogUri, const HttpRequestMethod &aMethod)
Definition: MemObject.cc:76
void completeTruncated(const char *whyWeConsiderTheReplyTruncated)
Definition: store.cc:999
void eventAdd(const char *name, EVH *func, void *arg, double when, int weight, bool cbdata)
Definition: event.cc:107
void storeErrorResponse(HttpReply *reply)
Store a prepared error response. MemObject locks the reply object.
Definition: store.cc:1666
struct SquidConfig::@108 Store
int strListGetItem(const String *str, char del, const char **item, int *ilen, const char **pos)
Definition: StrList.cc:86
sfileno swap_filen
unique ID inside a cache_dir for swapped out entries; -1 for others
Definition: Store.h:234
Pointer recreateOnNotModified(const HttpReply &reply304) const
Definition: HttpReply.cc:262