ANN: Sync Gateway 1.0.2 update now available

59 views
Skip to first unread message

Jessica Liu

unread,
Aug 27, 2014, 5:18:05 PM8/27/14
to mobile-c...@googlegroups.com
Hi community, in addition to our recent patch release for Couchbase Lite iOS and Android, we have a 1.0.2 update for Sync Gateway that you can download today here: www.couchbase.com/download#cb-mobile

A major fix that was included was rectifying a continuous replication loop that occurred when a new user was manually added to a channel. This issue alongside some fixes concerning bucket shadowing, short passwords, and error handling, were addressed in 1.0.2. A full list highlighting the fixes going into 1.0.2 is available here: http://developer.couchbase.com/mobile/develop/references/sync-gateway/release-notes/1.0.2/index.html

Thank you.
- Jessica

Tim Carr

unread,
Aug 28, 2014, 9:21:46 AM8/28/14
to mobile-c...@googlegroups.com
Hi Jessica,

The 1.0.2 Couchbase-lite update broke our build. And it took me an hour to work out why :(
Somewhere between the 1.0.0 -> 1.0.2 update, Couchbase-lite started using DDLog from CocoaLumberjack. Unfortunately, because this is not listed as a Pod-level dependency, but provided directly in one of the Couchbase-lite frameworks, this creates a duplicate symbol at runtime:

objc[285]: Class DDLog is implemented in both /private/var/mobile/Containers/Bundle/Application/E6E25213-1BC1-4767-9BB2-0DE91DF06256/my.app/myapp and /private/var/mobile/Containers/Bundle/Application/E6E25213-1BC1-4767-9BB2-0DE91DF06256/my.app/myapp. One of the two will be used. Which one is undefined.

... and causes the app to crash as soon as DDLog is called.

Please don't define DDLog* symbols directly in Couchbase frameworks -- instead, update your .podspec to depend upon the CocoaLumberjack pod.

thanks
Tim

Jens Alfke

unread,
Aug 28, 2014, 12:20:18 PM8/28/14
to mobile-c...@googlegroups.com
On Aug 28, 2014, at 6:21 AM, Tim Carr <xap...@gmail.com> wrote:
The 1.0.2 Couchbase-lite update broke our build. And it took me an hour to work out why :(

Tim, please don't reply to announcement posts with bug reports. Instead please start a new thread.

Somewhere between the 1.0.0 -> 1.0.2 update, Couchbase-lite started using DDLog from CocoaLumberjack.

Actually it's always used DDLog. Or rather, it's always used CocoaHTTPServer, which contains classes from CocoaLumberjack including DDLog. And none of that code has changed in a long time.

... and causes the app to crash as soon as DDLog is called.

It sounds like your app and CBL are using different and incompatible versions of DDLog.

Please don't define DDLog* symbols directly in Couchbase frameworks -- instead, update your .podspec to depend upon the CocoaLumberjack pod.

We don't use CocoaPods in our build process and we don't officially support CocoaPods. The CBL podspec was created by a third party as a convenience for developers who build their apps with CocoaPods.

I've been very skeptical of CocoaPods in the past — version 1 had a methodology that was too simplistic for complex libraries like CBL — but I recognize that it's gotten more sophisticated over time. And I know very well that Objective-C has issues (like a flat runtime namespace for classes) that lead to collisions like this, and maybe CocoaPods is the best solution we have now for dealing with those dependency problems.

I don't know if your proposed solution would have eliminated this problem. More likely it would have just produced a more intelligible error, with the pod tool reporting that your app and CBL require incompatible versions of DDLog. (But at least that would have saved you some debugging time.) Versioning is always a problem. In this case, we're probably still using an old version of CocoaHTTPServer, which in turn uses an old version of DDLog. But on the other hand I'm wary of continually updating these dependencies, since any change to that library might introduce changes that cause regressions in CBL.

—Jens
Reply all
Reply to author
Forward
0 new messages