Install
Works with Drupal: 7.xUsing Composer to manage Drupal site dependencies
Downloads
Download tar.gz
81.51 KB
MD5: 86c2ae3d19154b03ac36aa0365b38f27
SHA-1: 52e30ac9f0089a28531f1feb931784a416526343
SHA-256: 62a7d0e690087f1a9155364320acadb556b7310172e1f87e98dd9b22f4f2b414
Download zip
109.86 KB
MD5: ecea699bc3a751592ae1de33e570f4a9
SHA-1: 8b7f7f74bb93968060aba1673d9b929b4bea816b
SHA-256: 135ff9b1433f4b57cf1031eb7cba7301316a808a17f8e81a6a525a612f643755
Release notes
Direct upgrade impact
- Cron processing is enabled by default now which will benefit many sites running on AJAX-only queue processing. If you are already running
drush ap-processfrom a manual cron job, this change will work introduce more processing points and not have negative side-effects, but it can be turned off if necessary.
New Features
- The rewritten execution engine and diagnostics system allows third-party modules to integrate their cache invalidation code in a clean way to Acquia Purge. Not only does this allow cache invalidation after Acquia Cloud was cleared, it provides better overall quality as items would go back to the queue when they failed being cleared on a CDN and integrating modules can stop Acquia Purge via diagnostic quality of service.
- Support for wildcard cache invalidations:
drush appand rules can now clear paths likenews/*and invalidate everything underneath. It works on V3 and V4 servers that are on the default VCL-configuration and functions by issuing a HTTPBANrequests as soon as the*character is detected in a path. You will however need to setupDrupalFakeCacheas documented on https://www.drupal.org/node/797346. - Support for GeoIP accompanied with a diagnostic warning that this is still experimental.
- A 50% performance gain for the majority of standard setups with 2 load balancers in front of them. Since load balancers are hosted on the local network and extremely fast, Acquia Purge is now more optimistic in its capacity calculation than before. For example, a simple 2 balancer setup with 2 domains behind HTTP would first get a factor of 4X, but now this will be 2X. Non-standard balancer amounts (3+) still get the old pessimistic behavior as these configurations aren't recommended.
- New diagnostic check on HTTP 405 responses (token authentication failures).
- New diagnostic check on HTTP 403 responses (sites using whitelisting).
- New diagnostic check "
Acquia auth token" to see what token is sent to Acquia. - New diagnostic check "
Execution backends" that reports the loaded execution backends. - New
$conf['acquia_purge_trim_slashes']allows advanced folks who know what they're doing, to turn off slash trimming for paths coming fromexpire.module.
Fixes / Improvements
- TCP port 8080 is now also stripped in
sites.phpby default. - Debug information in log messages improved and issued HTTP methods are reported too now.
- All documentation has been converted to Markdown for maintainability and the ability to quickly convert it to HTML.
- Support for ACSF improved by detecting the correct sitename for each instance.
- Acquia Purge's
PageCacheExecutoris automatically turned off on sites usingDrupalFakeCache. - #zd231083: "
Function user_access does not exist" fixed. - #zd231083: "
Function drupal_strtolower does not exist" fixed. - #2649140 by bc: maxlength for path length is too low.
- #2854920 by Chris Burge, nielsvm: Protocol scheme determination is overly strict.
- #2831316 by Daniel_Rose: Missing word in error message in admin.inc file.
- #2637698 by SylvainM, nielsvm: Use
DRUPAL_ROOTforrequire_oncein_acquia_purge_load(). - #2550497 by snufkin, aditya.ghan:
Call to undefined function drupal_get_path_alias()fixed. - #2558985 by IRuslan: Wrong theme usage for
acquia_purge_status_report. - #2851356 by philosurfer, nielsvm: Missing update hook to rebuild registry
- #2838146 by wranvaud, nielsvm: Documentation comments corrections
API changes
API changes are changes to Acquia Purge that can affect third-party modules depending on them. Breakage isn't expected due so-called deprecation wrappers defined in acquia_purge.deprecated.inc, but will instead generate WARNING-level log messages.
BIG FAT WARNING
The next version 7.x-1.5 will see the removal of acquia_purge.deprecated.inc, which means that you should start porting your code now!
- OOP stack moved into
lib/, even without a cache-clear, the rewritten_acquia_purge_load()should transparently load these without any expected problems. If you loaded any file directly, expect breakage and adapt your code before upgrading. - DEPRECATIONS:
AcquiaPurgeService::process($callback)lost its$callbackparameters, --> implementhook_acquia_purge_executors()!hook_acquia_purge_purge_failure()--> implementhook_acquia_purge_executors()!hook_acquia_purge_purge_success--> implementhook_acquia_purge_executors()!AcquiaPurgeService::queueItemPath-->AcquiaPurgeQueueItem::getPath()AcquiaPurgeService::loggedErrors()-->AcquiaPurgeDiagnostics::$loggedErrors._acquia_purge_export_debug_symbols()-->AcquiaPurgeExecutorBase::exportDebugSymbols()._acquia_purge_purge()-->AcquiaPurgeExecutorAcquia->invalidate()._acquia_purge_purge_requests-->AcquiaPurgeExecutorInterface::requestsExecute()._acquia_purge_are_we_allowed_to_purge()-->!_acquia_purge_service()->diagnostics()->isSystemBlocked()._acquia_purge_are_we_on_acquiacloud()-->_acquia_purge_service()->hostingInfo()->isThisAcquiaCloud()._acquia_purge_are_we_using_memcached()-->_acquia_purge_service()->hostingInfo()->isMemcachedUsed()._acquia_purge_get_domains_add()--> please see deprecation wrapper's code._acquia_purge_get_balancers()-->_acquia_purge_service()->hostingInfo()->getBalancerAddresses()._acquia_purge_get_capacity()-->_acquia_purge_service()->capacity()->queueClaimsLimit()._acquia_purge_get_capacity_factor()-->_acquia_purge_service()->capacity()->httpRequestsFactor()._acquia_purge_get_capacity_maxrequests()-->_acquia_purge_service()->capacity()->httpRequestsLimit()._acquia_purge_get_diagnosis()-->_acquia_purge_service()->diagnostics()->get()._acquia_purge_get_diagnosis_logged()-->_acquia_purge_service()->diagnostics()->log()._acquia_purge_get_domains()-->_acquia_purge_service()->hostingInfo()->getDomains()._acquia_purge_get_protocol_schemes()-->_acquia_purge_service()->hostingInfo()->getSchemes()._acquia_purge_get_site_name()-->_acquia_purge_service()->hostingInfo()->getSiteName()._acquia_purge_get_site_group()-->_acquia_purge_service()->hostingInfo()->getSiteGroup()._acquia_purge_variable('acquia_purge_token'))-->_acquia_purge_service()->hostingInfo()->getBalancerToken().$_ENV['AH_SITE_ENVIRONMENT']-->_acquia_purge_service()->hostingInfo()->getSiteEnvironment().
- RENAMES:
AcquiaPurgeAjaxProcessor-->AcquiaPurgeProcessorAjax.AcquiaPurgeCronProcessor-->AcquiaPurgeProcessorCron.AcquiaPurgeRuntimeProcessor-->AcquiaPurgeProcessorRuntime.AcquiaPurgeDiskStateStorage-->AcquiaPurgeStateStorageDisk.AcquiaPurgeMemcachedStateStorage-->AcquiaPurgeStateStorageMemcache.AcquiaPurgeEfficientQueue-->AcquiaPurgeQueueEfficient.AcquiaPurgeSmartQueue-->AcquiaPurgeQueueSmart.
- REWRITES:
hook_acquia_purge_domains_alter()has been simplified and improved, seeacquia_purge.api.php.AcquiaPurgeExecutorBase::exportDebugSymbols()has been simplified and rewritten to reflect Python's textual representation of data. Apart from being a lot more reable, it is also faster as the previousob_get_clean()madness is gone now._acquia_purge_load()now allows third-party code to swap out all used classes by Acquia Purge. A variable like$conf['_acquia_purge_service'] = 'sites/bla.php';will lead to a different class to be loaded. See the inline documentation for more information.
- NEW:
acquia_purge_registry()supports the rewritten_acquia_purge_load()and complements D7's registry with a low-overhead and versioned cached data structure so that upgrading users won't suffer from renamed code and wouldn't even require to clear their caches.AcquiaPurgeDiagnosticsholds the test results and provides information about them.AcquiaPurgeOdditiesintroduces the ability to flag suspicious load balancer responses and to act upon or report them.AcquiaPurgeHostingInfounifies all platform data retrieval.AcquiaPurgeCapacityholds all capacity information together.- New HTTP execution engine that allows third-party cache invalidation after AP finished:
hook_acquia_purge_executors(): the hook third-party modules should implement.AcquiaPurgeExecutorsService: holds all enabled executor plugins.AcquiaPurgeExecutorBase: base implementation of a executor plugin with support helpers.AcquiaPurgeExecutorRequest: definition of a single to-be-executed HTTP request.AcquiaPurgeInvalidation: queue-traveling objects that describe a requested cache clear. These objects are offered to each loaded executor plugin, which in turn are required to call::setStatusFailed()or::setStatusSucceeded()on them.AcquiaPurgeQueueItem: value objects compatible with Drupal's queue API, but with the added bonus that they can work with the higher-levelAcquiaPurgeInvalidationobjects and thus, make the data flow logical and understandable (well, somewhat..).AcquiaPurgeExecutorPageCacheremoves URLs from Drupal's pagecache and by definition, always runs beforeAcquiaPurgeExecutorAcquiaso that Varnish always has a fresh URL to fetch.AcquiaPurgeExecutorAcquiacontains the main implementation for path clearing on Acquia Cloud.