The attached patch checks the hashes generated during the hook_block() $op "list" against what is already set before saving them. This prevents variable set from clearing the variable cache when nothing has changed.

Comments

jmiccolis’s picture

FYI this patch also applies to the 3.x branch (with a 7 line offset).

dawehner’s picture

Status: Needs review » Reviewed & tested by the community

Manual testing worked fine. I added a block from a view with a long name.
-> the variable_set is called
->goto admin/build/blocks again, no call to variable_set.

Code looks fine

catch’s picture

Priority: Normal » Critical

This causes a 1 second hit on every page view on a D6 site I have in dev, bumping to critical. Patch looks good and fixes the issue.

nrambeck’s picture

+1

We have blocks in panel panes sitewide which cause hook_block('list') to be executed on every page. Because of this variable_set() in views_block('list') our variable cache is rendered useless causing a significant performance hit.

dawehner’s picture

We have blocks in panel panes sitewide which cause hook_block('list') to be executed on every page.

I'm not sure whether this is how panels should it be.

merlinofchaos’s picture

Version: 6.x-2.x-dev » 7.x-3.x-dev
Status: Reviewed & tested by the community » Patch (to be ported)

Fixed in 6.x-2.x and 6.x-3.x -- does not apply to 7.x but almost certainly needs to be fixed there as well.

dawehner’s picture

Status: Patch (to be ported) » Fixed
StatusFileSize
new888 bytes

The patch did not applied because hook_block($op = 'list' got converted to hook_block_info

And commited.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.