[JCBC-276] Client does not detect silently dying Streaming Node Created: 20/Mar/13 Updated: 20/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | library |
| Affects Version/s: | 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4 |
| Fix Version/s: | 1.1.7 |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Michael Nitschinger | Assignee: | Michael Nitschinger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
When connected to the EPT/streaming node and the node is "frozen" or dies silently otherwise (doesn't force the closing of the chunked socket), the connection stays established.
This can easily be reproduced outside of the client by connecting the browser to the streaming URL and then freezing a VM. The browser will still "spin" and wait for new chunks to come up. The proposed solution is to have a netty handler in place that raises a exception when there is not traffic for N number of seconds (like 30) over the streaming connection. After this is detected, we have two possibilities: - reconnect completely, but this involves lots of overhead every 30 seconds. - send a HTTP HEAD packet and only if this doesnt work out reconnect. This means in the normal case we only have a HTTP HEAD request sent every 30 seconds, not much overhead. If this fails, we then trigger the reconfigure. Netty has a ReadTimeoutHandler to help with this. My POC already kinda works, I just need to find a way to properly distinguish the HEAD response on the ResponseHandler from regular chunks that arrive from the same channel. |
| Comments |
| Comment by Matt Ingenthron [ 20/Mar/13 ] |
| I had fixed this with couchbase buckets and we test for this in SDKQE. Is this possibly isolated to memcached buckets. |
| Comment by Michael Nitschinger [ 21/Mar/13 ] |
| Actually, this has been discovered while using Couchbase buckets. Let's chat about this, but I think thats a different issue and not related to it. |
| Comment by Matt Ingenthron [ 21/Mar/13 ] |
|
Sure, the solution previously was to have that threshold if we were getting unexpected failures. Once we pass that threshold, we'd try to re-subscribe. I'm not opposed to a heartbeat, but I don't think the HTTP HEAD is good, since the mochiweb erlang implementation is effectively the same as a GET. I'll reach you and chat through it. |
| Comment by Michael Nitschinger [ 21/Mar/13 ] |
|
Okay after talking this through with Matt, I reran the script to see if the proposed solution (increasing ops/s) fixed the problem. Interestingly, it turns out when doing set/get's it never hits our anticipated codepath but instead the get operations just time out, the threshold never gets increased and nothing happens. This is something we need to reinvestigate. |
[JCBC-229] Find a way to proper test JCBC-227 Created: 01/Feb/13 Updated: 25/Feb/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | .next |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Michael Nitschinger | Assignee: | Deepti Dawar |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Description |
|
The issue fixed in jcbc-227 needs proper testing. Can you please add tests for this either as a unit test, or integrate it into sdkd? I'm not sure where it fits - what do you think?
|
| Comments |
| Comment by Deepti Dawar [ 01/Feb/13 ] |
|
Alright, I can add unit/integration test for the same. |
| Comment by Deepti Dawar [ 11/Feb/13 ] |
| http://review.couchbase.org/#/c/24520/ |
| Comment by Michael Nitschinger [ 12/Feb/13 ] |
| Please only close once the change has been merged in, thanks. |
| Comment by Deepti Dawar [ 14/Feb/13 ] |
| http://review.couchbase.org/#/c/24520/6 |
[JCBC-303] javadoc builds must include spymemcached Created: 14/May/13 Updated: 15/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | infrastructure |
| Affects Version/s: | 1.1.6 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Phil Labee | Assignee: | Phil Labee |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
Current javadoc build process does not include the spymemcached docs, which were included in previous releases. The documentation:
http://hub.internal.couchbase.com/confluence/display/techpubs/Using+Existing+Docs+System+%28WIP%29 does not mention how to include, nor is there evidence of how it was done before. Need to have: * a process that includes correct third-party documentation, when required. * one that is not tied to a particular host * is fully documented |
| Comments |
| Comment by Phil Labee [ 15/May/13 ] |
|
I modified the couchbase-java-client/build.xml file to also use the source files under ../spymemcached/src/main/java/ for generating javadocs, but I'm getting errors: package org.apache.log4j does not exist package org.springframework.beans.factory does not exist so it looks like a classpath issue. |
| Comment by Michael Nitschinger [ 15/May/13 ] |
|
Hi Phil, normally log4j and spring beans are configured as "provided", so you should not need them during runtime in spy. maybe just run "ant jar" once in the directory so it fetches the dependencies in the right directories? |
[JCBC-189] Views having odd timeout issues on some clusters Created: 18/Dec/12 Updated: 20/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | library |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.7 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Michael Nitschinger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||
| Issue Links: |
|
||||||||||||
| Description |
|
We're seeing really strange timeout issues which seem to affect only this specific cluster and only in terms of views. We've re-installed this cluster time and time again, and we've had similar configurations run successfully as well.
More details in comment.. |
| Comments |
| Comment by Mark Nunberg [ 18/Dec/12 ] |
| Just try to do this with a simple java script (i.e. connect and query the view) |
| Comment by Deepti Dawar [ 20/Dec/12 ] |
|
This issue persists when the view retrieval is ran from standalone java program as well.
I tried this on both the VMs - 10.3.3.203, 10.3.3.209. |
| Comment by Deepti Dawar [ 20/Dec/12 ] |
| Its working fine for server deployed on localhost. |
| Comment by Matt Ingenthron [ 02/Jan/13 ] |
| Michael: found out today that this is a large issue for SDKQE. Can you have a quick look at this in the next day? You may find the underlying issue. |
| Comment by Michael Nitschinger [ 03/Jan/13 ] |
| Please pass me the script as commented and then (or if you can't) please assign it back to me! Thanks |
| Comment by Michael Nitschinger [ 18/Jan/13 ] |
|
According to the posted logs, it looks like debugging was not turned on. Can you please run this again with debugging turned on? To get the full logs to STDOUT, use this before initializing the CouchbaseClient in The App:
// Tell spy to use the SunLogger Properties systemProperties = System.getProperties(); systemProperties.put("net.spy.log.LoggerImpl", "net.spy.memcached.compat.log.SunLogger"); System.setProperties(systemProperties); Logger.getLogger("com.couchbase.client").setLevel(Level.FINEST); //get the top Logger Logger topLogger = java.util.logging.Logger.getLogger(""); // Handler for console (reuse it if it already exists) Handler consoleHandler = null; //see if there is already a console handler for (Handler handler : topLogger.getHandlers()) { if (handler instanceof ConsoleHandler) { //found the console handler consoleHandler = handler; break; } } if (consoleHandler == null) { //there was no console handler found, create a new one consoleHandler = new ConsoleHandler(); topLogger.addHandler(consoleHandler); } //set the console handler to fine: consoleHandler.setLevel(java.util.logging.Level.FINEST); Would be great if we can get all the output so we can investigate where the timeouts come from. I'm sure with a debug log it will be much easier. Thanks! |
| Comment by Mark Nunberg [ 23/Jan/13 ] |
|
So this bug isn't such an "unknown" anymore, and has exposed itself in 1.1.0 as well as 1.1.1 and isn't limited to particular clusters - (it just seems that some clusters are more likely than others to trigger this bug).
However this still needs a lot of care and analysis |
| Comment by Michael Nitschinger [ 01/Feb/13 ] |
| This is "kinda" blocker. |
[JCBC-244] Sample Application : fix the welcome file and gitignore Created: 12/Feb/13 Updated: 02/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Minor |
| Reporter: | Tug Grall | Assignee: | Tug Grall |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
1- the Welcome auto redirect in Jetty does not work correctly.
2- Update the gitignore to handle IDE and OS |
| Comments |
| Comment by Michael Nitschinger [ 26/Mar/13 ] |
| Hey tug, is this still ongoing? |
| Comment by Michael Nitschinger [ 15/Apr/13 ] |
| Tug, did you fix this recently? |
[JCBC-161] Remove Duplication in Observe checks Created: 03/Dec/12 Updated: 20/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | library |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.7 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Michael Nitschinger | Assignee: | Michael Nitschinger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The fix for |
| Comments |
| Comment by Michael Nitschinger [ 13/May/13 ] |
| http://review.couchbase.org/#/c/26261/ |
| Comment by Michael Nitschinger [ 13/May/13 ] |
| Note that the new mechanism was implemented in a different changeset, and by now we had both in place behind one after another. since the other one was more accurate, the general one will be removed in favor of the other one. |
[JCBC-76] Replica read command Created: 12/Jul/12 Updated: 20/May/13 |
|
| Status: | In Progress |
| Project: | Couchbase Java Client |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.7 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Matt Ingenthron | Assignee: | Michael Nitschinger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Implement a simple replica read command
|
| Comments |
| Comment by Matt Ingenthron [ 29/Aug/12 ] |
| See http://www.couchbase.com/wiki/display/couchbase/Replica+Read for details on implementation. |
| Comment by Raghavan Srinivas [ 14/Sep/12 ] |
| This will be experimental functionality for 1.1 |
| Comment by Michael Nitschinger [ 31/Jan/13 ] |
| Moving to .next until it is decided if this will make it into 1.2 or not. |
| Comment by Matt Ingenthron [ 14/Feb/13 ] |
| Michael: this has come up again recently so if possible we'd like to get it in a build for testing soon and see about adding it as experimental, if not supported, in 1.1.3. |