[CalendarServer-dev] Error running calendarserver after upgrading db from 5.x to 7.x
Rahul Amaram
amaramrahul at users.sourceforge.net
Tue Feb 9 02:30:26 PST 2016
On Sunday 31 January 2016 07:27 AM, Andre LaBranche wrote:
>
>> On Jan 30, 2016, at 1:18 PM, Andre LaBranche <dre at apple.com
>> <mailto:dre at apple.com>> wrote:
>>
>> This is not expected. Does memcached need to be configured for
>> Unicode, maybe?
>
> It looks like we expect to be in ascii mode, as far as memcached is
> concerned:
>
> You can debug the memcache side of this by configuring calendarserver
> to not launch memcached; instead you'll do so manually, in the foreground.
>
> Edit caldavd.plist, and insert the following Pools configuration under
> the Memcached dict:
>
> <key>Pools</key>
> <dict>
> <key>Default</key>
> <dict>
> <key>MemcacheSocket</key>
> <string></string>
> <key>ServerEnabled</key>
> <false/>
> <key>BindAddress</key>
> <string>127.0.0.1</string>
> <key>Port</key>
> <integer>11211</integer>
> </dict>
> </dict>
>
> Manually start memcached in verbose mode on 127.0.0.1:
> memcached -l 127.0.0.1 -vv
>
> Start calendar server, load a principal page:
> https://whatever:8443/principals/users/you
>
> As you log in, you should see stuff in the memcached window:
>
> <22 new auto-negotiating client connection
> 22: Client using the *ascii protocol*
> <22 get DIGESTCREDENTIALS:...
> >22 END
>
>
> Also try the following test script which sets and gets unicode
> strings. bytes. whatever they are :) In SVN mode, I run ./bin/python
> mctest.py from the SVN dir to make sure the interpreter has access to
> six and memcache. If you don't use SVN mode, and don't have these
> modules installed system-wide, edit PYTHONPATH to help your
> interpreter find these modules.
>
> #!/usr/bin/python
> # -*- coding: latin-1 -*-
> from __future__ import print_function
>
> import six
> from memcache import Client, SERVER_MAX_KEY_LENGTH,
> SERVER_MAX_VALUE_LENGTH
>
> servers = ["127.0.0.1:11211"]
> mc = Client(servers, debug=1)
>
> def setget(key, val):
> mc.set(key, val)
> newval = mc.get(key)
> print("key:", key)
> print("set:".rjust(8), val)
> print ("got:".rjust(8), newval, "\n")
>
> setget("ascii", "xyzzy")
>
> setget("unicode_1", six.u('\U0001f648'))
> setget("unicode_2", six.u('\u25c9'))
> setget("unicode_3", six.u('\u4f1a'))
> setget("unicode_4", six.u('dr\\xe9'))
>
> mc.disconnect_all()
>
>
>
> Output looks like:
>
> key: ascii
> set: xyzzy
> got: xyzzy
>
> key: unicode_1
> set: 🙈
> got: 🙈
>
> key: unicode_2
> set: ◉
> got: ◉
>
> key: unicode_3
> set: 会
> got: 会
>
> key: unicode_4
> set: dré
> got: dré
>
>
> ... and the memcached log confirms we're still in ascii mode:
>
> <25 new auto-negotiating client connection
> 25: Client using the ascii protocol
> <25 set ascii 0 0 5
> >25 STORED
> <25 get ascii
> >25 sending key ascii
> >25 END
> <25 set unicode_1 0 0 4
> >25 STORED
> <25 get unicode_1
> >25 sending key unicode_1
> >25 END
>
>
> -dre
Tried the experiment. Here is the output:
root at wheezy:/tmp# python test.py
key: ascii
set: xyzzy
got: xyzzy
key: unicode_1
set: 🙈
got: 🙈
key: unicode_2
set: ◉
got: ◉
key: unicode_3
set: 会
got: 会
key: unicode_4
set: dré
got: dré
and here is the memcached log:
<37 new auto-negotiating client connection
37: Client using the ascii protocol
<37 set ascii 0 0 5
>37 STORED
<37 get ascii
>37 sending key ascii
>37 END
<37 set unicode_1 0 0 4
>37 STORED
<37 get unicode_1
>37 sending key unicode_1
>37 END
<37 set unicode_2 0 0 3
>37 STORED
<37 get unicode_2
>37 sending key unicode_2
>37 END
<37 set unicode_3 0 0 3
>37 STORED
<37 get unicode_3
>37 sending key unicode_3
>37 END
<37 set unicode_4 0 0 4
>37 STORED
<37 get unicode_4
>37 sending key unicode_4
>37 END
<37 connection closed.
What next :)? I believe I could however safely go ahead and upload the
new calendarserver version as this bug does not seem to breaking any
functionality.
Thanks,
Rahul.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-dev/attachments/20160209/dd0a0c03/attachment.html>
More information about the calendarserver-dev
mailing list