working with pure java and couchbase-lite.
running following code:
Manager manager = new Manager(new JavaContext(“data”), Manager.DEFAULT_OPTIONS);
Manager.enableLogging(“Sync”, Log.VERBOSE);
final Database db = manager.getDatabase(“sync_gateway”);
on line push.start()
it through exception:
Jun 11, 2015 8:46:23 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: RemoteRequest.run() exception: %s
java.lang.ArrayIndexOutOfBoundsException: 1
at com.couchbase.lite.support.RemoteRequest.preemptivelySetAuthCredentials(RemoteRequest.java:281)
at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:96)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Jun 11, 2015 8:48:02 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: RemoteRequest.run() exception: %s
java.lang.ArrayIndexOutOfBoundsException: 1
at com.couchbase.lite.support.RemoteRequest.preemptivelySetAuthCredentials(RemoteRequest.java:281)
at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:96)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Jun 11, 2015 8:48:11 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: RemoteRequest.run() exception: %s
java.lang.ArrayIndexOutOfBoundsException: 1
at com.couchbase.lite.support.RemoteRequest.preemptivelySetAuthCredentials(RemoteRequest.java:281)
at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:96)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
I started my sync_gateway, and I want to sync my couchbase lite to couchbase full node.
I started sync_gateway with ip of couchbase full node. now as I know, I only need to run this couchbase lite replication code and my data of couchbase lite will be copied to couchbase full node.
kindly help.
This is Couchbase Lite bug. In the your code, you set empty string for password.
At Line 279, “GUEST:”.split(“:”) returns [“GUEST”]
At Line 281, userInfoElements[1] causes ArrayIndexOutOfBoundsException.
As temporary solution, can you use non-empty string for password?
One additional note - the GUEST user in Sync Gateway is used for anonymous authentication. I wouldn’t expect it to be used when authenticating via basic auth.
If you plan to use GUEST account of sync_gateway, you don’t need to set Authenticator. Simplest solution is just comment out push.setAuthenticator(auth) and pull.setAuthenticator(pull).
my couchbase server full node is running on localhost:8091. containing a bucket with name "sync_gateway"
I run my sync_gateway like : sync_gateway -url http://localhost:8091
it started on port 4984.
as you directed me to comment push.setAuthenticator(auth) and pull.setAuthenticator(pull).
I did in the same way . that’s good that there is no exception at this time.
my netbeans console the following output:
Jun 11, 2015 11:29:37 PM com.couchbase.lite.util.SystemLogger w
WARNING: Sync: com.couchbase.lite.replicator.ReplicationInternal$9@16818376: error getting remote checkpoint
Jun 11, 2015 11:29:37 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: com.couchbase.lite.replicator.PusherInternal@7ee19158: Progress: set error = org.apache.http.client.HttpResponseException: Unauthorized
Jun 11, 2015 11:29:37 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: PusherInternal stopGraceful.run() finished
but there replication did not take place there is no data in sync_gateway bucket in couchase server full node.
What version of Sync Gateway are you running? If you’re running 1.1.0, things should work for you as-is. If you’re running an earlier build, though, starting sync gateway as described doesn’t enable the GUEST user by default, which would explain the ‘unauthorized’ message.
If you’re on something earlier than 1.1.0, the ‘cb_admin_party.json’ config file included in the /examples folder in the Sync Gateway distribution would work for your scenario.
Right - the default config used by 1.0.4 (used if you don’t specify a config file at startup) doesn’t include anonymous access. If you want to enable anonymous access, you’ll need to add the GUEST user to your config. Since you’re targeting a local Couchbase Server, I think you could use the config file from https://github.com/couchbase/sync_gateway/blob/master/examples/basic-couchbase-bucket.json as a starting point, and just update the db and/or bucket name to match the Couchbase Server bucket you’re targeting.
running sync_gateway through config.json file, as it started with no error. I run code, code run correctly with no error. and shows following output in netbeans console :
Jun 12, 2015 11:52:31 AM com.couchbase.lite.util.SystemLogger w
WARNING: Sync: Error converting lastSequence: null to long. Using 0
Jun 12, 2015 11:52:31 AM com.couchbase.lite.util.SystemLogger e
SEVERE: RemoteRequest: Got error status: 404 for http://localhost:4984/sync_gateway/_revs_diff. Reason: Not Found
Jun 12, 2015 11:52:31 AM com.couchbase.lite.util.SystemLogger e
SEVERE: Sync: com.couchbase.lite.replicator.PusherInternal@144745: Progress: set error = org.apache.http.client.HttpResponseException: Not Found
and sync gateway shows following output:
11:54:53.834411 HTTP: #004: GET /sync_gateway/
11:54:53.835412 HTTP: #004: --> 404 no such database “sync_gateway” (11.1 m
s)
I have already created bucket with name sync_gateway on couchbase full node.
why sync_gateway is showing this error?
Is I have to create database on sync_gateway like that ?
yes I have changed it to “sync_gateway”.
after changing it I am facing the above issue.
I am working on it, for last 1 month, and getting a lot of issues.
I hope, after solving this issue, I will be able to sync my couchbase lite with coushbase full node.
one other thing, when I run sync gateway , with command “sync_gateway” and I check url “http://localhost:4985/sync_gateway/_user/GUEST” this shows me following output :
{“name”:“GUEST”,“all_channels”:[],“disabled”:true}
and when I run sync gateway with “sync_gateway config.json"
and check url: http://localhost:4985/sync_gateway/_user/GUEST” this shows me following output :
{“error”:“not_found”,“reason”:“no such database “sync_gateway””}
The ‘not found - no such database’ means that you don’t have the database naming correct in the config file you’re using. If you can post the config file you’re using to a gist, I’ll take a look.