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.

Files: 
CommentFileSizeAuthor
compare_views_block_hash.patch770 bytesjmiccolis

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
FileSize
888 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.