なぜか複数のGUID
昨日の件を,さらに追求.
例によってAppleのdiscussion listは役に立たない.あれだけ膨大な英単語が並んでいて,答えが滅多にないというのもある意味驚愕的だと思う.
最初,
2009-05-20 18:30:21+0900 [-] [caldav-8009] [-] if record.shortName in disabledNames or record.guid in disabledGUIDs: 2009-05-20 18:30:21+0900 [-] [caldav-8009] [-] TypeError: list objects are unhashable
昨日のログから,まずはdisabledNames か disabledGUIDsがイカレているかと思って30分ほど費やす.
しかし,コードを眺めてみても,どうにもおかしい気がしない.下記のようにしてみた.
logging.warn("record.shortName %s" % record.shortName); logging.warn("record.guid %s" % record.guid);
実行してみる.ログは…(一部伏字)
2009-05-21 10:44:33+0900 [-] [caldav-8010] [-] record.shortName accessibility 2009-05-21 10:44:33+0900 [-] [caldav-8010] [-] record.guid ABCDEFAB-CDEF-ABCD-EFAB-wwwwwwwwwwww 2009-05-21 10:44:33+0900 [-] [caldav-8010] [-] record.shortName admin 2009-05-21 10:44:33+0900 [-] [caldav-8010] [-] record.guid ['15D7AC6D-620C-4DBC-975D-yyyyyyyyyy', 'ABCDEFAB-CDEF-ABCD-EFAB-CDEFaaaaaaaa']
なんだってー!!!
安直
とりあえずブートさせるのだ.カレンダーは会社の生命線なのだ.ということでbrute-forcedなパッチ.
if record.shortName == 'admin': record.guid = 'ABCDEFAB-CDEF-ABCD-EFAB-CDEFaaaaaaaaa' if record.shortName == 'staff': record.guid = 'ABCDEFAB-CDEF-ABCD-EFAB-CDEFbbbbbbbb' # Check for disabled items if record.shortName in disabledNames or record.guid in disabledGUIDs:
…良い子はマネしてはいけないと思います.ダメです.
より真っ当な(?)解決
動きゃいいんだよ動きゃ.でも何か気持ち悪い.
そういえばこの手のGUID不整合って以前あったような気もするなぁ….で,調べてみた.
$ sudo vi /var/db/dslocal/nodes/Default/groups/admin.plist >|xml| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>generateduid</key> <array> <string>15D7AC6D-620C-4DBC-975D-yyyyyyyyyy</string> <string>ABCDEFAB-CDEF-ABCD-EFAB-CDEFaaaaaaaa</string>
ふむるむなるほど.問題のユーザは,こんな風に2行になっているわけね.
で,2行目を削除し,さきほどの劣悪パッチを取り去る.解決フレーバー.
抜本的解決かどうかは,知らない.
結局午前中が
カレンダーサーバのお守りで終わっちゃったよ….