store.cc
Go to the documentation of this file.
223 StoreEntry::delayAwareRead(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer callback)
314 debugs(20,7, HERE << mem_obj << " lo: " << mem_obj->inmem_lo << " hi: " << mem_obj->endOffset() << " size: " << mem_obj->object_sz);
440 debugs(20, 3, "StoreEntry::hashInsert: Inserting Entry " << *this << " key '" << storeKeyText(someKey) << "'");
527 storeGetPublicByRequestMethod(HttpRequest * req, const HttpRequestMethod& method, const KeyScope keyScope)
702 if (!request->vary_headers.isEmpty() && request->vary_headers.cmp(mem_obj->vary_headers) != 0) {
720 StoreEntry *pe = storeCreateEntry(mem_obj->storeId(), mem_obj->logUri(), request->flags, request->method);
731 rep->setHeaders(Http::scOkay, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
782 storeCreateEntry(const char *url, const char *logUrl, const RequestFlags &flags, const HttpRequestMethod& method)
813 debugs(20, 5, "storeWrite: writing " << writeBuffer.length << " bytes for '" << getMD5Text() << "'");
819 debugs(20, 3, "allow Store clients to get entry content after buffering too much for " << *this);
1274 debugs(20, 3, "storeEntryValidLength: " << (diff < 0 ? -diff : diff) << " bytes too " << (diff < 0 ? "big" : "small") <<"; '" << getMD5Text() << "'" );
1283 Mgr::RegisterAction("store_io", "Store IO Interface Stats", &Mgr::StoreIoAction::Create, 0, 1);
1617 StoreEntry::createMemObject(const char *aUrl, const char *aLogUrl, const HttpRequestMethod &aMethod)
1624 StoreEntry::ensureMemObject(const char *aUrl, const char *aLogUrl, const HttpRequestMethod &aMethod)
1687 debugs(20, DBG_IMPORTANT, "WARNING: Trying to load store replacement policy " << type << " twice.");
1693 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:629
Definition: store.cc:103
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:1680
bool updateOnNotModified(const StoreEntry &e304)
Definition: store.cc:1493
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:1624
void unregisterAbortCallback(const char *reason)
Definition: store.cc:1524
size_t HttpReply *STUB StoreEntry const KeyScope scope const HttpRequestMethod const KeyScope scope const char const RequestFlags const HttpRequestMethod const char * logUrl
Definition: stub_store.cc:107
Definition: Store.h:342
void checkDisk() const
does nothing except throwing if disk-associated data members are inconsistent
Definition: store.cc:2002
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:430
SQUIDCEXTERN void hash_remove_link(hash_table *, hash_link *)
Definition: hash.cc:224
void setPrivateKey(const bool shareable, const bool permanent)
Definition: store.cc:565
static std::ostream & operator<<(std::ostream &os, const Store::IoStatus &io)
Definition: store.cc:2062
bool setPublicKey(const KeyScope keyScope=ksDefault)
Definition: store.cc:592
Definition: CommRead.h:32
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:68
char * storeSwapMetaPack(tlv *tlv_list, int *length)
Definition: store_swapmeta.cc:106
static void storeRegisterWithCacheManager(void)
Definition: store.cc:1280
Definition: Pool.h:179
void replaceHttpReply(const HttpReplyPointer &, const bool andStartWriting=true)
Definition: store.cc:1761
void storeSwapFileNumberSet(StoreEntry *e, sfileno filn)
int store_open_disk_fd
virtual void evictCached(StoreEntry &) override
Definition: Controller.cc:502
StoreEntry * storeGetPublicByRequest(HttpRequest *req, const KeyScope keyScope)
Definition: store.cc:533
SBuf httpMakeVaryMark(HttpRequest *request, HttpReply const *reply)
Definition: http.cc:612
StoreEntry * storeGetPublicByRequestMethod(HttpRequest *req, const HttpRequestMethod &method, const KeyScope keyScope)
Definition: store.cc:527
#define TexcHere(msg)
legacy convenience macro; it is not difficult to type Here() now
Definition: TextException.h:58
void replaceBaseReply(const HttpReplyPointer &r)
Definition: MemObject.cc:143
void storeReplSetup(void)
void addWriting(StoreEntry *, const cache_key *)
Definition: Controller.cc:783
const char * logUri() const
client request URI used for logging; storeId() by default
Definition: MemObject.cc:65
Definition: Range.h:19
enum _mem_status_t mem_status_t
void comm_read(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer &callback)
Definition: Read.h:59
Definition: HttpRequest.h:49
struct SquidConfig::@113 onoff
void transientsDisconnect(StoreEntry &)
disassociates the entry from the intransit table
Definition: Controller.cc:665
struct SquidConfig::@111 Store
virtual void disconnect(StoreEntry &)
called when the entry is about to forget its association with cache_dir
Definition: Disk.h:71
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:1920
Definition: RequestFlags.h:21
static void StatQueues(StoreEntry *e)
reports the current state of Store-related queues
Definition: store.cc:132
bool hasOneOfEtags(const String &reqETags, const bool allowWeakMatch) const
whether at least one of the request ETags matches entity ETag
Definition: store.cc:1931
void stopSharing(StoreEntry &)
stop any current (and prevent any future) SMP sharing of the given entry
Definition: Controller.cc:637
bool hasDisk(const sdirno dirn=-1, const sfileno filen=-1) const
Definition: store.cc:1969
void setCollapsingRequirement(const bool required)
allow or forbid collapsed requests feeding
Definition: store.cc:2053
Definition: RequestMethod.h:27
const char * getSerialisedMetaData(size_t &length) const
Definition: store.cc:1808
Definition: store.cc:895
bool hasMemStore() const
whether there is a corresponding locked shared memory table entry
Definition: Store.h:205
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:150
struct _store_check_cachable_hist::@146 no
int neighbors_do_private_keys
Definition: SquidString.h:26
Definition: RemovalPolicy.h:39
void swapOutDecision(const MemObject::SwapOut::Decision &decision)
Definition: store.cc:1845
RemovalPolicy * createRemovalPolicy(RemovalPolicySettings *settings)
Definition: store.cc:1706
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:324
void unlockAndReset(const char *resetContext=nullptr)
Definition: Store.h:369
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:672
size_t bytesWanted(Range< size_t > const aRange, bool ignoreDelayPool=false) const
Definition: store.cc:249
StoreEntry * storeCreateEntry(const char *url, const char *logUrl, const RequestFlags &flags, const HttpRequestMethod &method)
Definition: store.cc:782
int64_t store_maxobjsize
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:241
Definition: Store.h:42
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
const cache_key * calcPublicKey(const KeyScope keyScope)
Definition: store.cc:675
void storeAppendVPrintf(StoreEntry *e, const char *fmt, va_list vargs)
Definition: store.cc:890
virtual void maintain() override
perform regular periodic maintenance; TODO: move to UFSSwapDir::Maintain
Definition: Controller.cc:93
size_t HttpReply *STUB StoreEntry const KeyScope scope const HttpRequestMethod & method
Definition: stub_store.cc:105
void handleIdleEntry(StoreEntry &)
called when the entry is no longer needed by any transaction
Definition: Controller.cc:679
int RESERVED_FD
#define Must(condition)
Like assert() but throws an exception instead of aborting the process.
Definition: TextException.h:72
void delayAwareRead(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer callback)
Definition: store.cc:223
CacheDigest * store_digest
bool hasTransients() const
whether there is a corresponding locked transients table entry
Definition: Store.h:203
StoreEntry * storeGetPublic(const char *uri, const HttpRequestMethod &method)
Definition: store.cc:521
static void StatQueue(std::ostream &)
prints IPC message queue state; suitable for cache manager reports
Definition: IpcIoFile.cc:535
virtual int getInUseCount()=0
const cache_key * storeKeyPublicByRequestMethod(HttpRequest *request, const HttpRequestMethod &method, const KeyScope keyScope)
Definition: store_key_md5.cc:118
Definition: CommRead.h:20
Store::Disk & disk() const
the disk this entry is [being] cached on; asserts for entries w/o a disk
Definition: store.cc:1960
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:764
void freeMemorySpace(const int spaceRequired)
Definition: Controller.cc:542
void attachToDisk(const sdirno, const sfileno, const swap_status_t)
Definition: store.cc:1980
virtual void append(char const *, int)
Appends a c-string to existing packed data.
Definition: store.cc:828
struct _store_check_cachable_hist::@147 yes
void deferProducer(const AsyncCall::Pointer &producer)
call back producer when more buffer space is available
Definition: store.cc:378
void setHeaders(Http::StatusCode status, const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires)
Definition: HttpReply.cc:168
bool hittingRequiresCollapsing() const
whether this entry can feed collapsed requests and only them
Definition: Store.h:208
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:1049
void registerAbortCallback(const AsyncCall::Pointer &)
notify the StoreEntry writer of a 3rd-party initiated StoreEntry abort
Definition: store.cc:1516
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:124
bool swappedOut() const
whether the entire entry is now on disk (possibly marked for deletion)
Definition: Store.h:126
AsyncCall::Pointer abortCallback
used for notifying StoreEntry writers about 3rd-party initiated aborts
Definition: MemObject.h:195
bool modifiedSince(const time_t ims, const int imslen=-1) const
Definition: store.cc:1876
bool hasIfMatchEtag(const HttpRequest &request) const
has ETag matching at least one of the If-Match etags
Definition: store.cc:1913
bool hasEtag(ETag &etag) const
whether this entry has an ETag; if yes, puts ETag value into parameter
Definition: store.cc:1902
void setUris(char const *aStoreId, char const *aLogUri, const HttpRequestMethod &aMethod)
Definition: MemObject.cc:77
void eventAdd(const char *name, EVH *func, void *arg, double when, int weight, bool cbdata)
Definition: event.cc:109
void storeErrorResponse(HttpReply *reply)
Store a prepared error response. MemObject locks the reply object.
Definition: store.cc:1744
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:228
Pointer recreateOnNotModified(const HttpReply &reply304) const
Definition: HttpReply.cc:263