Support from Acquia helps fund testing for Drupal Acquia logo

Comments

crea’s picture

I suggest to remove REQUEST_TIME definition in favor of #1179402: Define REQUEST_TIME for backports. Its also used in many other places.

crea’s picture

Category: feature » task
Status: Active » Needs review
FileSize
1.99 KB
crea’s picture

FileSize
1.99 KB

Cleaner patch

crea’s picture

Status: Needs review » Needs work
crea’s picture

Status: Needs work » Needs review
FileSize
7.87 KB

Updated patch: no REQUEST_TIME dependency

dob_’s picture

Patch seems not to work for me.

I tried it with a pressflow 6.20 installation.

cd sites/all/modules/mongodb
patch -p1 < patchfile.patch

Created the directory automatically.
Then i was able to activate the module.

Added these to my settings:

$conf['mongodb_connections'] = array(
'mongohost' => array('host' => 'localhost', 'db' => 'mydb'),
);

$conf['mongodb_collections'] = array(
'watchdog' => 'mongohost',
'session' => 'mongohost',
'cache' => 'mongohost',
);

Watchdog messages are written to mydb. Sessions and Cache not.

Any ideas?

crea’s picture

In this issue only cache is discussed. Sessions are discussed in different issue.
To use this you need something like this:

$conf['mongodb_connections'] = array('default' => array('host' => 'localhost', 'db' => 'drupal'));
$conf['cache_inc']   = './sites/all/modules/mongodb/mongodb_cache/mongodb_cache.inc';
dob_’s picture

Alright, that was the point.

Now i get this error:

MongoException: non-utf8 string: � in /media/psf/Home/Sites/infinite.local/sites/all/modules/mongodb/mongodb_cache/mongodb_cache.inc on line 152 Call Stack

That's my entry:
Array ( [_id] => http://infinite.local/ [cid] => http://infinite.local/ [created] => 1314532614 [expire] => -1 [headers] => [serialized] => [data] => ��W�o�6~�_qe��Y/��$��,.�Y���"Z:KthI%);ُ�}GJr��(�,z����}��G�<�Z\^�����CCR�lӘ�l�(,6�����7{_;~�������UӒ�HQ�Դ�R(�GѴ�� ���p�rp���SjO���&?O?����.���������;�|2��o��?��x� >Z-����Xnmu��z���F�����r(c֚��1�Ԧ,���j� ����7q�u:P��"��+�:b�jBݠ v�V���s-W;vu,l0���5U-l�\m��?�$ڠ�j;�0౯�� �J��QE�䥶ImAR(�\�;;�M��8�]�`���Eо�b��ge����O��q*l�������p����&?�VZ��Q��1�b!1���pZ�M�+�k�l]d!o���"o��d��� Q��!t��EiUf��,��CX� ��J�S(�Lq&4��}��H7~SX�|�@��:� ��R=��FCs)�B���������0�H ��(�,B.|��\���EJ5���D?Ser9l�������D�����Jw;n :��*d�� �>2������UWDcH(JnZʌ 9�ڐ.��­�J���t# ��~'��4f�X�t޿�;/�?���U�����]B?�^_*��i3��sTU�D�k^I$�2�n�A$V���﨓K �'���MВv�m%�������+|[���&�`+��m�x�.pw]XkQU4�[؟��F��@Ԗ�<�� ������\��F[�"�RUg���,iο0���~�!w����]���?��<� )

dob_’s picture

Changed code after line 149 and checked if the data string is valid UTF-8.

if(mb_detect_encoding($entry['data'], 'UTF-8', true)) {
$collection = mongodb_collection($this->bin);
$collection->save($entry);
}

crea’s picture

There's an issue here about using mongo binary type for cache.

dob_’s picture

Thanks.
My changes to use binary storage.....

131,132c131,136
< if ($cache->serialized) {
< $cache->data = unserialize($cache->data);
---
> if($cache->binary && $cache->serialized) {
> $cache->data = unserialize($cache->data->bin);
> } else if(!$cache->binary && $cache->serialized){
> $cache->data = unserialize($cache->data);
> } else {
> $cache->data = $cache->data->bin;
134c138
<
---
>
145a150
> 'binary' => true,
147c152
< 'data' => $scalar ? $data : serialize($data),
---
> 'data' => $scalar ? $data : serialize($data),
149c154
<
---
> $entry['data'] = new MongoBinData($entry['data']);
151d155
<

makara’s picture

Updated the patch:

makara’s picture

Fixed patch:

  • Drupal 6 sets HTTP headers in the cache.
crea’s picture

There's no need to validate if the cache data is valid utf. Just use binary type everywhere

fgm’s picture

Issue summary: View changes

Four years later and no committed version, can we agree to close this and say there will never be a stable 6.x version for cache ?

slashrsm’s picture

Status: Needs review » Closed (won't fix)

Agreed. If there is still anyone out there that needs this feel free to reopen and bring patch to RTBC state. Maintainers will be happy to commit it in that case.