Changeset 26415


Ignore:
Timestamp:
06/21/10 13:55:06 (7 years ago)
Author:
flack
Message:

a bit cleaner workaorund for the serialization/memcache bug, refs #359

Location:
branches/developers/flack/acltuning/midcom.core/midcom
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/developers/flack/acltuning/midcom.core/midcom/helper/_basicnav.php

    r26411 r26415  
    460460            }
    461461
    462             $this->_nap_cache->put($topic->id, $nodedata);
     462            $this->_nap_cache->put_node($topic->id, $nodedata);
    463463            debug_add("Added the guid {$topic->id} to the cache.");
    464464        }
     
    662662        $entry_name = "{$node[MIDCOM_NAV_ID]}-leaves";
    663663
    664         $leaves = $this->_nap_cache->get_leaves($entry_name);
     664        $leaves = false;//$this->_nap_cache->get_leaves($entry_name);
    665665
    666666        if (!$leaves)
     
    691691                {
    692692                    continue;
    693                 }
    694 
    695                 //workaround for a strange bug where all ids in Memcache are 0
    696                 if ($data[MIDCOM_NAV_OBJECT]->id == 0)
    697                 {
    698                     $mc = new midgard_collector($data[MIDCOM_NAV_OBJECT]->__mgdschema_class_name__, 'guid', $data[MIDCOM_NAV_OBJECT]->guid);
    699                     $mc->set_key_property('id');
    700                     $mc->execute();
    701                     $ids = $mc->list_keys();
    702                        
    703                     if (empty($ids))
    704                     {
    705                         continue;
    706                     }
    707 
    708                     $data[MIDCOM_NAV_OBJECT]->id = key($ids);
    709693                }
    710694
     
    954938
    955939        //debug_print_r('Updating the Node structure in the cache to this:', $cached_node);
    956         //$this->_nap_cache->put($node[MIDCOM_NAV_ID], $cached_node);
    957 
    958         $this->_nap_cache->put("{$node[MIDCOM_NAV_ID]}-leaves", $leaves);
     940        //$this->_nap_cache->put_node($node[MIDCOM_NAV_ID], $cached_node);
     941
     942        $this->_nap_cache->put_leaves("{$node[MIDCOM_NAV_ID]}-leaves", $leaves);
    959943
    960944        debug_pop();
  • branches/developers/flack/acltuning/midcom.core/midcom/services/cache/module/nap.php

    r26411 r26415  
    8383    function _on_initialize()
    8484    {
     85        define ('MIDCOM_NAV_LEAF_DB_ID', 1001);
     86
    8587        $this->_backend = $GLOBALS['midcom_config']['cache_module_memcache_backend'];
    8688       
     
    189191    function get_leaves($key)
    190192    {
    191         if ($this->_cache === null)
    192         {
    193             return false;
    194         }
    195 
    196         return $this->_cache->get("NAP-{$key}");
     193        $result = false;
     194        if ($this->_cache === null)
     195        {
     196            return $result;
     197        }
     198
     199        $data = $this->_cache->get("NAP-{$key}");
     200
     201        if ($data)
     202        {
     203            foreach ($data as $id => $node)
     204            {
     205                //workaround for a strange bug where all ids in Memcache are 0
     206                if (isset($data[MIDCOM_NAV_LEAF_DB_ID]))
     207                {
     208                    $data[MIDCOM_NAV_OBJECT]->id = $data[MIDCOM_NAV_LEAF_DB_ID];
     209                    unset($data[MIDCOM_NAV_LEAF_DB_ID]);
     210                }
     211                $result[$id] = $node;
     212            }
     213        }
     214
     215        return $result;
    197216    }
    198217
     
    215234   
    216235    /**
    217      * Sets a given key in the cache. If the data group is unknown, a Warning-Level error
    218      * is logged and putting is denied.
     236     * Sets a given node key in the cache.
    219237     *
    220238     * @param string $key The key to look up.
     
    222240     * @param int $timeout how long the data should live in the cache.
    223241     */
    224     function put($key, $data, $timeout = FALSE)
     242    function put_node($key, $data, $timeout = FALSE)
    225243    {
    226244        if ($this->_cache === null)
    227245        {
    228246            return;
     247        }
     248
     249        $this->_cache->put("NAP-{$key}", $data, $timeout);
     250    }
     251
     252    /**
     253     * Sets a given leave key in the cache
     254     *
     255     * @param string $key The key to look up.
     256     * @param mixed $data The data to store.
     257     * @param int $timeout how long the data should live in the cache.
     258     */
     259    function put_leaves($key, $data, $timeout = FALSE)
     260    {
     261        if ($this->_cache === null)
     262        {
     263            return;
     264        }
     265
     266        foreach ($data as $id => $node)
     267        {
     268            //workaround for a strange bug where all ids in Memcache are 0
     269            if (   isset($data[MIDCOM_NAV_OBJECT])
     270                && is_object($data[MIDCOM_NAV_OBJECT])
     271                && $data[MIDCOM_NAV_OBJECT]->guid)
     272            {
     273               
     274                $data[MIDCOM_NAV_LEAF_DB_ID] = $data[MIDCOM_NAV_OBJECT]->id;
     275            }
    229276        }
    230277
Note: See TracChangeset for help on using the changeset viewer.