Patch attached.

Seems to work ok in my limited testing.

Files: 
CommentFileSizeAuthor
#13 1098268_mongodb_cache_7.patch8.48 KBmakara
FAILED: [[SimpleTest]]: [MySQL] Fetch test patch: failed to retrieve [1098268_mongodb_cache_7.patch] from [drupal.org].
[ View ]
#12 1098268_mongodb_cache_6.patch8.41 KBmakara
Test request sent.
[ View ]
#5 mongodb_cache_1098268_5.patch7.87 KBcrea
Test request sent.
[ View ]
#3 mongodb_cache_1098268.patch1.99 KBcrea
Test request sent.
[ View ]
#2 mongodb_cache_1098268.patch1.99 KBcrea
Test request sent.
[ View ]
mongo_cache_backport.patch2.37 KBmsonnabaum
Test request sent.
[ View ]

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
StatusFileSize
new1.99 KB
Test request sent.
[ View ]
crea’s picture

StatusFileSize
new1.99 KB
Test request sent.
[ View ]

Cleaner patch

crea’s picture

Status:Needs review» Needs work
crea’s picture

Status:Needs work» Needs review
StatusFileSize
new7.87 KB
Test request sent.
[ View ]

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

StatusFileSize
new8.41 KB
Test request sent.
[ View ]

Updated the patch:

makara’s picture

StatusFileSize
new8.48 KB
FAILED: [[SimpleTest]]: [MySQL] Fetch test patch: failed to retrieve [1098268_mongodb_cache_7.patch] from [drupal.org].
[ View ]

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.