[RCBC-177] Consistently recieving no more bootstrap providers remain under a small load Created: 02/Jun/14  Updated: 17/Jun/14  Resolved: 17/Jun/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.3.7
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Stephen von Takach Assignee: Sergey Avseyev
Resolution: Incomplete Votes: 0
Labels: windows
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Windows Server 2012 R2
Ruby 1.9.3
Config:
production:
  hostname: <%= ENV['COUCHBASE_HOST'] %>
  port: <%= ENV['COUCHBASE_PORT'] %>
  username: <%= ENV['COUCHBASE_USERNAME'] %>
  password: <%= ENV['COUCHBASE_PASSWORD'] %>
  pool: <%= ENV['COUCHBASE_POOL'] %>
  bucket: <%= ENV['COUCHBASE_BUCKET'] %>

Attachments: File couchbase-1.3.9.lcb2.3.1.4-x64-mingw32.gem     File couchbase-1.3.9.lcb2.3.1.4-x86-mingw32.gem    

 Description   
Using defaults to connect to a two server cluster and performing queries in a thread pool
As soon as there are a few concurrent requests some of them fail with: No more bootstrap providers remain (error=0x17)

My work around was to revert to using gem version 1.3.6 which works well on the same workloads
I noticed there was some changes to the bootstrap configuration between versions 1.3.6 and 1.3.7


 Comments   
Comment by Sergey Avseyev [ 10/Jun/14 ]
Could you also post libcouchbase version?

> Couchbase.libcouchbase_version
Comment by Sergey Avseyev [ 10/Jun/14 ]
I've built the gem with the most recent libcouchbase, where this issues might be fixed already. Could you try it?




[RCBC-176] Connection errors in em-synchrony context aborts the client Created: 29/May/14  Updated: 29/May/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
There is a problem when the library used in em-synchrony context and receives error using global error handler. The library can neither safely throw and exception in this case, nor execute user-specified function. The example of code is below

require 'couchbase'
require 'em-synchrony'

EM.epoll
EM.synchrony do
  begin
    Couchbase::Bucket.new(engine: :eventmachine)
  ensure
    puts "connected"
  end
  EM.stop
end





[RCBC-174] Bucket: synchronous get Created: 01/May/14  Updated: 01/May/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Synchronously fetch value from the server




[RCBC-173] Cluster: initialize and connect instance Created: 01/May/14  Updated: 01/May/14  Resolved: 01/May/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0.alpha
Security Level: Public

Type: New Feature Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[RCBC-172] jruby engine skeleton Created: 01/May/14  Updated: 01/May/14  Resolved: 01/May/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0.alpha
Security Level: Public

Type: New Feature Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provide build environment for java-specific extension




[RCBC-171] Publish docs for Ruby SDK June 2014 release Created: 22/Apr/14  Updated: 11/Jun/14  Resolved: 11/Jun/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Critical
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 1h
Time Spent: Not Specified
Original Estimate: 1h

Attachments: Zip Archive couchbase-ruby-client-1.3.8.zip    

 Comments   
Comment by Amy Kurtzman [ 28/May/14 ]
No May release, change ticket to June 2014 release
Comment by Sergey Avseyev [ 11/Jun/14 ]
Docs in attachment, release notes here:

https://github.com/couchbase/couchbase-ruby-client/blob/master/RELEASE_NOTES.markdown#138-2014-06-11




[RCBC-169] ConnectionDescriptor::_WriteOutboundData(): Assertion `nbytes > 0' failed. Created: 31/Mar/14  Updated: 31/Mar/14

Status: Open
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
ruby: ed.cpp:1025: void ConnectionDescriptor::_WriteOutboundData(): Assertion `nbytes > 0' failed.

Worth noticing that error happens while couchbase had rebalance.




[RCBC-168] DNS SRV helper for connection constructor Created: 26/Mar/14  Updated: 18/Apr/14  Resolved: 18/Apr/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.7
Security Level: Public

Type: New Feature Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/wiki/display/couchbase/Alternative+Bootstrap+with+DNS+SRV

 Comments   
Comment by Sergey Avseyev [ 18/Apr/14 ]
http://review.couchbase.org/36009




[RCBC-167] Add couchbase cluster compatibility to documentation Created: 25/Mar/14  Updated: 21/Apr/14

Status: Open
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: .next
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Gantt: finish-start
has to be done after JCBC-438 Add table for 1.8, 2.x and 3.x compat... Open

 Description   
We should probably specify for this given major.minor of the SDK, one of three things for Couchbase Cluster releases:
- unsupported
- supported
- supports all features

These might be an 'x', '—' and "✓" in a table, or whatever Amy comes up with.

This is, in part, planning for 3.0 including beta.

This should be based on the work done in JCBC-438, so it's blocked by that issue.

 Comments   
Comment by Matt Ingenthron [ 21/Apr/14 ]
Sergey: I saw you moved this to 2.0. I think we'll need this prior to then. So it doesn't get lost, can you set up the intermediary versions?
Comment by Sergey Avseyev [ 21/Apr/14 ]
Moved to virtual version .next




[RCBC-166] Crash with eventmachine backend Created: 20/Mar/14  Updated: 20/Mar/14  Resolved: 20/Mar/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.3.6
Fix Version/s: 1.3.7
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ruby 2.0.0p353
eventmachine (1.0.3) 2ed44025e35518898c8589a610515e54a7b40c44
em-synchrony (1.0.3) ad17ce925fe49c45e1b5f713910e24d4798ae29c
couchbase (1.3.6)
  

Attachments: File Gemfile     File test.rb    

 Description   
ruby: ed.cpp:927: virtual void ConnectionDescriptor::Write(): Assertion `!bWatchOnly' failed.

#0 0x00007fd28b6bbc39 in __GI_raise (sig=sig@entry=0x6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007fd28b6bd348 in __GI_abort () at abort.c:89
#2 0x00007fd28b6b4b96 in __assert_fail_base (fmt=0x7fd28b801d88 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7fd28177eb26 "!bWatchOnly", file=file@entry=0x7fd28177e9a8 "ed.cpp", line=line@entry=0x3a7, function=function@entry=0x7fd28177edc0 <ConnectionDescriptor::Write()::__PRETTY_FUNCTION__> "virtual void ConnectionDescriptor::Write()") at assert.c:92
#3 0x00007fd28b6b4c42 in __GI___assert_fail (assertion=0x7fd28177eb26 "!bWatchOnly", file=0x7fd28177e9a8 "ed.cpp", line=0x3a7, function=0x7fd28177edc0 <ConnectionDescriptor::Write()::__PRETTY_FUNCTION__> "virtual void ConnectionDescriptor::Write()") at assert.c:101
#4 0x00007fd28177799d in ConnectionDescriptor::Write() () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#5 0x00007fd281764b18 in EventMachine_t::_RunEpollOnce() () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#6 0x00007fd28176489d in EventMachine_t::_RunOnce() () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#7 0x00007fd281764808 in EventMachine_t::Run() () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#8 0x00007fd281762262 in evma_run_machine () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#9 0x00007fd28175f42c in t_run_machine_without_threads(unsigned long) () from /home/avsej/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/bundler/gems/eventmachine-2ed44025e355/lib/rubyeventmachine.so
#10 0x00007fd28c9af4b2 in vm_call_cfunc_with_frame (th=th@entry=0x7fd28defb590, reg_cfp=reg_cfp@entry=0x7fd28c799ed0, ci=ci@entry=0x7fd28ef08980) at vm_insnhelper.c:1474
#11 0x00007fd28c9afa9e in vm_call_cfunc (ci=0x7fd28ef08980, reg_cfp=0x7fd28c799ed0, th=0x7fd28defb590) at vm_insnhelper.c:1564
#12 vm_call_method (th=0x7fd28defb590, cfp=0x7fd28c799ed0, ci=0x7fd28ef08980) at vm_insnhelper.c:1758
#13 0x00007fd28c9a9254 in vm_exec_core (th=th@entry=0x7fd28defb590, initial=initial@entry=0x0) at insns.def:1017
#14 0x00007fd28c99d43b in vm_exec (th=th@entry=0x7fd28defb590) at vm.c:1201
#15 0x00007fd28c99e704 in rb_iseq_eval_main (iseqval=iseqval@entry=0x7fd28ede6a08) at vm.c:1449
#16 0x00007fd28c849d2a in ruby_exec_internal (n=0x7fd28ede6a08) at eval.c:250
#17 0x00007fd28c84dc4d in ruby_exec_node (n=0x7fd28ede6a08) at eval.c:315
#18 ruby_run_node (n=<optimized out>) at eval.c:307


 Comments   
Comment by Sergey Avseyev [ 20/Mar/14 ]
http://review.couchbase.org/34738
Comment by Sergey Avseyev [ 20/Mar/14 ]
Thanks buger from community site for reporting the issue http://www.couchbase.com/communities/q-and-a/error-while-using-ruby-sdk-eventmachine




[RCBC-165] Publish docs for Ruby SDK April 2014 release Created: 27/Feb/14  Updated: 22/Apr/14  Due: 04/Mar/14  Resolved: 22/Apr/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Critical
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Zip Archive couchbase-ruby-client-1.3.7.zip    

 Description   
Edit and publish guide and autodocs.

 Comments   
Comment by Sergey Avseyev [ 21/Apr/14 ]
Release notes: https://github.com/couchbase/couchbase-ruby-client/blob/master/RELEASE_NOTES.markdown#137-2014-04-18




[RCBC-164] add discussion of timeout accuracy and implementation Created: 27/Feb/14  Updated: 27/Feb/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-338 add discussion of timeout accuracy an... Resolved

 Description   
Since our timeouts are only as accurate as the underlying APIs/subsystems we use, we should document this for our users so they can plan accordingly. For instance, if processes aren't scheduled for a long period of time owing to CPU or memory contention... or in some cases IO doesn't happen for a long time and our timeout is IO event driven, we may not timeout to the application until later.





[RCBC-163] Edit release notes for Ruby 1.3.5 Created: 05/Feb/14  Updated: 05/Feb/14  Resolved: 05/Feb/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[RCBC-162] Upload autodocs for 1.3.5 release Created: 05/Feb/14  Updated: 06/Feb/14  Resolved: 06/Feb/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Zip Archive couchbase-ruby-client-1.3.5.zip    




[RCBC-161] :format set as :marshal generates Couchbase::Error::ValueFormat Created: 15/Jan/14  Updated: 16/Jan/14  Resolved: 16/Jan/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
If the :format is set as :marshal in get method the Couchbase::Error::ValueFormat error is generated regradless of the type of value: numerical, string or JSON object.


   
client = Couchbase.connect("http://localhost:8091")
print client.set("catalog","journal")
print client.get("catalog",:format => :marshal)

#print client.set("3", 1)
#print client.get("3",:format => :marshal)

 Comments   
Comment by Sergey Avseyev [ 16/Jan/14 ]
This is not a bug

What behaviour do you expect?

When you don't specify format, it will use default transcoder class (you can find out using Couchbase::Bucket#transcoder method). In your example, it is easy to see what going on. Look at this IRB session

1.9.3p484 (main):001:0> require 'couchbase'
true
1.9.3p484 (main):002:0> client = Couchbase.connect
#<Couchbase::Bucket:0x00000001fd88a0 "http://localhost:8091/pools/default/buckets/default/" transcoder=Couchbase::Transcoder::Document, default_flags=0x0, quiet=false, connected=true, timeout=2500000>
1.9.3p484 (main):003:0> client.transcoder
Couchbase::Transcoder::Document
1.9.3p484 (main):004:0> client.set("catalog", "journal")
2508196931084222464
1.9.3p484 (main):005:0> client.get("catalog", :transcoder => nil)
"\"journal\""
1.9.3p484 (main):006:0> client.set("catalog", "journal", :format => :marshal)
6806784347694170112
1.9.3p484 (main):007:0> client.get("catalog", :transcoder => nil)
"\u0004\bI\"\fjournal\u0006:\u0006ET"
Comment by deepak vohra [ 16/Jan/14 ]
What is the :marshal format for? No example of :marshal is provided?
Comment by Sergey Avseyev [ 16/Jan/14 ]
:format option is legacy shortcut for specifying transcoder, which in charge of serializing values before putting them on wires and deserialise before passing back to user. in particular :marshal sets 'transcoder' attribute of connection to Couchbase::Transcoder::Marshal which is defined here https://github.com/couchbase/couchbase-ruby-client/blob/master/lib/couchbase/transcoder.rb#L74-L94

Using transcoders is more flexible but sometimes more verbose way to describe the value encoding. There only three formats supported: marshal (ruby's Marshal from stdlib), document (JSON) and plain (no transformations, but setting flags). In examples directory you can find user-defined transcoder, which performs compression (you can stack your transcoders) https://github.com/couchbase/couchbase-ruby-client/tree/master/examples/transcoders




[RCBC-160] increment method increments negative value, contrary to method description Created: 15/Jan/14  Updated: 17/Jan/14  Resolved: 16/Jan/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.5
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The method description of increment indicates:
"Couchbase Server stores numbers as unsigned numbers, therefore if you try to increment an existing negative number, it will cause an integer overflow and return a non-logical numeric result. "

But, if the increment makes the value a positive number the increment is applied and integer overflow does not occur. The integer overflow occurs only if after the increment the value is still negative.

Example does not generate error:
require 'rubygems'
require 'couchbase'
client = Couchbase.connect("http://localhost:8091")
client.set("2",-1)
client.increment("2",2)


Example generates error:
require 'rubygems'
require 'couchbase'
client = Couchbase.connect("http://localhost:8091")
client.set("2",-3)
client.increment("2",2)


 Comments   
Comment by Sergey Avseyev [ 16/Jan/14 ]
It is not a bug again. It just happened to look like working in some cases. Look at the patch here, where I have updated the ruby doc on this topic with the example.

http://review.couchbase.org/#/c/32543/1/ext/couchbase_ext/arithmetic.c

And yes, it should be a bug in the docs, but I didn't managed to find the same phrase in ruby docs. Could you give a link where you found it?
Comment by deepak vohra [ 16/Jan/14 ]
http://www.couchbase.com/docs/couchbase-sdk-ruby-1.0/couchbase-sdk-ruby-update-incr.html
Comment by Sergey Avseyev [ 16/Jan/14 ]
I recommend you to use the docs, generated from the library sources. The are located here http://www.couchbase.com/autodocs/

Also you can find docs from the rubygems site: http://rubygems.org/gems/couchbase
Comment by deepak vohra [ 16/Jan/14 ]
What is the difference between "# but it might look like working" and actually getting implemented?

The value output in subsequent get is accurate.

Or, is it the actual number being stored not being the number being retrieved with get?
Comment by Sergey Avseyev [ 17/Jan/14 ]
I mean, that what you are saying "generates error" is not an error at all. Just 64-bit integer wraps. Consider the following example

1.9.3p484 (main):001:0> require 'rubygems'
false
1.9.3p484 (main):002:0> require 'couchbase'
true
1.9.3p484 (main):003:0> client = Couchbase.connect("http://localhost:8091")
#<Couchbase::Bucket:0x000000014beeb0 "http://localhost:8091/pools/default/buckets/default/" transcoder=Couchbase::Transcoder::Document, default_flags=0x0, quiet=false, connected=true, timeout=2500000>
1.9.3p484 (main):004:0> client.set("2",-3)
11832122541421297664
1.9.3p484 (main):005:0> client.increment("2",2)
18446744073709551615
1.9.3p484 (main):006:0> client.get("2")
18446744073709551615
1.9.3p484 (main):007:0> client.increment("2",1)
0
1.9.3p484 (main):008:0> client.increment("2",1)
1

Do you see that it shows you "that garbage without any sense" just because you are incrementing not enough (in your first example, you have chosen the value bigger that absolute value of the number stored on the server"

The key point is that the server is storing the ascii representation of the number, this is why you can put negative number via set. But during increment it parse the number as signed 64bit integer and store into unsigned 64bit integer
Comment by deepak vohra [ 17/Jan/14 ]
Why does the PHP-equivalent method increment does not return the unsigned 64bit integer?

With the PHP Client library the following increment returns -4.

echo $cb->set("5", -5); //CAS value 10388951051056250880
   
echo $cb->increment("5", 1);//-4

But, the equivalent in Ruby returns the unsigned 64bit integer.

print client.set("5",-5) //CAS value 15131633266817368064
 print "\n<br>";
print client.increment("5",1) //18446744073709551612

Is the Ruby Client not applying the required conversion from the stored unsigned 64bit integer to the negative number?
 
Comment by Sergey Avseyev [ 17/Jan/14 ]
because php client returns you signed values and doesn't use uint64_t at all. ruby version gives you true unsigned value, as the server see it. There is no integer overflow in ruby actually. The numbers limited by the machine RAM only
Comment by deepak vohra [ 17/Jan/14 ]
Updated:
Is the Ruby Client not applying the required conversion from the stored unsigned 64bit integer to the signed value?

Should the statement about integer overflow be removed?
Comment by Sergey Avseyev [ 17/Jan/14 ]
the overflow still exists on the server. I just said that in ruby you can represent large numbers transparently

2.2.0p-1 (main):005:0> client.set("foo", -2)
8708394884148625408
2.2.0p-1 (main):006:0> client.incr("foo").class
Bignum
2.2.0p-1 (main):007:0> client.incr("foo").class
Fixnum

you see, it was expanded UINT64_MAX into Bignum, because it doesn't fit Fixnum on my computer, and then when I've incremented it twice it can fit Fixnum again.
Comment by deepak vohra [ 17/Jan/14 ]
The PHP client also stores the incremented value as unsigned 64bit integer and not the actual signed value, but returns the signed value.




[RCBC-159] undefined method views Created: 12/Jan/14  Updated: 15/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.5
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
For a design document "dev_catalog" and view "catalog_view" error
"undefined method views" is generated.
"undefined method catalog_view" is also generated.

ddoc = client.design_docs["dev_catalog"]
ddoc.views
  ddoc.catalog_view.each do |row|
  puts row.key
  puts row.value
  puts row.id
  puts row.doc
end

The ruby client version is 1.3.4

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
development views are visible only in development environment. In current release there is issue with setting environment. I've fixed it in this patch http://review.couchbase.org/32318

Meanwhile, you can use this simple workaround to query development views

    require 'couchbase'
    
    class Couchbase::Bucket
      alias old_initialize initialize
      def initialize(*args)
        options = args.last
        if options.is_a?(Hash) && options[:environment]
          self.class.send(:define_method, :environment) do
            return options[:environment]
          end
        end
        old_initialize(*args)
      end
    end
    
    client = Couchbase::Bucket.new(:environment => :development)
    puts client.design_docs.inspect
Comment by deepak vohra [ 13/Jan/14 ]
Would the issue be fixed in next version or release? Thanks Sergey.
Comment by Sergey Avseyev [ 13/Jan/14 ]
yeah. it is on master branch already. and will be released in the first days of february
Comment by Sergey Avseyev [ 13/Jan/14 ]
https://github.com/couchbase/couchbase-ruby-client/commit/43cd9de7b9cd2c32ed7edd2c1ddc281b08bda198
Comment by deepak vohra [ 15/Jan/14 ]
Thanks Sergey.




[RCBC-158] Ruby Client prepend and append methods return exception subsequent get Created: 12/Jan/14  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: deepak vohra Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
A value appended/prepended with append/prepend does not get appended/prepended. Subsequent get returns error:

ver =client.set("foo", "Hello")
client.prepend("foo", " World",:cas => ver)
client.get("foo")

`get': unable to convert value for key "foo": 399: unexpected token at '"Hello"]' (Couchbase::Error::ValueFormat)

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
http://www.couchbase.com/autodocs/couchbase-ruby-client-1.3.4/Couchbase/Bucket.html#append-instance_method

> Note: This operation is kind of data-aware from server point of
> view. This mean that the server treats value as binary stream and
> just perform concatenation, therefore it won't work with :marshal
> and :document formats, because of lack of knowledge how to merge
> values in these formats. See #cas for workaround.

Checkout the following IRB session

1.9.3p484 (main):002:0> client = Couchbase.connect
#<Couchbase::Bucket:0x0000000231c8e0 "http://localhost:8091/pools/default/buckets/default/" transcoder=Couchbase::Transcoder::Document, default_flags=0x0, quiet=false, connected=true, timeout=2500000>
1.9.3p484 (main):003:0> client.set("foo", "Hello")
5591277005624442880
1.9.3p484 (main):004:0> client.append("foo", ", World!")
7288855759869050880
1.9.3p484 (main):005:0> client.get("foo")
", World!"
1.9.3p484 (main):006:0> client.transcoder
Couchbase::Transcoder::Document
1.9.3p484 (main):007:0> client.transcoder = nil
nil
1.9.3p484 (main):008:0> client.get("foo")
"\"Hello\"\", World!\""
1.9.3p484 (main):009:0> client.set("foo", "Hello")
14250580353290731520
1.9.3p484 (main):010:0> client.append("foo", ", World!")
10279832205661175808
1.9.3p484 (main):011:0> client.get("foo")
"Hello, World!"
1.9.3p484 (main):012:0> client.transcoder = Couchbase::Transcoder::Plain
Couchbase::Transcoder::Plain
1.9.3p484 (main):013:0> client.set("foo", "Hello")
4069549279626002432
1.9.3p484 (main):014:0> client.append("foo", ", World!")
3362301640690237440
1.9.3p484 (main):015:0> client.get("foo")
"Hello, World!"

That means you should make sure you are not using transcoder for your connection object (or using Couchbase::Transcoder::Plain) if you need append/prepend features




[RCBC-157] add method updates value Created: 12/Jan/14  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: deepak vohra Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The add() method for a Ruby Client instance should not set or update a value if a key is already defined. But the add method updates the value.

 Comments   
Comment by deepak vohra [ 12/Jan/14 ]
Not a bug on retest.
Comment by Sergey Avseyev [ 13/Jan/14 ]
Next time please attach logs or something which help us to reproduce issue




Documentation for Ruby 1.3.4 (RCBC-153)

[RCBC-156] Publish Ruby 1.3.4 autodocs Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.4
Fix Version/s: None
Security Level: Public

Type: Technical task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 0.5h
Time Spent: Not Specified
Original Estimate: 0.5h

Issue Links:
Gantt: finish-start
has to be done after RCBC-155 Create Ruby 1.3.4 autodocs Closed

 Description   
This task includes:
1. Upload API reference documentation to autodocs server and unzip
2. Download latest autodocs index.html file and edit add new version
3. Download latest autodocs .htaccess file and edit to point to latest version
4. Upload updated index.html and .htaccess files.
5. Verify autodocs links are correct on docs landing page, docs site and autodocs page




Documentation for Ruby 1.3.4 (RCBC-153)

[RCBC-155] Create Ruby 1.3.4 autodocs Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 08/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.4
Fix Version/s: None
Security Level: Public

Type: Technical task Priority: Major
Reporter: Amy Kurtzman Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: 0.5h
Time Spent: Not Specified
Original Estimate: 0.5h

Attachments: Zip Archive couchbase-ruby-client-1.3.4.zip    
Issue Links:
Gantt: finish-start
has to be done before RCBC-156 Publish Ruby 1.3.4 autodocs Closed




Documentation for Ruby 1.3.4 (RCBC-153)

[RCBC-154] Publish Ruby 1.3.4 documentation Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.4
Fix Version/s: None
Security Level: Public

Type: Technical task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 1h
Time Spent: Not Specified
Original Estimate: 1h


 Description   
This task includes:
1. Edit release notes.
2. Edit other revisions to the document.
3. Add new version to nanoc.yaml file.
4. Update & verify links on www.couchbase.com/documentation
5. Verify links & document content for docs website (docs.pub.couchbase.com)
6. Publish document on external website (docs.couchbase.com)




[RCBC-153] Documentation for Ruby 1.3.4 Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.4
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Σ Remaining Estimate: 2h Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: 2h Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
RCBC-154 Publish Ruby 1.3.4 documentation Technical task Closed Amy Kurtzman  
RCBC-155 Create Ruby 1.3.4 autodocs Technical task Closed Sergey Avseyev  
RCBC-156 Publish Ruby 1.3.4 autodocs Technical task Closed Amy Kurtzman  

 Description   
Documentation tasks for Ruby 1.3.4

 Comments   
Comment by Sergey Avseyev [ 07/Jan/14 ]
I wrote a section about how to build the client from sources and prepare for contributing: http://review.couchbase.org/31696 probably it can find its place in the docs
Comment by Sergey Avseyev [ 07/Jan/14 ]
Release notes available for review here: http://review.couchbase.org/31697
Comment by Sergey Avseyev [ 08/Jan/14 ]
Release notes published on github https://github.com/couchbase/couchbase-ruby-client/blob/master/RELEASE_NOTES.markdown#134-2014-01-08




[RCBC-152] environment setting on bucket connection doesn't set to :development when specified Created: 30/Dec/13  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
prod = Couchbase.new ( bucket: 'mybucket', environment: :production )
print prod.environment.to_s
p prod

dev = Couchbase.new ( bucket: 'mybucket', environment: :development )
print dev.environment.to_s
p dev

--- output

production - #<Couchbase::Bucket:0x007fab008669d0 "http://localhost:8091/pools/default/buckets/mybucket/" transcoder=Couchbase::Transcoder::Document, default_flags=0x0, quiet=false, connected=true, timeout=2500000>

production - #<Couchbase::Bucket:0x007fab0086dc08 "http://localhost:8091/pools/default/buckets/mybucket/" transcoder=Couchbase::Transcoder::Document, default_flags=0x0, quiet=false, connected=true, timeout=2500000>


 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
http://review.couchbase.org/32318




[RCBC-151] incr/decr do not return cas when :extended => true passed in, cas always null Created: 18/Dec/13  Updated: 13/Jan/14  Resolved: 19/Dec/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs, library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
I tried this on 1.3.3, but it might be broken in earlier releases as well....

docs say this syntax:
val, cas = c.incr("foo", :extended => true)

what I tried:
client.set(key, 100)
doc, cas = client.incr(key, :extended => true)
doc, cas = client.incr(key, 5, :extended => true)
doc, cas = client.incr(key, {:delta => 5, :extended => true})

doc, cas = client.decr(key, :extended => true)
doc, cas = client.decr(key, 5, :extended => true)
doc, cas = client.decr(key, {:delta => 5, :extended => true})

cas is always null in all 6 tests


 Comments   
Comment by Sergey Avseyev [ 19/Dec/13 ]
http://review.couchbase.org/31243




[RCBC-150] Couchbase::Cluster#create_bucket needs additional parameter "flush: true/false" as option for creation Created: 30/Nov/13  Updated: 13/Jan/14  Resolved: 02/Dec/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.4
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 02/Dec/13 ]
http://review.couchbase.org/30754




[RCBC-149] Incorrect usage of <th> tag in table Created: 15/Nov/13  Updated: 26/Nov/13  Resolved: 26/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File incorrect-usage-of-th-tag.png    

 Description   
First column should be marked up as header, not the first row

 Comments   
Comment by Amy Kurtzman [ 19/Nov/13 ]
It's a conversion artifact from old to new doc system. I can fix it.




[RCBC-148] Missing syntax highlight Created: 15/Nov/13  Updated: 26/Nov/13  Resolved: 26/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 1.2.0, 1.3.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File missing-syntax-highlight.png    

 Description   
Almost all ruby examples doesn't have syntax highlighting




[RCBC-147] Broken layout of preformatted text Created: 15/Nov/13  Updated: 26/Nov/13  Resolved: 26/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File broken-layout-of-preformatted-text.png    

 Description   
There are a lot of places when preformatted text written in red and the layout of it broken, causing huge horisontal scrollbars

 Comments   
Comment by Amy Kurtzman [ 26/Nov/13 ]
This problem was caused by the conversion from docbook to markdown. Fix is to reformat offending code blocks.




[RCBC-146] Publish release notes for 1.3.3 Created: 14/Nov/13  Updated: 19/Nov/13  Resolved: 19/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on RCBC-145 Provide release notes for 1.3.3 Closed
Gantt: finish-start
has to be done after RCBC-145 Provide release notes for 1.3.3 Closed

 Description   
Edit and publish version 1.3.3 release notes.

 Comments   
Comment by Sergey Avseyev [ 15/Nov/13 ]
https://github.com/couchbase/couchbase-ruby-client/blob/1.3.3/RELEASE_NOTES.markdown#133-2013-09-12
Comment by Sergey Avseyev [ 15/Nov/13 ]
In raw markdown format:

https://raw.github.com/couchbase/couchbase-ruby-client/1.3.3/RELEASE_NOTES.markdown




[RCBC-145] Provide release notes for 1.3.3 Created: 14/Nov/13  Updated: 19/Nov/13  Resolved: 19/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
blocks RCBC-146 Publish release notes for 1.3.3 Closed
Gantt: finish-start
has to be done before RCBC-146 Publish release notes for 1.3.3 Closed

 Description   
The current document does not contain release notes for version 1.3.3. Please provide them.

http://docs.couchbase.com/couchbase-sdk-ruby-1.3/#appendix-release-notes

 Comments   
Comment by Sergey Avseyev [ 15/Nov/13 ]
Can I delegate this task to doc team?

Release notes are living in markdown format here:

https://github.com/couchbase/couchbase-ruby-client/blob/1.3.3/RELEASE_NOTES.markdown#133-2013-09-12

libcouchbase has similar file in the same format (replace 'master' with tag you need)
https://github.com/couchbase/libcouchbase/blob/master/RELEASE_NOTES.markdown
Comment by Amy Kurtzman [ 15/Nov/13 ]
Sure, I can get them from the file in your GitHub directory.




[RCBC-144] Publish RDoc for 1.3.3 to autodocs site Created: 14/Nov/13  Updated: 19/Nov/13  Resolved: 19/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on RCBC-143 generate rdoc for ruby 1.3.3 for auto... Closed

 Comments   
Comment by Sergey Avseyev [ 15/Nov/13 ]
Docs attached to RCBC-143




[RCBC-143] generate rdoc for ruby 1.3.3 for autodocs site Created: 14/Nov/13  Updated: 19/Nov/13  Resolved: 15/Nov/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Zip Archive couchbase-ruby-client-1.3.3.zip    
Issue Links:
Dependency
blocks RCBC-144 Publish RDoc for 1.3.3 to autodocs site Closed

 Description   
Please generate and attach the RDoc for version 1.3.3.




[RCBC-142] Add intro to Ruby SDK guide Created: 24/Sep/13  Updated: 13/Jan/14  Resolved: 01/Oct/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.1.0, 1.2.0, 1.3.0
Fix Version/s: 1.1.0, 1.2.0, 1.3.0
Security Level: Public

Type: Task Priority: Minor
Reporter: Amy Kurtzman Assignee: Gwen Leong (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The SDK guides currently begin with the Getting Started section. They need an introduction and meaningful web page title so customers know what guide they are reading.

For each version of the SDK guide, please:

1. Add a short introduction (# Introduction) before the Getting Started section. Sample intro:
    This guide provides information for developers who want to use the Couchbase <language> SDK to
    build applications that use Couchbase Server.

2. In the corresponding index.erb file, change the title to one that follows this naming pattern:
    Couchbase <language> SDK <version> Guide

 Comments   
Comment by Gwen Leong (Inactive) [ 01/Oct/13 ]
Added to all versions.
http://docs.couchbase.com/couchbase-sdk-ruby-1.3/




[RCBC-141] Segmentation Fault during server rebalancing Created: 29/Aug/13  Updated: 13/Jan/14  Resolved: 04/Sep/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.3.0, 1.3.1, 1.3.2
Fix Version/s: 1.3.3
Security Level: Public

Type: Bug Priority: Major
Reporter: Alexey Mirniy Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Ubuntu 12.04

Server: Version: 2.1.1 enterprise edition (build-764)
Client:
aptitude show libcouchbase2:
Package: libcouchbase2
State: installed
Automatically installed: no
Version: 2.0.7-2282

Ruby ruby 1.9.3p448 (2013-06-27 revision 41675) [i686-linux]
Gems included by the bundle:
  * awesome_print (1.1.0)
  * bundler (1.3.5)
  * connection_pool (1.0.0)
  * couchbase (1.3.2)
  * multi_json (1.7.9)
  * yaji (0.3.4)


Attachments: Text File trace_rebalance.txt    

 Description   
Segmentation Fault during server rebalancing

here is dbg backtrace:
#0 0xb7ab6ff3 in ?? () from /usr/lib/libcouchbase.so.2
#1 0xb7aea309 in callbacks_run (callbacks=<optimized out>) at multithread_plugin.c:460
#2 loop_run_select (argp=141295600) at multithread_plugin.c:640
#3 0x0805cb69 in rb_ensure (b_proc=0xb7aea010 <loop_run_select>, data1=141295600, e_proc=0xb7ae9d30 <loop_select_cleanup>, data2=138595180) at eval.c:744
#4 0xb7ae9671 in loop_run (loop=0x85b80d0) at multithread_plugin.c:893
#5 lcb_io_run_event_loop (iops=0x85b8070) at multithread_plugin.c:1014
#6 0xb7ac4b25 in lcb_wait () from /usr/lib/libcouchbase.so.2
#7 0xb7ade569 in do_loop (bucket=<optimized out>) at bucket.c:1170
#8 do_run (args=0xbfffe85c) at bucket.c:1220
#9 0x0805cb69 in rb_ensure (b_proc=0xb7ade480 <do_run>, data1=3221219420, e_proc=0xb7ade460 <ensure_run>, data2=3221219420) at eval.c:744
#10 0xb7ae0b72 in cb_bucket_run (argc=0, argv=0xb7b220b4, self=138262560) at bucket.c:1307
#11 0x0814ee55 in call_cfunc (func=0xb7ae0ae0 <cb_bucket_run>, recv=<optimized out>, len=-1, argc=0, argv=0xb7b220b4) at vm_insnhelper.c:317
#12 0x0815e864 in vm_call_cfunc (me=0x86ac988, blockptr=0xb7ba1e0c, recv=<optimized out>, num=<optimized out>, reg_cfp=0xb7ba1df8, th=0x8269b88) at vm_insnhelper.c:404
#13 vm_call_method (th=0x8269b88, cfp=0xb7ba1df8, num=<optimized out>, blockptr=0xb7ba1e0c, flag=0, id=9936, me=0x86ac988, recv=138262560) at vm_insnhelper.c:530
#14 0x08153a4b in vm_exec_core (th=0x8269b88, initial=<optimized out>) at insns.def:1018
#15 0x08158ddc in vm_exec (th=0x8269b88) at vm.c:1236
#16 0x08159c01 in invoke_block_from_c (th=0x8269b88, block=<optimized out>, self=138264140, argc=0, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:640
#17 0x0815ee4e in vm_yield (th=<optimized out>, argv=0x0, argc=0) at vm.c:670
#18 rb_yield_0 (argv=0x0, argc=0) at vm_eval.c:777
#19 loop_i () at vm_eval.c:835
#20 0x0805c831 in rb_rescue2 (b_proc=0x815ee20 <loop_i>, data1=0, r_proc=0, data2=0) at eval.c:647
#21 0x0814f061 in rb_f_loop (self=138264140) at vm_eval.c:863
#22 0x0815e864 in vm_call_cfunc (me=0x82b4d30, blockptr=0xb7ba1ebc, recv=<optimized out>, num=<optimized out>, reg_cfp=0xb7ba1ea8, th=0x8269b88) at vm_insnhelper.c:404
#23 vm_call_method (th=0x8269b88, cfp=0xb7ba1ea8, num=<optimized out>, blockptr=0xb7ba1ebc, flag=8, id=2904, me=0x82b4d30, recv=138264140) at vm_insnhelper.c:530
#24 0x08153a4b in vm_exec_core (th=0x8269b88, initial=<optimized out>) at insns.def:1018
#25 0x08158ddc in vm_exec (th=0x8269b88) at vm.c:1236
#26 0x08159c01 in invoke_block_from_c (th=0x8269b88, block=<optimized out>, self=136958720, argc=0, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:640
#27 0x0815ee4e in vm_yield (th=<optimized out>, argv=0x0, argc=0) at vm.c:670
#28 rb_yield_0 (argv=0x0, argc=0) at vm_eval.c:777
#29 loop_i () at vm_eval.c:835
#30 0x0805c831 in rb_rescue2 (b_proc=0x815ee20 <loop_i>, data1=0, r_proc=0, data2=0) at eval.c:647
#31 0x0814f061 in rb_f_loop (self=136958720) at vm_eval.c:863
#32 0x0815e864 in vm_call_cfunc (me=0x82b4d30, blockptr=0xb7ba1f98, recv=<optimized out>, num=<optimized out>, reg_cfp=0xb7ba1f84, th=0x8269b88) at vm_insnhelper.c:404
#33 vm_call_method (th=0x8269b88, cfp=0xb7ba1f84, num=<optimized out>, blockptr=0xb7ba1f98, flag=8, id=2904, me=0x82b4d30, recv=136958720) at vm_insnhelper.c:530
#34 0x08153a4b in vm_exec_core (th=0x8269b88, initial=<optimized out>) at insns.def:1018
#35 0x08158ddc in vm_exec (th=0x8269b88) at vm.c:1236
#36 0x0815f757 in rb_iseq_eval_main (iseqval=138260580) at vm.c:1478
#37 0x0805a094 in ruby_exec_internal (n=0x83db064) at eval.c:204
#38 0x0805c419 in ruby_exec_node (n=0x83db064) at eval.c:251
#39 ruby_run_node (n=0x83db064) at eval.c:244
#40 0x08059b1a in main (argc=2, argv=0xbffff724) at main.c:38

 Comments   
Comment by Sergey Avseyev [ 02/Sep/13 ]
Reproducing on my machine:

(gdb) bt
#0 0x00007f108c6a31e5 in __GI_raise (sig=sig@entry=0x6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f108c6a6398 in __GI_abort () at abort.c:90
#2 0x00007f108d9495e5 in rb_bug (fmt=0x7f108d981e6b "Segmentation fault") at error.c:309
#3 0x00007f108d879732 in sigsegv (sig=0xb, info=0x7f108ee80af0, ctx=0x7f108ee809c0) at signal.c:672
#4 <signal handler called>
#5 0x00007f108b6f5119 in lcb_error_handler (instance=0x0, error=LCB_CLIENT_ENOMEM, errinfo=0x0) at src/error.c:62
#6 0x00007f108b6fe642 in lcb_sockrw_v0_read (conn=0x7f108f092d78, buf=0x7f108f092430) at src/readwrite.c:34
#7 0x00007f108b6fe741 in lcb_sockrw_v0_slurp (conn=0x7f108f092d78, buf=0x7f108f092430) at src/readwrite.c:71
#8 0x00007f108b7020e4 in do_read_data (c=0x7f108f092ca0, allow_read=0x2) at src/server_io.c:39
#9 0x00007f108b7022cc in lcb_server_v0_event_handler (sock=0x8, which=0x2, arg=0x7f108f092ca0) at src/server_io.c:104
#10 0x00007f108b92e46b in callbacks_run (callbacks=0x7f108f28dfb0) at ../../../../ext/couchbase_ext/multithread_plugin.c:460
#11 0x00007f108b92ea30 in loop_run_select (argp=0x7f108ef5da20) at ../../../../ext/couchbase_ext/multithread_plugin.c:640
#12 0x00007f108d7bdc83 in rb_ensure (b_proc=0x7f108b92e73a <loop_run_select>, data1=0x7f108ef5da20, e_proc=0x7f108b92ea75 <loop_select_cleanup>, data2=0x7f108f227a58) at eval.c:813
#13 0x00007f108b92f0c5 in loop_run (loop=0x7f108f28df90) at ../../../../ext/couchbase_ext/multithread_plugin.c:896
#14 0x00007f108b92f40f in lcb_io_run_event_loop (iops=0x7f108f28ded0) at ../../../../ext/couchbase_ext/multithread_plugin.c:1017
#15 0x00007f108b7058e1 in lcb_wait (instance=0x7f108f3e44c0) at src/wait.c:77
#16 0x00007f108b92d45e in cb_bucket_store (cmd=LCB_SET, argc=0x2, argv=0x7f108c56d070, self=0x7f108ee364d0) at ../../../../ext/couchbase_ext/store.c:159
#17 0x00007f108b92d57a in cb_bucket_set (argc=0x2, argv=0x7f108c56d070, self=0x7f108ee364d0) at ../../../../ext/couchbase_ext/store.c:282
#18 0x00007f108d8e2f50 in call_cfunc_m1 (func=0x7f108b92d550 <cb_bucket_set>, recv=0x7f108ee364d0, argc=0x2, argv=0x7f108c56d070) at vm_insnhelper.c:1325
#19 0x00007f108d8e3b05 in vm_call_cfunc_with_frame (th=0x7f108ee16590, reg_cfp=0x7f108c66ced0, ci=0x7f108f1b6428) at vm_insnhelper.c:1469
#20 0x00007f108d8e3c12 in vm_call_cfunc (th=0x7f108ee16590, reg_cfp=0x7f108c66ced0, ci=0x7f108f1b6428) at vm_insnhelper.c:1559
#21 0x00007f108d8e8807 in vm_exec_core (th=0x7f108ee16590, initial=0x0) at insns.def:1017
#22 0x00007f108d8f7a83 in vm_exec (th=0x7f108ee16590) at vm.c:1201
#23 0x00007f108d8f652c in invoke_block_from_c (th=0x7f108ee16590, block=0x7f108c66cf90, self=0x7f108ee7a4c8, argc=0x0, argv=0x0, blockptr=0x0, cref=0x0, defined_class=0x8) at vm.c:648
#24 0x00007f108d8f665b in vm_yield (th=0x7f108ee16590, argc=0x0, argv=0x0) at vm.c:679
#25 0x00007f108d8f2ca3 in rb_yield_0 (argc=0x0, argv=0x0) at vm_eval.c:913
#26 0x00007f108d8f2f51 in loop_i () at vm_eval.c:971
#27 0x00007f108d7bd769 in rb_rescue2 (b_proc=0x7f108d8f2f3e <loop_i>, data1=0x0, r_proc=0x0, data2=0x0) at eval.c:714
#28 0x00007f108d8f2ff4 in rb_f_loop (self=0x7f108ee7a4c8) at vm_eval.c:1005
#29 0x00007f108d8e2f7b in call_cfunc_0 (func=0x7f108d8f2f7d <rb_f_loop>, recv=0x7f108ee7a4c8, argc=0x0, argv=0x7f108c56d048) at vm_insnhelper.c:1331
#30 0x00007f108d8e3b05 in vm_call_cfunc_with_frame (th=0x7f108ee16590, reg_cfp=0x7f108c66cf70, ci=0x7f108f1b5738) at vm_insnhelper.c:1469
#31 0x00007f108d8e3c12 in vm_call_cfunc (th=0x7f108ee16590, reg_cfp=0x7f108c66cf70, ci=0x7f108f1b5738) at vm_insnhelper.c:1559
#32 0x00007f108d8e46e7 in vm_call_method (th=0x7f108ee16590, cfp=0x7f108c66cf70, ci=0x7f108f1b5738) at vm_insnhelper.c:1751
#33 0x00007f108d8e4efe in vm_call_general (th=0x7f108ee16590, reg_cfp=0x7f108c66cf70, ci=0x7f108f1b5738) at vm_insnhelper.c:1902
#34 0x00007f108d8e86e8 in vm_exec_core (th=0x7f108ee16590, initial=0x0) at insns.def:1002
#35 0x00007f108d8f7a83 in vm_exec (th=0x7f108ee16590) at vm.c:1201
#36 0x00007f108d8f88c9 in rb_iseq_eval_main (iseqval=0x7f108efefc90) at vm.c:1449
#37 0x00007f108d7bc76b in ruby_exec_internal (n=0x7f108efefc90) at eval.c:250
#38 0x00007f108d7bc884 in ruby_exec_node (n=0x7f108efefc90) at eval.c:315
#39 0x00007f108d7bc857 in ruby_run_node (n=0x7f108efefc90) at eval.c:307
#40 0x00007f108d7bab02 in main (argc=0x2, argv=0x7fff7264ec28) at main.c:36
Comment by Sergey Avseyev [ 03/Sep/13 ]
As far as issue in the default IO plugin, which shipped with the gem, you can workaround the issue by using the plugin from libcouchbase.

The following code will choose select(2) implementation

Couchbase.connect(:engine => :select)

If you have installed libcouchbase2-libevent package

Couchbase.connect(:engine => :libevent)

I'm working on the fix now.
Comment by Sergey Avseyev [ 04/Sep/13 ]
I've found the issue. Working on fix now
Comment by Sergey Avseyev [ 04/Sep/13 ]
http://review.couchbase.org/28790




[RCBC-140] Segfault using ruby 2 Created: 26/Aug/13  Updated: 13/Jan/14  Resolved: 12/Sep/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.3.2
Fix Version/s: 1.3.3
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Copied from Q&A site:

http://www.couchbase.com/communities/q-and-a/segfault-using-ruby2

I couldn't find anyone else having this issue, but I'm having trouble getting started with Couchbase using Ruby2. I'm getting a segmentation fault trying to access a document in the beer-sample bucket.

I'm using:
Ruby 2.0.0-p247 (using irb)
libcouchbase 2.1.1 (from homebrew)
couchbase gem 1.3.2

The error is:
2.0.0-p247 :006 > beer = client.get("aass_brewery-juleol")
(irb):6: [BUG] Segmentation fault
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]

-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
the more detail of.

-- Control frame information -----------------------------------------------
c:0019 p:---- s:0077 e:000076 CFUNC :get
c:0018 p:0008 s:0073 E:000b00 EVAL (irb):6 [FINISH]
c:0017 p:---- s:0070 e:000069 CFUNC :eval
c:0016 p:0024 s:0063 e:000062 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/workspace.rb:86
c:0015 p:0025 s:0056 e:000054 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/context.rb:380
c:0014 p:0022 s:0050 e:000049 BLOCK /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:492
c:0013 p:0040 s:0042 e:000041 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:624
c:0012 p:0009 s:0037 e:000036 BLOCK /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:489
c:0011 p:0118 s:0033 e:000032 BLOCK /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:247 [FINISH]
c:0010 p:---- s:0030 e:000029 CFUNC :loop
c:0009 p:0007 s:0027 e:000026 BLOCK /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:233 [FINISH]
c:0008 p:---- s:0025 e:000024 CFUNC :catch
c:0007 p:0015 s:0021 e:000020 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:232
c:0006 p:0030 s:0018 E:002608 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:488
c:0005 p:0008 s:0015 e:000014 BLOCK /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:397 [FINISH]
c:0004 p:---- s:0013 e:000012 CFUNC :catch
c:0003 p:0143 s:0009 E:0001d8 METHOD /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:396
c:0002 p:0122 s:0004 E:002328 EVAL /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16 [FINISH]
c:0001 p:0000 s:0002 E:000a58 TOP [FINISH]

/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:396:in `start'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:396:in `catch'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:397:in `block in start'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:488:in `eval_input'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:232:in `each_top_level_statement'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:232:in `catch'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:233:in `block in each_top_level_statement'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:233:in `loop'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb:247:in `block (2 levels) in each_top_level_statement'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:489:in `block in eval_input'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:624:in `signal_status'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb:492:in `block (2 levels) in eval_input'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/context.rb:380:in `evaluate'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/workspace.rb:86:in `evaluate'
/Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/workspace.rb:86:in `eval'
(irb):6:in `irb_binding'
(irb):6:in `get'

-- C level backtrace information -------------------------------------------

-- Other runtime information -----------------------------------------------

* Loaded script: irb

* Loaded features:

0 enumerator.so
1 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/encdb.bundle
2 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/trans/transdb.bundle
3 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/rbconfig.rb
4 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/compatibility.rb
5 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/defaults.rb
6 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/deprecate.rb
7 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/errors.rb
8 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/version.rb
9 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/requirement.rb
10 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/platform.rb
11 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/specification.rb
12 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/exceptions.rb
13 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_gem.rb
14 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/thread.rb
15 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/monitor.rb
16 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb
17 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems.rb
18 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/e2mmap.rb
19 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/init.rb
20 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/workspace.rb
21 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/inspector.rb
22 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/context.rb
23 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/extend-command.rb
24 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/output-method.rb
25 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/notifier.rb
26 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/slex.rb
27 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-token.rb
28 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/ruby-lex.rb
29 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/src_encoding.rb
30 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/magic-file.rb
31 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/readline.bundle
32 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/input-method.rb
33 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/locale.rb
34 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb.rb
35 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/path_support.rb
36 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency.rb
37 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/irb/completion.rb
38 /Volumes/Data/Users/michaelmarini/.rvm/scripts/irbrc.rb
39 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase/version.rb
40 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/yaji-0.3.4/lib/yaji/version.rb
41 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/stringio.bundle
42 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/yaji-0.3.4/lib/parser_ext.bundle
43 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/yaji-0.3.4/lib/yaji.rb
44 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/common.rb
45 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/generic.rb
46 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/ftp.rb
47 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/http.rb
48 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/https.rb
49 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/ldap.rb
50 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/ldaps.rb
51 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri/mailto.rb
52 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/uri.rb
53 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/options.rb
54 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/version.rb
55 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/load_error.rb
56 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json.rb
57 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/version.rb
58 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/ostruct.rb
59 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/generic_object.rb
60 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/common.rb
61 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/utf_16be.bundle
62 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/utf_16le.bundle
63 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/utf_32be.bundle
64 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.4.0/enc/utf_32le.bundle
65 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/ext/parser.bundle
66 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/ext/generator.bundle
67 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/ext.rb
68 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/singleton.rb
69 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/adapter.rb
70 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/adapters/json_common.rb
71 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/adapters/json_gem.rb
72 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/ext/multi_json_fix.rb
73 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase/transcoder.rb
74 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase_ext.bundle
75 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase/constants.rb
76 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase/utils.rb
77 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-1.3.2/lib/couchbase/bucket.rb
78 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-.3.2/lib/couchbase/view_row.rb
79 /Volumes/Data/Users/michaelmarini/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/base64.rb
80 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-.3.2/lib/couchbase/view.rb
81 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-.3.2/lib/couchbase/result.rb
82 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-.3.2/lib/couchbase/cluster.rb
83 /Volumes/Data/Users/michaelmarini/.rvm/gems/ruby-2.0.0-p247/gems/couchbase-.3.2/lib/couchbase.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Abort trap: 6

- See more at: http://www.couchbase.com/communities/q-and-a/segfault-using-ruby2#sthash.cygG0ngc.dpuf

 Comments   
Comment by mmarini [ 07/Sep/13 ]
Hi,

As the guy who originally raised this on the Q&A site, just wanted to note that I've upgraded to libcouchbase 2.1.2 re-ran the example and segfault no longer occurs.

I think that this issue can be closed.

Thanks,

Mike




[RCBC-138] Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..) to ruby Created: 21/Aug/13  Updated: 21/Aug/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-192 Failure to handle host that has been ... Resolved




[RCBC-137] Allow to select new backends: select and iocp Created: 19/Aug/13  Updated: 13/Jan/14  Resolved: 19/Aug/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 19/Aug/13 ]
http://review.couchbase.org/28349




[RCBC-136] Support ruby 2.0.0 on windows Created: 19/Aug/13  Updated: 13/Jan/14  Resolved: 19/Aug/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/communities/q-and-a/unable-install-couchbase-gem-windows

 Comments   
Comment by Sergey Avseyev [ 19/Aug/13 ]
couchbase gem: http://review.couchbase.org/28344
Comment by Sergey Avseyev [ 19/Aug/13 ]
yaji gem: https://github.com/avsej/yaji/commit/d0b514dce8e1318b2700970daaef84c6c0e13dd4

2.0.0 aware version released in yaji-0.3.4




[RCBC-135] Library is segfaulting under GC.stress Created: 05/Aug/13  Updated: 13/Jan/14  Resolved: 04/Sep/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.3
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 05/Aug/13 ]
http://review.couchbase.org/27917




[RCBC-134] Document how to use multiple buckets within the same process Created: 25/Jul/13  Updated: 13/Jan/14  Resolved: 12/Sep/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs, library
Affects Version/s: 1.3.2
Fix Version/s: 1.3.3
Security Level: Public

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please enhance the documentation to include an example of accessing more than one Couchbase bucket from within the same process/thread.

 Comments   
Comment by Robin Johnson (Inactive) [ 26/Jul/13 ]
I will write a blog about this for the community site.
Comment by Sergey Avseyev [ 06/Aug/13 ]
I've made a patch to support named slots for storing connections:
https://github.com/avsej/couchbase-ruby-client/commit/fcc96c5c3fd8047bf8e1cf142c78b117e0f80425
Comment by Sergey Avseyev [ 06/Aug/13 ]
http://review.couchbase.org/27961 moved to gerrit




[RCBC-133] Improved replica read command Created: 09/Jul/13  Updated: 13/Jan/14  Resolved: 10/Jul/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.2
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-183 Implement approach to specify behavio... Closed

 Description   
Allow to specify strategy of selecting replica nodes. Now three strategies available:

    * `:first` - synonym to `true`, previous behaviour and currently
      default. It means that the library will sequentially iterate
      over all replicas and will return as soon as find successful
      response, or report error from the latest.

            c.get("foo", :replica => true)
            c.get("foo", :replica => :first)
            #=> "bar"
            c.get("foo", :replica => :first, :extended => true)
            #=> ["bar", 0, 11218368683493556224]

    * `:all` - query all replicas in parallel. In this case the method
      will return array of the values on the all replica nodes without
      particular order. Also if the key isn't on the node, it will be
      skipped in the result array.

            c.get("foo", :replica => :all)
            #=> ["bar", "bar", "bar"]
            c.get("foo", :replica => :all, :extended => true)
            #=> [["bar", 0, 11218368683493556224],
            # ["bar", 0, 11218368683493556224],
            # ["bar", 0, 11218368683493556224]]

    * `Fixnum` - you can also select specific replica node by its
      index in the cluster configuration. It should be in interval
      `0...c.num_replicas`

            0...c.num_replicas
            #=> 0...3
            c.get("foo", :replica => 1)
            #=> "bar"
            c.get("foo", :replica => 42)
            #=> ArgumentError: replica index should be in interval 0...3


 Comments   
Comment by Sergey Avseyev [ 09/Jul/13 ]
http://review.couchbase.org/27343




[RCBC-132] Specify which version of Ruby is required/supported Created: 06/Jun/13  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please provide in the http://www.couchbase.com/develop/ruby/current page an indication of which version of Ruby we support. Apparently my 1.8.5 is not sufficient enough but nothing on the page dictates that.

 Comments   
Comment by Sergey Avseyev [ 11/Jun/13 ]
Made a change on our site: http://www.couchbase.com/node/1178/revisions/view/5383/5592

Matt, could you also check it, because my previous after-release patch hasn't been applied (in-text change from 1.3.0 to 1.3.1)
Comment by Perry Krug [ 26/Jul/13 ]
Sergey/Matt, can you look into this? I still don't see anything on the web page and I get an access denied when I try to access that revision link.
Comment by Sergey Avseyev [ 26/Jul/13 ]
looks like that change rewritten because of our new drupal versioning system




[RCBC-131] Couchbase::Cluster#create_bucket raises "Couchbase::Error::Connect: not connected to the server" Created: 04/Jun/13  Updated: 13/Jan/14  Resolved: 04/Jun/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
It shouldn't require persistent connection for "cluster"-wise connections

 Comments   
Comment by Sergey Avseyev [ 04/Jun/13 ]
http://review.couchbase.org/26710




Final Review 1.3 core documentation (RCBC-127)

[RCBC-130] Complete Review of Ruby 1.3 Created: 24/May/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Technical task Priority: Major
Reporter: Anonymous Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Sent 5/8/2013:

Hi,

Here is the 1.3 for review. Please provide me any feedback/input by Wednesday end of day next week. After that time, any change requests or fixes will go through the standard maintenance-mode process: http://hub.internal.couchbase.com/confluence/display/techpubs/Doc+Fixes+and+Edits+Process+2013

You can provide any review feedback as a bullet list on this ticket http://www.couchbase.com/issues/browse/RCBC-127, or as annotations to the PDF.


Regards,

Karen

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
Should we close this ticket?




Final Review 1.3 core documentation (RCBC-127)

[RCBC-129] Complete Reviews Created: 24/May/13  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Technical task Priority: Major
Reporter: Anonymous Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Send 5/8/2013:

Hi,

Here is the 1.3 for review. Please provide me any feedback/input by Wednesday end of day next week. After that time, any change requests or fixes will go through the standard maintenance-mode process: http://hub.internal.couchbase.com/confluence/display/techpubs/Doc+Fixes+and+Edits+Process+2013

You can provide any review feedback as a bullet list on this ticket http://www.couchbase.com/issues/browse/RCBC-127, or as annotations to the PDF.


Regards,

Karen

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
Should we close this ticket?
Comment by Amy Kurtzman [ 13/Jan/14 ]
Closing this issue.




[RCBC-128] Ruby 1.3.0 is missing release notes Created: 08/May/13  Updated: 28/May/13  Resolved: 28/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: info-request
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
It may have been an artifact of the order in which docs were integrated, but I don't see release notes in the right place in the current document.

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.3/couchbase-sdk-ruby-rn.html



 Comments   
Comment by kzeller [ 09/May/13 ]
Hi,

So I investigated this last night and discovered all the XML and content are intact and valid for this entire document.

When I generate PDF the content is missing as well as when the XML to HTML conversion happens. I think this is something to do with the Perl parser that does our conversions expecting some setting.

Can you please get someone familiar with Perl to look at this conversion script?


Thanks,

Karen
Comment by Wayne Siu [ 09/May/13 ]
Matt, can you or someone on your team help? Thanks.
Comment by Matt Ingenthron [ 13/May/13 ]
Mark: I know you haven't been in here before, but can you possibly work with Wayne/Karen to help us out to try to fix this? There's some scripting forensics required.
Comment by Mark Nunberg [ 13/May/13 ]
If you can show me the toolchain or give me access to a remote machine (probably the best) where this toolchain is installed, I could help dig into the issue.
Comment by kzeller [ 14/May/13 ]
Here is the toolchain information:

=======


This is the info you wanted for RCBC-128 on the Toolchain for publishing. I set up 1.3 guides and they generate as PDF and HTML but somehow the release notes are not being pulled in during conversion.

There are no failure messages on the server or on my local machine when the build runs, and the XML is clean. You basically just get a blank page in PDF and HTML for the release notes.

The new ruby guide is here, set up according to what Matt/Sergey agreed on content:

https://github.com/couchbase/docs/tree/master/Couchbase/products/couchbase/couchbase-sdk-ruby-1.3

For the release notes, there is XML typically in every guide that seems to serve as an include statement here:

https://github.com/couchbase/docs/blob/master/Couchbase/products/couchbase/couchbase-sdk-ruby-1.3/releasenotes-metasrc.xml

The XML=>HTML conversion runs here: ssh jenkins@ubu-1701.hq.couchbase.com, you can use Qakey.pem to access it

In ~/docs we recreated a shell script that will Git pull the current docs repo
Then it will do a make publish-push to trigger the XML=>HTML conversion

This make task runs a bunch of Perl scripts that do the conversion as well as includes. I believe all the Perl scripts called by make are under the Publish Then the make task syncs the new HTML with our web server.

Let me know if you need the key for access to this machine, but you should have it as it is the QA key for jenkins.



Regards,

Karen
Comment by kzeller [ 28/May/13 ]
I discovered the problem while I was setting up the C library. Inconsistent version label between the release note file "1.3.0" and the build files:

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.3/couchbase-sdk-ruby-rn_1-3-0.html
Comment by kzeller [ 28/May/13 ]
I discovered the problem while I was setting up the C library. Inconsistent version label between the release note file "1.3.0" and the build files:

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.3/couchbase-sdk-ruby-rn_1-3-0.html




[RCBC-127] Final Review 1.3 core documentation Created: 06/May/13  Updated: 03/Oct/13  Resolved: 03/Oct/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.3.0
Fix Version/s: 1.3.0
Security Level: Public

Type: New Feature Priority: Minor
Reporter: Matt Ingenthron Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: info-request
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
RCBC-129 Complete Reviews Technical task Closed Amy Kurtzman  
RCBC-130 Complete Review of Ruby 1.3 Technical task Open Matt Ingenthron  

 Description   
We need a new section in the documentation for the upcoming 1.3.0 release. This should:
- Copy the 1.2 manual
- Remove section 3-9, and instead link to the autodocs for the 1.3.0 client
- Rename section 10 (now section 3) to "Common Patterns"

After this is complete, please pass the ticket to Sergey who will write for review:
- Small section on response handling (tmpfail, bulk loading, timeouts)
- small section on event machine (motivation, where it is, how to get more info)
- small section on transcoders (motivation, where it is, how to use it, how to get more info)

I know this is a bit last minute, so we've tried to keep this scope as small as possible and still effective. Our goal would be to have everything done for publishing by EOD on 7th of May.

Sorry for the last minute notification. It only became clear in the last few days that this should be a 1.3 release given the new functionality.

 Comments   
Comment by kzeller [ 06/May/13 ]
Note to Matt and Sergey:


The part you need from me is partially doable in the next hours:

We need a new section in the documentation for the upcoming 1.3.0 release. This should:
- Copy the 1.2 manual
- Remove section 3-9, …..
- Rename section 10 (now section 3) to "Common Patterns"


Getting this out depends on how quickly Sergey can assemble the raw information/knowledge in the new files.

The other part is if the 1.3 gem ready to run the Rdoc build on ubu-1702. Is it ready now for Rdocs?

In order to copyedit them and get my edits in as well as the Rdoc up EOD tomorrow, I will probably need both the code ready and the raw content ready by 2 PM PST tomorrow.

I will assign the ticket to Sergey as soon as the 1.3 files are set up in the next hour.

Regards,

Karen
Comment by kzeller [ 06/May/13 ]

-Creating new files for 1.3
-Updating link to new Rdoc 1.3 from nav
-Add Ruby 1.3 to LibrarySpec.pm to publish
Comment by kzeller [ 06/May/13 ]
Assigning to Sergey to add content to new files in sections described.

Sergey, the 1.3 XML chapters are in:

docs/Couchbase/products/couchbase/couchbase-sdk-ruby-1.3

Let me know when you have added all your raw content as XML for each of the section. I will copyedit them/reorganize, request information from you if needed and the publish.


Comment by Sergey Avseyev [ 07/May/13 ]
Thank you Karen, I've just uploaded to review site two new code examples, which I'm going to use in new documentation sections: http://review.couchbase.org/26153
Comment by kzeller [ 07/May/13 ]
And don't worry about organizing this clearly for now, just get the raw information and knowledge you have into XML paragraphs and lists.

Comment by Sergey Avseyev [ 07/May/13 ]
EventMachine section: https://github.com/couchbase/docs/pull/211
Transcoders section (depends on previous one, because it is modifying the same file): https://github.com/couchbase/docs/pull/212
Comment by kzeller [ 07/May/13 ]
HI Sergey,

So I edited and overhauled your new content and committed it to Github.

Do you guys have a list of standard reviewers I should send this to?


Also, there were some areas that were unclear:

-For Data Transcoders you say these transcoders can be chosen using the current format API, therefore the patch won't break anything. I believe this means that this is compatible with earlier versions of the Ruby SDK. Correct>

-:forced passes the transcoder explicitly. I believe that means that the operations will transcode automatically, please confirm....

-EventMachine. You say that the Ruby client comes with additional engines. But I think this really means it comes with two engines: a default which is Ruby-thread-friendly , and the one which extends EventMachine

-Final note: where are any release notes?


Changed status to minor as going into reviews then publish soon....
Comment by Matt Ingenthron [ 07/May/13 ]
Thanks for the quick turnaround on this Karen! Again apologies for the scramble.

For ruby, we do not have a current list of standard reviewers. I might recommend myself and James Mauss (he's a Ruby guy to some degree).
Comment by kzeller [ 08/May/13 ]
Karen: run the Rdoc for 1.3.
Comment by Sergey Avseyev [ 08/May/13 ]
I've attached zip archive to announcement email
Comment by kzeller [ 08/May/13 ]
Ok, uploaded and linked: http://www.couchbase.com/autodocs/
Comment by Amy Kurtzman [ 03/Oct/13 ]
Can this issue be closed?
Comment by Matt Ingenthron [ 03/Oct/13 ]
Yes.
Comment by Amy Kurtzman [ 03/Oct/13 ]
Closing issue.




[RCBC-126] support libcouchbase configuration cache Created: 02/May/13  Updated: 13/Jan/14  Resolved: 06/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Critical
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-122 Option to enable configuration cache ... Open

 Description   
libcouchbase now has a new configuration cache feature which we should support in the Ruby client. If configured with a path, it will ensure that the bootstrap honors a configuration cache until a not_my_vbucket is received (with future support for memcached buckets).

A test would verify that a configuration cache file is created after setting libcouchbase up and bootstrapping.

This hopefully will be targeted for the release on May 7, 2013. This may be version 1.3.0, not sure yet.




[RCBC-125] Update Autodocs Page to new Corporate Template Created: 15/Apr/13  Updated: 15/Apr/13  Resolved: 15/Apr/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Anonymous Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/autodocs/




[RCBC-123] Ruby SDK Site : broken link to the documentation Created: 22/Mar/13  Updated: 26/Mar/13  Resolved: 26/Mar/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.2
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Tug Grall (Inactive) Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Go to the site:
http://www.couchbase.com/develop/ruby/current

Click on RDoc:
http://www.couchbase.com/autodocs/couchbase-ruby-client-1.2.2/index.html

this links does not work

 Comments   
Comment by kzeller [ 26/Mar/13 ]
Now available here and linked:

http://www.couchbase.com/autodocs/couchbase-ruby-client-1.2.2/index.html
Comment by kzeller [ 26/Mar/13 ]
Now available here and linked:

http://www.couchbase.com/autodocs/couchbase-ruby-client-1.2.2/index.html




[RCBC-122] Option to enable configuration cache on libcouchbase Created: 07/Mar/13  Updated: 06/May/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by RCBC-126 support libcouchbase configuration cache Closed




[RCBC-121] misspelling in release notes for Ruby Created: 01/Mar/13  Updated: 13/Jan/14  Resolved: 06/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Should be February:
http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/couchbase-sdk-ruby-rn_1-2-2.html

Is it possible to review RN for correctness/accuracy before merging more generally?

 Comments   
Comment by Sergey Avseyev [ 06/May/13 ]
https://github.com/avsej/docs/commit/891df66e1b1c9db9d773e44d4458c3a0472f9fb9#L0L65




[RCBC-120] Docs: Reference installation Created: 11/Feb/13  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.2.1
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Customers have lots of choices at their fingertips, and many of those choices will result in a non-functioning installation, or at least a lot of time spent figuring out what the right pieces are.

Can we please provide as much details as possible about a reference installation that we can be sure will work for a customer who is just getting started? This is outside of our support for any one operatin system, but more about telling the customer "if you install with these versions and packages, this code will work"

-OS
-"language" version (Ruby 1.9.3, etc)
-other packages/modules required and/or tested with

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
http://review.couchbase.org/32334




[RCBC-119] Error handling documentation Created: 05/Feb/13  Updated: 11/Feb/13

Status: Reopened
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.2.1
Fix Version/s: 1.3.0
Security Level: Public

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please create some documentation specifying possible error/failures to operations, what they "look" like in the logs/exceptions/stack traces and what our recommendation is on how to handle them.

i.e. tmp_oom, timeouts (connection/operation/java-internal/etc), "get miss" (it's technically a failure, let's make it overly obvious what it means), CAS failure, add() failure, replace() failure,

Some of this should be covered in the API reference, but this bug is specifically for a single page where this information is aggregated that a customer/user could read about how to handle errors.




[RCBC-118] Docs are saying that it should be #total_entries method defined on the View result, but actually it named as #total_rows Created: 07/Feb/13  Updated: 12/Feb/13  Resolved: 07/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs, library
Affects Version/s: 1.2.0, 1.2.1
Fix Version/s: 1.2.2
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 07/Feb/13 ]
http://review.couchbase.org/24464




[RCBC-117] Write the getting started with Ruby on Linux section of the essential guide Created: 04/Feb/13  Updated: 21/Jan/14  Resolved: 21/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: MC Brown (Inactive) Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Write the Getting started with Ruby on Linux (Redhat and Debian) section of the Essentials Guide

Needs to cover:

Installation of the Ruby gem/components and pre-requisites
Writing your first (small) app using Couchbase and Ruby

Submissions should be to MC, either through the couchbase/docs repo, or direct to MC in whatever format suits. Must include both the text and images.

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
Do we have it covered in the docs?
Comment by Matt Ingenthron [ 21/Jan/14 ]
Closing for now, since essentials guides are not planned.




[RCBC-116] Write the Getting Started with Ruby on Mac OS X section of the essentials guide Created: 04/Feb/13  Updated: 21/Jan/14  Resolved: 21/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: MC Brown (Inactive) Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Write the Getting started with Ruby on Mac OS X section of the Essentials Guide

Needs to cover:

Installation of the Ruby gem/components and pre-requisites
Writing your first (small) app using Couchbase and Ruby

Submissions should be to MC, either through the couchbase/docs repo, or direct to MC in whatever format suits. Must include both the text and images.

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
Do we have it covered in the docs?
Comment by Matt Ingenthron [ 21/Jan/14 ]
Closing for now, since essentials guides are not planned.




[RCBC-115] Write the GettingStarted with Ruby section of the essentials guides Created: 04/Feb/13  Updated: 21/Jan/14  Resolved: 21/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: MC Brown (Inactive) Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Write the Getting started with Ruby on Windows section of the Essentials Guide

Needs to cover:

Installation of the Ruby gem/components and pre-requisites
Writing your first (small) app using Couchbase and Ruby

Submissions should be to MC, either through the couchbase/docs repo, or direct to MC in whatever format suits. Must include both the text and images.

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
Do we have it covered in the docs?
Comment by Matt Ingenthron [ 21/Jan/14 ]
Closing for now, since essentials guides are not planned.




[RCBC-114] Code sample of Get and Lock in Ruby Created: 28/Jan/13  Updated: 06/May/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Minor
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
One of our users asked for a code example demonstrating Get and Lock in Ruby for the Developer Guide.

 Comments   
Comment by Sergey Avseyev [ 06/May/13 ]
There are examples of get with lock usage in our test suite: https://github.com/couchbase/couchbase-ruby-client/blob/master/test/test_get.rb#L349-L397

Generally it is pretty straightforward, just pass ':lock => true' or with number like ':lock => 14' to the Couchbase::Bucket#get method, and expect that key will be locked on default interval (set by the server) or user defined (14 in this case)
Comment by kzeller [ 06/May/13 ]
Hi,

We will get the same feedback if we use this as an example as we tried with PHP.

PHP also only had assertions from TDD, Unit-testing and we were told customers need an actually application-level usage (how to use within a sample application, not a test suite for the SDK).

You should hold this ticket until someone in the team is able to demonstrate GETL in Ruby within a sample application or a code snippet within an application.


Regards,

Karen





[RCBC-112] Append/Prepend Operations adds extra quote characters on string value provided Created: 19/Jan/13  Updated: 08/Feb/13  Resolved: 22/Jan/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.1
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mac OS X Mountain Lion


 Description   
Append/Prepend operations are not defaulting to :format => :plain, and without it are adding extra quote characters. If you use :format => :plain on every prepend/append operation it works as expected, but that is supposed to be the default for these operations.

see: https://gist.github.com/6c1762696ff5fe769a78




 Comments   
Comment by Sergey Avseyev [ 22/Jan/13 ]
I'd like to close it as _Won't fix_ because it isn't issues of the library itself

As far as you started operating on the value considering one format, you should continue to do so. The mutators doesn't have any knowledge about the format of the value except connection-wise format and the explicit option. This is why you should either turn your connection into :plain mode or use :format => :plain everywhere




[RCBC-111] SEGV during set operation when using/running ruby client multi-threaded Created: 16/Jan/13  Updated: 13/Jan/14  Resolved: 06/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.1
Fix Version/s: 1.3.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Charles Leu Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Foundation:
  Linux: "distro": "CentOS release 5.8 (Final)"
  Kernel: "2.6.18-274.17.1.el5xen #1 SMP Tue Jan 10 18:06:37 EST 2012 x86_64 x86_64 x86_64 GNU/Linux"
  Ruby: "ruby": "1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux]"
Couchbase:
  Couchbase Cluster: "nodes": ["http://server0065-vm12.listenlogic.com:4001", "http://server0065-vm13.listenlogic.com:4001", "http://server0065-vm14.listenlogic.com:4001", "http://server0065-vm15.listenlogic.com:4001"]
  Couchbase Server: "version": "2.0.0-1976-rel-community"
  Couchbase Ruby Client: "version": 1.2.1

Issue Links:
Duplicate
is duplicated by RCBC-110 SEGV during set operation when using/... Closed

 Description   
I have a ruby test program that creates a number of threads, and per thread takes a batch of documents, and stores/inserts them into couchbase. Each thread will be executing ruby code much like:

  # Insert each record (Hash) into Couchbase
  records.each { |record|
    key = record[:id].to_s
    cb.set(key, record) if !key.nil?
  }

The program starts, and subsequently SEGVs and yields a stack trace, for example:

[New Thread 0x40fbf940 (LWP 13650)]
[New Thread 0x41a33940 (LWP 13651)]
[New Thread 0x40e58940 (LWP 13652)]
[New Thread 0x400d5940 (LWP 13653)]
[New Thread 0x40ed9940 (LWP 13654)]
[New Thread 0x4020c940 (LWP 13655)]
[New Thread 0x40977940 (LWP 13656)]
[New Thread 0x40440940 (LWP 13657)]
[New Thread 0x41b0c940 (LWP 13658)]
[New Thread 0x40764940 (LWP 13659)]
[New Thread 0x412f0940 (LWP 13660)]
[New Thread 0x41422940 (LWP 13661)]
[New Thread 0x40156940 (LWP 13662)]
[New Thread 0x41cd4940 (LWP 13663)]
[New Thread 0x41065940 (LWP 13664)]
[New Thread 0x4202a940 (LWP 13665)]
[New Thread 0x40c67940 (LWP 13666)]
[New Thread 0x41dc2940 (LWP 13667)]
[New Thread 0x41734940 (LWP 13668)]
[New Thread 0x407e5940 (LWP 13669)]
[New Thread 0x41b8d940 (LWP 13670)]
[New Thread 0x417b5940 (LWP 13671)]
[New Thread 0x41c0e940 (LWP 13672)]
[New Thread 0x406b1940 (LWP 13673)]
[New Thread 0x41e43940 (LWP 13674)]
[New Thread 0x41f4c940 (LWP 13675)]
[New Thread 0x40a5d940 (LWP 13676)]
[New Thread 0x40866940 (LWP 13677)]
[New Thread 0x40ade940 (LWP 13678)]
[New Thread 0x40b5f940 (LWP 13679)]
[New Thread 0x408e7940 (LWP 13680)]
[New Thread 0x41ec4940 (LWP 13681)]
[New Thread 0x40622940 (LWP 13682)]
[New Thread 0x4164d940 (LWP 13683)]
Fetching 1024 authors starting at offset 0
[New Thread 0x42a2b940 (LWP 13685)]
[Thread 0x42a2b940 (LWP 13685) exited]
Fetching 1024 authors starting at offset 1024
Fetching 1024 authors starting at offset 2048
Fetching 1024 authors starting at offset 3072
Fetching 1024 authors starting at offset 4096

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x4020c940 (LWP 13655)]
0x00002aaaac509a1d in cb_strip_key_prefix (bucket=0x2aaab4414300, key=46912654151960) at utils.c:471
471 rb_str_update(key, 0, RSTRING_LEN(bucket->key_prefix_val), cb_vStrEmpty);
(gdb) where
#0 0x00002aaaac509a1d in cb_strip_key_prefix (bucket=0x2aaab4414300, key=46912654151960) at utils.c:471
#1 0x00002aaaac50bd64 in cb_storage_callback (handle=<optimized out>, cookie=0x2aaab4415cf0, operation=LCB_SET, error=LCB_SUCCESS, resp=0x402099b0) at store.c:52
#2 0x00002aaaac72dfd4 in ?? () from /usr/lib64/libcouchbase.so.2
#3 0x00002aaaac72bb1a in ?? () from /usr/lib64/libcouchbase.so.2
#4 0x00002aaaac504c5c in callbacks_run (callbacks=<optimized out>) at multithread_plugin.c:600
#5 loop_run_select (argp=<optimized out>) at multithread_plugin.c:780
#6 0x00002b0ebc3e8657 in rb_ensure (b_proc=0x2aaaac504aa0 <loop_run_select>, data1=46912653493520, e_proc=0x2aaaac504f30 <loop_select_cleanup>, data2=46912654152000) at eval.c:743
#7 0x00002aaaac5039fc in loop_run (loop=<optimized out>) at multithread_plugin.c:1056
#8 lcb_io_run_event_loop (iops=<optimized out>) at multithread_plugin.c:1177
#9 0x00002aaaac736aaa in lcb_wait () from /usr/lib64/libcouchbase.so.2
#10 0x00002aaaac50c275 in cb_bucket_store (self=<optimized out>, argv=<optimized out>, argc=<optimized out>, cmd=<optimized out>) at store.c:162
#11 cb_bucket_set (argc=<optimized out>, argv=<optimized out>, self=<optimized out>) at store.c:270
#12 0x00002b0ebc4ed2a8 in vm_call_cfunc (me=<optimized out>, blockptr=<optimized out>, recv=<optimized out>, num=<optimized out>, reg_cfp=<optimized out>, th=<optimized out>)
    at vm_insnhelper.c:402
#13 vm_call_method (th=0x23a2dc0, cfp=0x2aaaad359a38, num=2, blockptr=0x1, flag=0, id=21448, me=0x20c7ae0, recv=33100200) at vm_insnhelper.c:528
#14 0x00002b0ebc4f00f3 in vm_exec_core (th=0x23a2dc0, initial=<optimized out>) at insns.def:1006
#15 0x00002b0ebc4f5889 in vm_exec (th=0x2aaab4414300) at vm.c:1147
#16 0x00002b0ebc4f9e19 in invoke_block_from_c (th=0x23a2dc0, block=0x329afe0, self=30791040, argc=1, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:558
#17 0x00002b0ebc4fa2a7 in vm_yield (argv=<optimized out>, argc=<optimized out>, th=<optimized out>) at vm.c:588
#18 rb_yield_0 (argv=<optimized out>, argc=<optimized out>) at vm_eval.c:740
#19 rb_yield (val=42406680) at vm_eval.c:750
#20 0x00002b0ebc3b9c9c in rb_ary_each (ary=42907960) at array.c:1427
#21 0x00002b0ebc4ed2a8 in vm_call_cfunc (me=<optimized out>, blockptr=<optimized out>, recv=<optimized out>, num=<optimized out>, reg_cfp=<optimized out>, th=<optimized out>)
    at vm_insnhelper.c:402
#22 vm_call_method (th=0x23a2dc0, cfp=0x2aaaad359b40, num=0, blockptr=0x329afe1, flag=270, id=424, me=0x1ac7760, recv=42907960) at vm_insnhelper.c:528
#23 0x00002b0ebc4f00f3 in vm_exec_core (th=0x23a2dc0, initial=<optimized out>) at insns.def:1006
#24 0x00002b0ebc4f5889 in vm_exec (th=0x2aaab4414300) at vm.c:1147
#25 0x00002b0ebc4f9e19 in invoke_block_from_c (th=0x23a2dc0, block=0x24947d0, self=27728360, argc=1, argv=0x2aaaad25a0d0, blockptr=0x0, cref=0x0) at vm.c:558
#26 0x00002b0ebc4fa1ef in rb_vm_invoke_proc (th=0x23a2dc0, proc=0x24947d0, self=27728360, argc=1, argv=0x2aaaad25a0d0, blockptr=0x0) at vm.c:604
#27 0x00002b0ebc3f01bd in proc_call (argc=1, argv=0x2aaaad25a0d0, procval=<optimized out>) at proc.c:556
#28 0x00002b0ebc4ed2a8 in vm_call_cfunc (me=<optimized out>, blockptr=<optimized out>, recv=<optimized out>, num=<optimized out>, reg_cfp=<optimized out>, th=<optimized out>)
    at vm_insnhelper.c:402
#29 vm_call_method (th=0x23a2dc0, cfp=0x2aaaad359cf8, num=1, blockptr=0x1, flag=2, id=5912, me=0x1b0a800, recv=33098120) at vm_insnhelper.c:528
#30 0x00002b0ebc4f00f3 in vm_exec_core (th=0x23a2dc0, initial=<optimized out>) at insns.def:1006
#31 0x00002b0ebc4f5889 in vm_exec (th=0x2aaab4414300) at vm.c:1147
#32 0x00002b0ebc4f9e19 in invoke_block_from_c (th=0x23a2dc0, block=0x2aaaad359e28, self=33097800, argc=0, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:558
#33 0x00002b0ebc4fa3f8 in vm_yield (argv=<optimized out>, argc=<optimized out>, th=<optimized out>) at vm.c:588
#34 rb_yield_0 (argv=<optimized out>, argc=<optimized out>) at vm_eval.c:740
#35 loop_i () at vm_eval.c:798
#36 0x00002b0ebc3e8a4c in rb_rescue2 (b_proc=0x2b0ebc4fa3c0 <loop_i>, data1=0, r_proc=0x0, data2=0) at eval.c:646
#37 0x00002b0ebc4e8d2e in rb_f_loop (self=33097800) at vm_eval.c:826
#38 0x00002b0ebc4ed2a8 in vm_call_cfunc (me=<optimized out>, blockptr=<optimized out>, recv=<optimized out>, num=<optimized out>, reg_cfp=<optimized out>, th=<optimized out>)
    at vm_insnhelper.c:402
#39 vm_call_method (th=0x23a2dc0, cfp=0x2aaaad359e00, num=0, blockptr=0x2aaaad359e29, flag=8, id=2856, me=0x1a9a1a0, recv=33097800) at vm_insnhelper.c:528
#40 0x00002b0ebc4f00f3 in vm_exec_core (th=0x23a2dc0, initial=<optimized out>) at insns.def:1006
#41 0x00002b0ebc4f5889 in vm_exec (th=0x2aaab4414300) at vm.c:1147
#42 0x00002b0ebc4f9e19 in invoke_block_from_c (th=0x23a2dc0, block=0x2aaaad359f30, self=33097800, argc=1, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:558
#43 0x00002b0ebc4fa341 in rb_yield_0 (argv=<optimized out>, argc=<optimized out>) at vm.c:588
#44 catch_i (tag=2082830, data=<optimized out>) at vm_eval.c:1459
#45 0x00002b0ebc4e7943 in rb_catch_obj (tag=2082830, func=0x2b0ebc4fa300 <catch_i>, data=0) at vm_eval.c:1534
#46 0x00002b0ebc4e8bdd in rb_f_catch (argc=<optimized out>, argv=<optimized out>) at vm_eval.c:1510
#47 0x00002b0ebc4ed2a8 in vm_call_cfunc (me=<optimized out>, blockptr=<optimized out>, recv=<optimized out>, num=<optimized out>, reg_cfp=<optimized out>, th=<optimized out>)
    at vm_insnhelper.c:402
#48 vm_call_method (th=0x23a2dc0, cfp=0x2aaaad359f08, num=1, blockptr=0x2aaaad359f31, flag=8, id=2840, me=0x1a99e20, recv=33097800) at vm_insnhelper.c:528
#49 0x00002b0ebc4f00f3 in vm_exec_core (th=0x23a2dc0, initial=<optimized out>) at insns.def:1006
#50 0x00002b0ebc4f5889 in vm_exec (th=0x2aaab4414300) at vm.c:1147
#51 0x00002b0ebc4f9e19 in invoke_block_from_c (th=0x23a2dc0, block=0x23f5230, self=33097800, argc=0, argv=0x0, blockptr=0x0, cref=0x0) at vm.c:558
#52 0x00002b0ebc4fa1ef in rb_vm_invoke_proc (th=0x23a2dc0, proc=0x23f5230, self=33097800, argc=0, argv=0x224d2d0, blockptr=0x0) at vm.c:604
#53 0x00002b0ebc501bd2 in thread_start_func_2 (th=0x23a2dc0, stack_start=0x4020c128) at thread.c:450
#54 0x00002b0ebc501cef in thread_start_func_1 (th_ptr=<optimized out>) at thread_pthread.c:394
#55 0x0000003cb560677d in start_thread () from /lib64/libpthread.so.0
#56 0x0000003cb46d3c1d in clone () from /lib64/libc.so.6
#57 0x0000000000000000 in ?? ()

Note that this behavior can be recreated consistently.


 Comments   
Comment by Charles Leu [ 17/Jan/13 ]
Notes and Questions:
1) Running my test single threaded does _not_ recreate this problem.
2) Running my test multi threaded yields this problem reliably (100% of the time so far).
3) To date I've only used/tested Couchbase via the Ruby client library.
4) How many other developers use the Ruby client library, and of those that use it, are their apps multi-threaded?
5) I noted that the tests for the Ruby client library didn't appear to have any that are multi-threaded.
6) Do any of your other client tests using threading, and attempt to perform set operations simultaneously?
7) Perhaps the 'Component" for this issue be changed to Ruby Client Library; please do so if you believe that is more correct.
Comment by Matt Ingenthron [ 17/Jan/13 ]
Valid questions Charles. Let me pass this to our Ruby client lead and have him look it over. We can move it to the RCBC project if it's in fact different.
Comment by Matt Ingenthron [ 17/Jan/13 ]
Sergey: Can you look at this to see if it should be moved to RCBC?
Comment by Charles Leu [ 17/Jan/13 ]
I've learned that this particular issue is/was due to the sharing of the Couchbase connection amongst threads. When the test app uses thread-local storage to house/use a connection per thread, things work without ado.

Perhaps you want to put logic in place (e.g. a monitor per connection) to ensure connection sharing doesn't lead to a SEGV or other problem (e.g. deadlock). I guess the client could also implement such logic, however using thread-local storage with multiple connections is clearly a better option.

Note that I'm fine with things as they are. However if the client lib had the aforementioned logic in place, it would have saved us some time (i.e. on both my end and yours).

Thank you for your consideration and support.
Comment by Sergey Avseyev [ 22/Jan/13 ]
Hi, Charles.

As you pointed out above, the libcouchbase handle itself isn't supposed to be shared between threads, and currently the caller should protect the connection instance either by copying it with Bucket#dup for each thread, which will lead to establishing new connection, or implementing thread-safe wrapper which will make sure that the handle won't be accessed from several threads.
Comment by Mike Evans [ 21/Mar/13 ]
Interesting, just ran into this segfault in the Ruby client 1.2.2. I also have a multi-threaded app where each thread needs to do get and set operations against CB. I get that we shouldn't be sharing the handle between threads, and the Thread.current storage in 1.2.2 does fix this for connections initiated from the Couchbase module.

The packaged CouchbaseStore ActiveSupport::Cache implementation however is not threadsafe in this regard--it creates one connection to the bucket and shares that across any threads, potentially resulting in the segfault.

The fix is rudimentary, so look for a pull request shortly.
Comment by Sergey Avseyev [ 21/Mar/13 ]
Thanks, will be glad to review
Comment by Mike Evans [ 21/Mar/13 ]
Just pushed:
http://review.couchbase.org/#/c/25294/

I'm wondering if it wouldn't be helpful in some circumstances to have the option of an imposed mutex/monitor instead of a thread local variable in the Couchbase module itself. Thinking about my own app--dozens of Couchbase Models, each with their own Bucket connection--then potentially dozens of threads. Seems like that would be spinning up a lot of connections to the server per-process.

Comment by Sergey Avseyev [ 21/Mar/13 ]
Yeah, I'm planning to implement pooling there, to allow to re-use and share connections if it is possible, but once you will store docs in different buckets, it will require separate connection per bucket
Comment by Mike Evans [ 02/May/13 ]
Pushed a Connection Pool branch for review:

http://review.couchbase.org/#/c/26028/
which relies on:
https://github.com/mperham/connection_pool

It's mainly targeted at ActiveSupport::Cache::CouchbaseStore, however could be used more generically for any Couchbase bucket connections:

@pool = Couchbase::ConnectionPool.new # => default connection args and 5 connections in the pool
@pool.set('foo', 'bar') # => checks our a connection to run set on--will block until a connection is available
@pool.get('foo') # => 'bar'

I think I implemented all operations but might have missed some.


Comment by Sergey Avseyev [ 06/May/13 ]
Merged to upstream
https://github.com/couchbase/couchbase-ruby-client/commit/5454381ca3aa7ee8a02e41e0d8ff87e8408504a2




[RCBC-110] SEGV during set operation when using/running ruby client multi-threaded Created: 17/Jan/13  Updated: 08/Feb/13  Resolved: 17/Jan/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Charles Leu Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-111 SEGV during set operation when using/... Closed

 Description   
Bug was inadvertently created under project Couchbase Server - my apologies.
I don't know how to migrate the bug into this project; please refer to MB-7544 http://www.couchbase.com/issues/browse/MB-7544





[RCBC-109] Add Observe-methods into Rdoc TOC Created: 10/Jan/13  Updated: 11/Jan/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Hi Sergey,

Can you add an item in the top-level RDoc table of content for the observe-methods in Ruby? A customer just asked about it in Rdoc. In general, the Rdoc is great language reference resource for the SDK, but this item that is hard to find from the first Rdoc page: http://www.couchbase.com/autodocs/couchbase-ruby-client-1.2.0/Couchbase/Bucket.html#observe_and_wait-instance_method



Thanks,

Karen




 Comments   
Comment by Sergey Avseyev [ 11/Jan/13 ]
Do you mean into README file which is rendering when you will navigate to http://www.couchbase.com/autodocs/couchbase-ruby-client-1.2.0?
Comment by kzeller [ 11/Jan/13 ]
What I mean is that "USAGE" navigation box where you can see a list of all the major areas. It would be good to have an "observe" item in that list where you have get, etc....




[RCBC-108] Add Couchbase operation logging Created: 28/Dec/12  Updated: 08/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Mike Evans Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-41 Integrate log4r and log interesting e... Open

 Description   
I'd love to have some basic logging of Couchbase operations--really would love them in the couchbase gem itself, but would be happy if we could at least have it in the Couchbase-Model gem.

My quick stab at it is here:
https://github.com/mje113/couchbase-ruby-model/commit/e3029076a00b120832e553563b93d92b8124100b

It's not meant to be complete--just the basics of what I'm thinking of.




[RCBC-107] Dupe test name hiding failing test. Created: 28/Dec/12  Updated: 13/Jan/14  Resolved: 06/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Minor
Reporter: Mike Evans Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
There's two versions of test_it_raises_not_found_exception, one intended for Model#find, and the other for Model#find_by_id. It's hiding a mismatched expected exception for find with a bad id. Pull request:
http://github.com/couchbase/couchbase-ruby-model/pull/3

Sorry for the additional commits in the pull request, I should have rebased first or something...




[RCBC-105] Docs: What operating system versions does the ruby gem support? Created: 20/Dec/12  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.2.0
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
I seem to be having problems installing this on CentOS 5.8. I'm not sure if that's the problem, but I tried to verify it via our documentation and couldn't find what versions were supported or not.

 Comments   
Comment by Sergey Avseyev [ 06/May/13 ]
couchbase ruby gem depends on ruby 1.8.7+ and libcouchbase (if there are issues with libcouchbase, please report to CCBC)

According to official ruby site ruby 1.9.3 is supported by centos 5 (probably not from official repository, but should work without any problems): https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms#Ruby-193
Comment by kzeller [ 06/May/13 ]
Please add this information to the correct part of the documentation set for Ruby.
Comment by Sergey Avseyev [ 13/Jan/14 ]
It should be obvious from getting started that ruby gem depends on libcouchbase, therefore works everywhere libcouchbase and one of the supported ruby interpreters installed




[RCBC-104] Data corruption on intensive get/set Created: 20/Dec/12  Updated: 08/Feb/13  Resolved: 20/Dec/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File corrupt.rb    

 Description   
The script attached produces the following output:

~ $ ruby corrupt.rb
corrupt.rb:8:in `get': unable to convert value for key 'mm_71': lexical error: invalid char in json text. (Couchbase::Error::ValueFormat)
                                        2 (right here) ------^
        from corrupt.rb:8:in `block (3 levels) in <main>'
        from corrupt.rb:6:in `times'
        from corrupt.rb:6:in `block (2 levels) in <main>'
        from corrupt.rb:4:in `fork'
        from corrupt.rb:4:in `block in <main>'
        from corrupt.rb:3:in `times'
        from corrupt.rb:3:in `<main>'
corrupt.rb:8:in `get': unable to convert value for key 'mm_71': lexical error: invalid char in json text. (Couchbase::Error::ValueFormat)
                                        2 (right here) ------^
Process from corrupt.rb:8:in `block (3 levels) in <main>'
        from corrupt.rb:6:in `times'
        from corrupt.rb:6:in `block (2 levels) in <main>'
        from corrupt.rb:4:in `fork'
        from corrupt.rb:4:in `block in <main>'
        from corrupt.rb:3:in `times'
        from corrupt.rb:3:in `<main>'
corrupt.rb:8:in `get': unable to convert value for key 'mm_71': lexical error: invalid char in json text. (Couchbase::Error::ValueFormat)
                                        2 (right here) ------^
        from corrupt.rb:8:in `block (3 levels) in <main>'
        from corrupt.rb:6:in `times'
        from corrupt.rb:6:in `block (2 levels) in <main>'
        from corrupt.rb:4:in `fork'
        from corrupt.rb:4:in `block in <main>'
        from corrupt.rb:3:in `times'
        from corrupt.rb:3:in `<main>'
corrupt.rb:8:in `get': unable to convert value for key 'mm_71': lexical error: invalid char in json text. (Couchbase::Error::ValueFormat)
                                        2 (right here) ------^
        from corrupt.rb:8:in `block (3 levels) in <main>'
        from corrupt.rb:6:in `times'
        from corrupt.rb:6:in `block (2 levels) in <main>'
        from corrupt.rb:4:in `fork'
        from corrupt.rb:4:in `block in <main>'
        from corrupt.rb:3:in `times'
        from corrupt.rb:3:in `<main>'


 Comments   
Comment by Sergey Avseyev [ 20/Dec/12 ]
Fixed http://review.couchbase.org/23462




[RCBC-103] Improvements to the Getting Started Guide and the Tutorial Created: 20/Dec/12  Updated: 13/Jan/14

Status: Open
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.2.0
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Michael Nitschinger Assignee: Amy Kurtzman
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Ruby Docs

*** Getting Started ***

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/installing_the_couchbase_client_libraries.html
- link broken: ... is libcouchbase. Please consult [C Client Library page about w ...

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/hello_couchbase.html
- In the list where the conn params are explained, maybe explain why I need to ouse the list param
when I have more then one node (where I have to use host?)? Its not really obvious why I have two
different args for the same type.
- Maybe add a quick sentence what marhsal does? Serialzining ruby objects? Note that you cant use
views with it.

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/creating_and_updating_documents.html
- here it talks about the :plain mode and I'm confused, whats the different to :marshal? Maybe
good to explain in a sentence.

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/reading_documents.html
- Where basic view querying is explained, I think we need to add a sentence or two on how
a second HTTP request is maed when you access the design document. Since you ask an array here,
is it prefetched? how does it work? Would be good to know so that people dont use it in a loop
for example.

*** Tutorial **

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/_tl_dr.html
- I think you need to tell people how to install bundler? I have it, but I'm not sure if it comes
by default? If it is always there forget this comment :)

- Sign in with twitter gives me 401 unauthorized.. do we really need this and is it supposed to
work? Otherwise the sample app works out of the box, cool work.

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/_create_application_skeleton.html
- Can you explain the --old-style-hash in a sentence? Dont know what it is?
- The short gem description only contains omniauth-twitter, but the full also omniauth?
- maybe mention to update the dependencies after the changes? bundle update?

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/_implement_controllers.html
- Where you explain the controller functionality: it's not really obvios how the methods map to the
views. What will happen when you access a different method that has no view defined? Just a few
words to explain how the "magical" vie access works would be good I think.

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/_bonus_spatial_queries_sessions_and_cache.html
- On caching: will it use the same couchbase client connection or instantiate a new one?

Otherwise good job! :)

 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
This is notes for older version of the docs. Could you check if any of those relevant? And open separate issues if needed. Thanks




[RCBC-102] Store methods behaves inconsistently when persistence constraints specified Created: 15/Dec/12  Updated: 08/Feb/13  Resolved: 15/Dec/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0
Fix Version/s: 1.2.1
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The Bucket#set for example should return the object corresponding to arguments passed:

  1.9.3p327 (main):002:0> conn.set("foo", "bar")
  851339802448297984
  1.9.3p327 (main):003:0> conn.set("foo" => "bar", "baz" => "foo")
  {"foo"=>2995536636664938496, "baz"=>16831440216388861952}

But when :observe option is used, it always return it like for multi-set

  1.9.3p327 (main):004:0> conn.set("foo", "bar", :observe => {:persisted => 1})
  {"foo"=>2559248876759744512}



 Comments   
Comment by Sergey Avseyev [ 15/Dec/12 ]
http://review.couchbase.org/23336
Comment by Matt Ingenthron [ 15/Dec/12 ]
that does seem to be an issue

you're a better judge than I am, but I'd think we'd want the response to be the same whether or not using the :observe

If the change makes it more consistent, then yes it's an API change from 1.2.0 but it's really getting back to what we expect so perfectly acceptable. Definitely something to release note though.




[RCBC-101] Observe options isn't passed to the store commands Created: 15/Dec/12  Updated: 08/Feb/13  Resolved: 15/Dec/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0
Fix Version/s: 1.2.1
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 15/Dec/12 ]
http://review.couchbase.org/23335




[RCBC-100] Provide proper attribute inheritance when subclassing Couchbase::Model subclasses. Created: 07/Dec/12  Updated: 08/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Mike Evans Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
(Pull request to fix this can be found here: https://github.com/couchbase/couchbase-ruby-model/pull/2 )

Currently, Couchbase::Model stores attributes (and views) in a class variable set to a mutable hash. This breaks the expected subclass attribute inheritance behavior that ActiveModel provides.

Example:

class A < Couchbase::Model
  attribute :one
end

class B < A
  attribute :two
end

B.attributes #=> {:one => nil, :two => nil}
A.attributes #=> {:one => nil, :two => nil}
B.attributes.object_id == A.attributes.object_id #=> true

This patch enables proper inheritance when ::Rails is present by using Class#class_attribute and detecting subclass additions to attribute:

class A < Couchbase::Model
  attribute :one
end

class B < A
  attribute :two
end

A.attributes #=> {:one => nil}
B.attributes #=> {:one => nil, :two => nil}
B.attributes.object_id != A.attributes.object_id #=> true

 Comments   
Comment by Mike Evans [ 10/Dec/12 ]
Pull request was updated with an improved patch and passing tests.
Comment by Sergey Avseyev [ 08/Feb/13 ]
http://review.couchbase.org/23392




[RCBC-99] When posting JSON strings in rails this function is passed a StringIO object not a string. Created: 05/Dec/12  Updated: 08/Feb/13  Resolved: 06/Dec/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.z.beta4
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://github.com/couchbase/couchbase-ruby-client/pull/5

When posting JSON strings in rails this function is passed a StringIO object not a string.
This causes the following error:

MultiJson::DecodeError
399: unexpected token at '#<StringIO:0x2f64720>]'

 Comments   
Comment by Sergey Avseyev [ 06/Dec/12 ]
http://review.couchbase.org/23117




[RCBC-98] Internalize the most frequently used strings Created: 04/Dec/12  Updated: 12/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.2
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 04/Dec/12 ]
like "default" and empty string
Comment by Sergey Avseyev [ 08/Feb/13 ]
http://review.couchbase.org/23444
http://review.couchbase.org/23043




[RCBC-97] Use ruby strings instead of char * Created: 04/Dec/12  Updated: 08/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Simplify memory management, reduce reallocations

 Comments   
Comment by Sergey Avseyev [ 08/Feb/13 ]
http://review.couchbase.org/23045
http://review.couchbase.org/23041
http://review.couchbase.org/23042
http://review.couchbase.org/23040
http://review.couchbase.org/23039
http://review.couchbase.org/23038




[RCBC-96] Release notes needed for 1.1.3, 1.1.4, 1.1.5 Created: 30/Nov/12  Updated: 08/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.1.5
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
1.1.5 is marked as "unreleased" in Jira, yet it is avialable for d/l on http://www.couchbase.com/develop/ruby/current. No release notes are avialable after 1.1.2 release.

 Comments   
Comment by Sergey Avseyev [ 30/Nov/12 ]
https://github.com/couchbase/docs/issues/149
Comment by Sergey Avseyev [ 30/Nov/12 ]
and marked 1.1.5 as released




[RCBC-95] Server's helpful error about map.js errors gets replaced by a generic http 400 happened while uploading design document Created: 23/Nov/12  Updated: 08/Feb/13  Resolved: 29/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.0.z.beta4
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Piotr Banasik Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mountain Lion


 Description   
Repro:

Create a new model, use the genrator to create a view
add the view line to the model
start the app (rails console)

The default map.js with all the comments in and examples will cause the error already.

/Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-1.2.0.z.beta4/lib/couchbase/bucket.rb:165:in `continue': failed to execute HTTP request (key="_design/clocking", status="400" (Bad Request), error=0x00) (Couchbase::Error::HTTP)
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-1.2.0.z.beta4/lib/couchbase/bucket.rb:165:in `save_design_doc'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-model-0.5.0/lib/couchbase/model.rb:260:in `ensure_design_document!'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-model-0.5.0/lib/couchbase/railtie.rb:120:in `block (3 levels) in <class:Railtie>'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-model-0.5.0/lib/couchbase/railtie.rb:119:in `each'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/couchbase-model-0.5.0/lib/couchbase/railtie.rb:119:in `block (2 levels) in <class:Railtie>'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:418:in `_run__3328634455356380055__prepare__3132553472985099836__callbacks'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:405:in `__run_callback'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:81:in `run_callbacks'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/actionpack-3.2.9/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/actionpack-3.2.9/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `instance_exec'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `run'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/initializable.rb:55:in `block in run_initializers'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `each'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `run_initializers'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/application.rb:136:in `initialize!'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /Users/piotr/Work/git/ph_time/config/environment.rb:5:in `<top (required)>'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/application.rb:103:in `require'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/application.rb:103:in `require_environment!'
from /Users/piotr/.rvm/gems/ruby-1.9.3-p327@time/gems/railties-3.2.9/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

Now after a bit of tinkering .. I just added an else to the if block_given? in there .. to reveal the error ..
        if block_given?
          if res.success? && val['error']
            res.error = Error::View.new("save_design_doc", val['error'])
          end
          yield(res)
        else
          unless res.success?
            if val['error'] && val['reason']
              raise Couchbase::Error::View.new(val['error'], val['reason'])
            end
          end
        end

And that returned a much more civil error:

SERVER: invalid_design_document: Syntax error in the map function of the view `by_date': SyntaxError: Unexpected end of input (Couchbase::Error::View)


 Comments   
Comment by Piotr Banasik [ 23/Nov/12 ]
Not sure if you want to keep that error code in there .. or perhaps tweak how the res.error stuff works in the block given section and call this better in the client lib perhaps? Not sure .. maybe tweak it on both ends really ..
Comment by Sergey Avseyev [ 29/Nov/12 ]
Fix http://review.couchbase.org/22894




[RCBC-94] Ruby client memoise last exception Created: 19/Nov/12  Updated: 08/Feb/13  Resolved: 19/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.z.beta3
Fix Version/s: 1.2.0.z.beta4
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Ruby client doesn't erase exception received in global error callback and keep using it as a error indicator.

 Comments   
Comment by Sergey Avseyev [ 19/Nov/12 ]
http://review.couchbase.org/22645




[RCBC-93] Ruby Client does not handle the timeout appropriately Created: 24/Oct/12  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Resolved
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Ruby client 1.1.1

Attachments: File couch.rb    

 Description   
This is the problem that the customer is encountering
(Ruby code coming up):

Timeout::timeout(2) do
couch_client.get(key)
end

But we are seeing Couchbase::Error::Timeout exceptions being raised. I know the default timeout for the Couchbase client gem is greater than 2 seconds, so I'm wondering: what could cause Couchbase to return a timeout (0x16 error code) before it actually has time to timeout?

The complete ruby source code is attached , Please take a look at it.

------
support's analysis:
 The client is not timing out fast enough it should time out in 2.5 sec or something but instead it's waiting a long time.



 Comments   
Comment by Sergey Avseyev [ 13/Jan/14 ]
The issue was likely fixed in libcouchbase and currently is not reproducing




[RCBC-92] rb_sprintf() isn't available in ruby 1.8.7, so recent couchbase-ruby-client doesn't work there Created: 14/Nov/12  Updated: 08/Feb/13  Resolved: 14/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta4
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 14/Nov/12 ]
http://review.couchbase.org/22511




[RCBC-91] Ruby gem installation instructions don't work Created: 12/Nov/12  Updated: 12/Nov/12  Resolved: 12/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.2.0.dp6
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Sergey Avseyev
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The instructions for installing the gem here are incorrect (at least according to my novice cut/paste):
http://www.couchbase.com/develop/ruby/next

[root@localhost ~]# gem install couchbase --pre
ERROR: While executing gem ... (OptionParser::InvalidOption)
    invalid option: --pre

 Comments   
Comment by Perry Krug [ 12/Nov/12 ]
Looks like it might be a problem with my version of Ruby...I'll upgrade and retry




[RCBC-90] It isn't possible to pass custom connection options to Rack session store Created: 07/Nov/12  Updated: 13/Nov/12  Resolved: 08/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta4
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 08/Nov/12 ]
http://review.couchbase.org/22207




[RCBC-89] make sure include_docs is "logical" Created: 05/Nov/12  Updated: 13/Nov/12  Resolved: 12/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta4
Security Level: Public

Type: New Feature Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently, include_docs fetches the doc from the view. This needs to change so the doc is fetched from the cache, so it's a "logical" include docs. This would mean that the docs can be out of sync w.r.t. the view, but that's an inconsistency we can live with.




[RCBC-88] The library 1.2.0.z.beta2 fails to install with libcouchbase 2.0.0beta Created: 10/Oct/12  Updated: 13/Nov/12  Resolved: 18/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.0.z.beta
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[RCBC-87] Gem is failing to install on macos Created: 08/Oct/12  Updated: 13/Nov/12  Resolved: 08/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.0.z.beta2
Fix Version/s: 2.0.0.alpha
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
make
xcrun cc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0 -I. -DRUBY_EXTCONF_H=\"couchbase_config.h\" -I/usr/local/Cellar/libevent/2.0.19/include -I/opt/local/include -I/usr/local/include -I/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -std=c99 -Wall -Wextra -c arguments.c
In file included from arguments.c:18:
couchbase_ext.h:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'hrtime_t'
couchbase_ext.h:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gethrtime'
make: *** [arguments.o] Error 1

 Comments   
Comment by Sergey Avseyev [ 08/Oct/12 ]
http://review.couchbase.org/21427




[RCBC-85] undefined method `default' for Class Created: 26/Sep/12  Updated: 13/Nov/12  Resolved: 26/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.z.beta
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Patrick Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mac OS 10.8.1
ruby 1.9.3p194
Rails 3.2.8


 Description   
When using 'save' on an existing and previously saved document, there's a 'undefined method'-error on 'default'. 'save' and 'update' result in the same error.

class TestDoc < Couchbase::Model
  attribute :email, :default => ''
  attribute :created_at, :default => lambda { Time.zone.now }
  
  view :by_created_at
end

t = TestDoc.new(:id => request.session_options[:id])
t.save
t = TestDoc.find(request.session_options[:id])
t.email = 'hello'
t.update(:email => 'blubb')

undefined method `default' for TestDoc(id, email, created_at):Class

couchbase-model (0.4.0) lib/couchbase/model.rb:487:in `save'
(eval):4:in `block in save'
activesupport (3.2.8) lib/active_support/callbacks.rb:403:in `_run__3218406879367123135__save__4511417429032474671__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
(eval):3:in `save'
couchbase-model (0.4.0) lib/couchbase/model.rb:501:in `update'
(eval):4:in `block in update'
activesupport (3.2.8) lib/active_support/callbacks.rb:403:in `_run__3218406879367123135__update__4511417429032474671__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in `_run_update_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
(eval):3:in `update'

 Comments   
Comment by Sergey Avseyev [ 26/Sep/12 ]
http://review.couchbase.org/21123




[RCBC-84] require 'couchbase' fails - LoadError - not found Created: 21/Sep/12  Updated: 13/Nov/12  Resolved: 22/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.z.beta
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Blocker
Reporter: Patrick Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.1.0]
gem 1.8.24
Rails 3.2.6
libcouchbase 2


 Description   
I can't include/'require' the couchbase gem. Installation was successful and also libcouchbase is installed. There's no further error message.

lightbox: me$ gem install couchbase --pre
Successfully installed couchbase-1.2.0.z.beta
1 gem installed
Installing ri documentation for couchbase-1.2.0.z.beta...
Installing RDoc documentation for couchbase-1.2.0.z.beta...

lightbox: me$ cat test.rb
require 'couchbase'
c = Couchbase.new("http://localhost:8091/pools/default")

lightbox: me$ ruby test.rb
/Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- couchbase (LoadError)
from /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:1:in `<main>'

lightbox: me$ rails console
Loading development environment (Rails 3.2.6)
1.9.3p194 :001 > require 'couchbase'
LoadError: cannot load such file -- couchbase
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require'
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require'
from (irb):1
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
from /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:9:in `require'
from script/rails:9:in `<main>'
1.9.3p194 :002 >


 Comments   
Comment by Patrick [ 21/Sep/12 ]
It was a follow up problem from the failed gem installation before. Forked the repo, changed the file and everything works now.




[RCBC-83] gem install couchbase fails Created: 19/Sep/12  Updated: 13/Nov/12  Resolved: 19/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.z.beta
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-82 gem install couchbase --pre on OSX 10... Closed

 Description   
me$ gem install couchbase --pre
Building native extensions. This could take a while...
ERROR: Error installing couchbase:
ERROR: Failed to build gem native extension.

        /Users/me/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
extconf.rb:25:in `block in <main>': uninitialized constant RbConfig::ARCHFLAGS (NameError)
from extconf.rb:24:in `each'
from extconf.rb:24:in `<main>'


Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/couchbase-1.2.0.z.beta for inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.3-p194/gems/couchbase-1.2.0.z.beta/ext/couchbase_ext/gem_make.out





[RCBC-82] gem install couchbase --pre on OSX 10.8.1 with Ruby 1.9.3-p194 Created: 19/Sep/12  Updated: 13/Nov/12  Resolved: 19/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.dp6
Fix Version/s: 1.2.0.z.beta2
Security Level: Public

Type: Bug Priority: Blocker
Reporter: Patrick Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.1.0]
Rails 3.2.6
Mac OS X 10.8.1

Issue Links:
Duplicate
is duplicated by RCBC-83 gem install couchbase fails Closed

 Description   
brew install https://raw.github.com/couchbase/homebrew/preview/Library/Formula/libcouchbase.rb

patrick$ gem install couchbase --pre
Building native extensions. This could take a while...
ERROR: Error installing couchbase:
ERROR: Failed to build gem native extension.

        /Users/patrick/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
extconf.rb:25:in `block in <main>': uninitialized constant RbConfig::ARCHFLAGS (NameError)
from extconf.rb:24:in `each'
from extconf.rb:24:in `<main>'


Gem files will remain installed in /Users/patrick/.rvm/gems/ruby-1.9.3-p194/gems/couchbase-1.2.0.z.beta for inspection.
Results logged to /Users/patrick/.rvm/gems/ruby-1.9.3-p194/gems/couchbase-1.2.0.z.beta/ext/couchbase_ext/gem_make.out

 Comments   
Comment by Sergey Avseyev [ 19/Sep/12 ]
Could you attach your rbconfig.rb from your ruby installation?
Comment by Sergey Avseyev [ 19/Sep/12 ]
I guess I know that the problem in that the RVM doesn't build fat binary for ruby, there fore I should check for defined?(RbConfig::ARCHFLAGS) in the extconf.rb. But I'd like to make sure
Comment by Sergey Avseyev [ 19/Sep/12 ]
The fix http://review.couchbase.org/20959

Patrick, could you verify all is working?

cd /Users/patrick/.rvm/gems/ruby-1.9.3-p194/gems/couchbase-1.2.0.z.beta/ext/couchbase_ext
ruby extconf.rb
make

it should build without errors, if so just let me know and I will roll another version
Comment by Sergey Avseyev [ 19/Sep/12 ]
Of course you should make this change before running ruby extconf.rb

http://review.couchbase.org/#/c/20959/1/ext/couchbase_ext/extconf.rb
Comment by Patrick [ 19/Sep/12 ]
ruby extconf.rb executes correctly. Just trying to install the gem.
Comment by Patrick [ 19/Sep/12 ]
Gem installed. Everything good! Thanks a lot!




[RCBC-81] Unable to gem install couchbase Created: 17/Sep/12  Updated: 13/Nov/12  Resolved: 17/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.1.4
Fix Version/s: 1.1.5, 1.2.0.z.beta
Security Level: Public

Type: Bug Priority: Major
Reporter: Karan Kumar (Inactive) Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Centos 6.2


 Description   
[root@cen-1908 ~]# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
[root@cen-1908 ~]# gem --version
1.8.10

Followed the instructions listed here:-
https://github.com/couchbase/couchbase-ruby-client



[root@cen-1908 ~]# gem install couchbase
Building native extensions. This could take a while...
......
ERROR: Error installing couchbase:
ERROR: Failed to build gem native extension.

        /usr/bin/ruby extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby
--with-libcouchbase-dir
--without-libcouchbase-dir
--with-libcouchbase-include
--without-libcouchbase-include=${libcouchbase-dir}/include
--with-libcouchbase-lib
--without-libcouchbase-lib=${libcouchbase-dir}/lib
extconf.rb:86: undefined method `<<' for nil:NilClass (NoMethodError)


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/couchbase-1.1.4 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/couchbase-1.1.4/ext/couchbase_ext/gem_make.out

 Comments   
Comment by Sergey Avseyev [ 17/Sep/12 ]
Could you also attach /usr/lib/ruby/gems/1.8/gems/couchbase-1.1.4/ext/couchbase_ext/gem_make.out ?
Comment by Karan Kumar (Inactive) [ 17/Sep/12 ]
gem_make.out

/usr/bin/ruby extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/usr/bin/ruby
        --with-libcouchbase-dir
        --without-libcouchbase-dir
        --with-libcouchbase-include
        --without-libcouchbase-include=${libcouchbase-dir}/include
        --with-libcouchbase-lib
        --without-libcouchbase-lib=${libcouchbase-dir}/lib
extconf.rb:86: undefined method `<<' for nil:NilClass (NoMethodError)




[RCBC-80] Use restful flush instead memcached Created: 11/Sep/12  Updated: 13/Nov/12  Resolved: 13/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-79 flush should use the the restful flus... Closed

 Comments   
Comment by Sergey Avseyev [ 13/Sep/12 ]
http://review.couchbase.org/20824




[RCBC-79] flush should use the the restful flush with error handling Created: 11/Sep/12  Updated: 13/Nov/12  Resolved: 17/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by RCBC-80 Use restful flush instead memcached Closed

 Description   
The server side does not support flush for now, so this should fail with the server's error message for now, but should later work when it's enableable at the server.




[RCBC-78] Need Alternative to Event Loop Created: 27/Aug/12  Updated: 01/May/14

Status: Open
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.0.0, 1.1.0, 1.2.0.z.beta
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Production Management (DiptiP), and Customer Support team request that we provide an alternative to the event loop for asynchronous operations, which takes a function/callback as a parameter in the method signature and has an explicit return.

 Comments   
Comment by Matt Ingenthron [ 28/Aug/12 ]
In the future, it'd be good for Product Management(sic) to talk with product management: me. :)

This is not something planned in the short term. Moving to 2.0.




[RCBC-77] Incorporate Feedback from Sergey on Advanced Topics 1.8 Created: 27/Aug/12  Updated: 13/Nov/12  Resolved: 27/Aug/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp5
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File Re- New Content for Review.eml    

 Comments   
Comment by kzeller [ 27/Aug/12 ]
Added Sergey's edits/changes.




[RCBC-76] Provide get and lock as API Created: 24/Aug/12  Updated: 11/Sep/12  Resolved: 27/Aug/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provide get and lock as an API method.

 Comments   
Comment by Sergey Avseyev [ 24/Aug/12 ]
Couchbase::Bucket#get has option lock, so the get with this option is the "get and lock", see examples at

http://rdoc.info/github/couchbase/couchbase-ruby-client/Couchbase/Bucket#get-instance_method

and also implementation and tests

https://github.com/couchbase/couchbase-ruby-client/blob/13ca5c6bed/ext/couchbase_ext/couchbase_ext.c#L3078

https://github.com/couchbase/couchbase-ruby-client/blob/13ca5c6bed/test/test_get.rb#L349-L397
Comment by kzeller [ 27/Aug/12 ]
Will add to docs.
Comment by kzeller [ 27/Aug/12 ]
Added to 1.8 and will add to 2.0 chapters.
Comment by kzeller [ 27/Aug/12 ]
Do you have any examples in a reference app?




[RCBC-75] Provide Consistent Order of Parameters Created: 24/Aug/12  Updated: 01/May/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provide consistent, predictable order for method parameters as other SDKS.

 Comments   
Comment by Sergey Avseyev [ 24/Aug/12 ]
Could you extend your query please with examples? Where the API is inconsistent and unpredictable?
Comment by kzeller [ 27/Aug/12 ]
Here is the first example. This may require a fix on the Java side vs. the Ruby side:

http://www.couchbase.com/docs/couchbase-sdk-java-1.0/couchbase-sdk-java-set-add.html#table-couchbase-sdk_java_add

Order is key, expiry, then value

Should be one fairly consistent order across the SDKs.

Will add others as either I or others (customer support) run across them.

Comment by kzeller [ 27/Aug/12 ]
I have reassigned this to Matt so this can be looked at globally post 2.0, and hopefully approached across the SDKs. This is a repeated request I am getting from customer support.




[RCBC-74] Provide Standardized Logging Created: 24/Aug/12  Updated: 08/Feb/13  Resolved: 08/Feb/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-41 Integrate log4r and log interesting e... Open

 Description   
Provides the consistent level of logging provided by other SDKs. Provide more information on configuring logging for developers.




[RCBC-73] Provide Consistent Timeouts Created: 24/Aug/12  Updated: 24/Aug/12

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provides the consistent level of time outs with other SDKs. Provide ability to set timeouts at: 1) connection, 2) authentication, and 3) ops level.




[RCBC-72] Need Consistent Error Handling Created: 24/Aug/12  Updated: 24/Aug/12

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Need error handling more consistent with other SDKs (error messages) and more consistent with underlying memcached protocol.




[RCBC-71] Calling incorrect methods on MultiJson when format is :document causing Couchbase::Error::ValueFormat Created: 16/Aug/12  Updated: 13/Nov/12  Resolved: 19/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.2.0.dp6
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Chris McGrath Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The C code calls dump/load on MultiJson, but its interface is encode/decode. Adding the following hack allows me to .set when the format is :document.

module MultiJson
  class << self
    alias_method :dump, :encode
    alias_method :load, :decode
  end
end


 Comments   
Comment by Sergey Avseyev [ 17/Aug/12 ]
What multi-json version are you using? There is fix for that already included. I guess it doesn't meet condition for you. Could you please check it? https://github.com/couchbase/couchbase-ruby-client/blob/master/lib/ext/multi_json_fix.rb#L40-L47
Comment by Sergey Avseyev [ 17/Aug/12 ]
I see typo there

 MultiJson.respond_to?(:encode) && MultiJson.respond_to?(:encode)

But I don't think it cause the issue
Comment by Sergey Avseyev [ 19/Oct/12 ]
http://review.couchbase.org/21754




[RCBC-70] The library always returns strings in ASCII-8BIT encoding Created: 09/Aug/12  Updated: 13/Nov/12  Resolved: 28/Aug/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.2, 1.2.0.dp6
Fix Version/s: 1.1.3, 1.2.0.z.beta
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Original discussion
https://groups.google.com/d/topic/couchbase/bya0lSf9uGE/discussion

 Comments   
Comment by Sergey Avseyev [ 09/Aug/12 ]
Fix for 1.1.x branch http://review.couchbase.org/19405




[RCBC-69] Wrong URL to ruby client landing page at page "Couchbase Client Library Ruby 1.2" Created: 08/Aug/12  Updated: 13/Nov/12  Resolved: 09/Aug/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: MC Brown (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
there is typo on page

http://www.couchbase.com/docs/couchbase-sdk-ruby-1.2/index.html

it points to wrong url for client library page. it should be

    http://www.couchbase.com/develop/ruby/next

instead of

    http://www.couchbase.com/developer/ruby/next

 Comments   
Comment by MC Brown (Inactive) [ 09/Aug/12 ]
Fixed and published




[RCBC-68] views seem to be killing the connection when using Created: 07/Aug/12  Updated: 13/Jan/14  Resolved: 06/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
A user reports that they find the connection getting dropped when trying to use views. See
http://www.couchbase.com/forums/thread/ruby-sdk-12-problem-views




[RCBC-67] Append with :format => :plain seems to corrupt value Created: 01/Aug/12  Updated: 13/Nov/12  Resolved: 19/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.3
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: mac osx


 Description   
>> require 'couchbase'
=> true
>> cb= Couchbase.new
=> #<Couchbase::Bucket:0x10dd89a10 "http://localhost:8091/pools/default/buckets/default/" default_format=:document, default_flags=0x0, quiet=true, connected=true, timeout=2500000>
>> cb.set('karen', 'old')
=> 1585267068834414592
>> cb.append('karen', 'new', :format => :plain)
=> 1657324662872342528
>> cb.get('karen')
Couchbase::Error::ValueFormat: unable to convert value
from /Library/Ruby/Gems/1.8/gems/yajl-ruby-1.1.0/lib/yajl/json_gem/parsing.rb:23:in `get'
from (irb):5
from :0
>>

When I telnet I get this:

Karens-MacBook-Pro:~ kzeller$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get karen
VALUE karen 0 8
"old"new

so the value is appended, but somehow the SDK thinks the content is JSON, not plain.

 Comments   
Comment by Sergey Avseyev [ 19/Oct/12 ]
You should also set value with plain format because append/prep end are not allowed to change flags




[RCBC-66] Ruby Gem 1.1.2/1.1.3 not responding to :node_list param in Couchbase.new||Couchbase.connect Created: 30/Jul/12  Updated: 13/Jan/14  Resolved: 11/Jun/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs, library
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: I tried it on Amazon Linux with a cluster of two Couchbase 2.0 build 1495's specifying gem versions.


 Description   
:node_list syntax returning:
Connection failed: Connection refused (error=0x17) (Couchbase::Error::Connect)

Direct connection to each node works fine. It also works fine in 1.2.0dp6.

See thread for more info: http://www.couchbase.com/forums/thread/ruby-client-connection-refused-using-nodelist
I confirmed it wasn't working.

 Comments   
Comment by scalabl3 [ 30/Jul/12 ]
I tried it in both 1.1.2 and 1.1.3, neither worked. Like I said, it does work in 1.2.0dp6 latest release. Of course I also have a newer libcouchbase (the one required for dp6 of gem).
Comment by Sergey Avseyev [ 31/Jul/12 ]
I thought its kind of feature, not a bug therefore shouldn't be merged into stable branch. there is workaround although. User could create array of hosts and shift and try host checking for connect error
Comment by scalabl3 [ 01/Aug/12 ]
Ah, true, I think what is confusing is the docs on github show the syntax but it only works in dp gem... maybe just make a quick note about that?
Comment by Sergey Avseyev [ 02/Aug/12 ]
Could you put the link?
Comment by Sergey Avseyev [ 11/Jun/13 ]
We aren't backporting features to previous versions without escalation




[RCBC-65] Accept only allowed options for the methods Created: 27/Jul/12  Updated: 19/Oct/12

Status: Open
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
It might be good to complain using ArgumentError on unsupported or invalid keys in options parameter for ruby API. Currently it is possible to pass any Hash as options and the library will silently pick only documented options ignoring all others. This could lead to some confusion (see RCBC-47) when people will use deprecated options or invalid key types (only symbols allowed)




[RCBC-64] Duplication connection instance segfaulting Created: 25/Jul/12  Updated: 13/Nov/12  Resolved: 26/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.2, 1.2.0.dp5
Fix Version/s: 1.1.3, 1.2.0.dp6
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
It is easy to reproduce

conn1 = Couchbase.connect
conn2 = conn1.dup

 Comments   
Comment by Sergey Avseyev [ 26/Jul/12 ]
Fixed in http://review.couchbase.org/18872




[RCBC-62] Support the setq memcache operation Created: 20/Jul/12  Updated: 13/Nov/12  Resolved: 08/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0.alpha
Security Level: Public

Type: New Feature Priority: Major
Reporter: Ben Poweski Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
We would like the couchbase driver to support the setq operation (writes without acknowledgment)

 Comments   
Comment by Sergey Avseyev [ 08/Oct/12 ]
Now the ruby client supports multi set/get/etc... operations which are pipelined like setq




[RCBC-61] Allow response aggregation for multi-keyed operations in asynchronous mode Created: 19/Jul/12  Updated: 19/Jul/12

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Mult-keyed operations behaves a bit different in async mode, they are yielding responses as far as they received. This is good, but it would be nice to have switch to force library to aggregate all of them.

Example:

Couchbase.bucket.run do |c|
  c.get("foo", "bar", "baz", :aggregate => true) do |results|
    results.each do |res|
       # ...
    end
  end
end




[RCBC-60] struct freed before rasied Created: 18/Jul/12  Updated: 13/Nov/12  Resolved: 27/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.1.2
Fix Version/s: 1.1.3
Security Level: Public

Type: Bug Priority: Major
Reporter: James Mauss Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
the ctx struct's freed before the exception ( exc ) is raised - so it references invalid memory

ext/couchbase_ext/couchbase_ext.c- exc = ctx->exception; <----
ext/couchbase_ext/couchbase_ext.c- extended = ctx->extended;
ext/couchbase_ext/couchbase_ext.c: free(ctx); <------
ext/couchbase_ext/couchbase_ext.c- if (exc != Qnil) {
ext/couchbase_ext/couchbase_ext.c- rb_exc_raise(exc); <------
ext/couchbase_ext/couchbase_ext.c- }

 Comments   
Comment by Sergey Avseyev [ 18/Jul/12 ]
free(ctx) means deallocate the memory of the struct. ctx->exception is just a pointer, and it is valid
Comment by Sergey Avseyev [ 18/Jul/12 ]
It would be better if I'll get stacktrace or minimal working script (or both)




[RCBC-59] Bucket#cas doesn't set original flags Created: 18/Jul/12  Updated: 13/Nov/12  Resolved: 18/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.2, 1.2.0.dp5
Fix Version/s: 1.1.3, 1.2.0.dp6
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The Bucket#cas operation resets flags

  > Couchbase.bucket.set("foo", "bar", :flags => 0x100)
  17982951084586893312
  > Couchbase.bucket.cas("foo") { "baz" }
  1712422461213442048
  > Couchbase.bucket.get("foo", :extended => true)
  ["baz", 0, 1712422461213442048]

So it could be dangerous if someone using custom flags or non-default value encoding (not :document)

 Comments   
Comment by Sergey Avseyev [ 18/Jul/12 ]
http://review.couchbase.org/18537




[RCBC-58] CAS block error Created: 17/Jul/12  Updated: 13/Nov/12  Resolved: 17/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.0.0
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mac OSX, couchbase (1.1.2)


 Description   
Unexpected CAS error:

Expected output from:

cb.default_format = :document
cb.set("trans1", "{'karen': '400', 'dipti': '800', 'status':'init' }")=> 360287970189639680
cb.cas("trans1") do |val|
val["new"] = "new"
val
end

Would be {'karen': '400', 'dipti': '800', 'status':'init', 'new': 'new' }

but it returns:

IndexError: string not matched
from (irb):7:in `[]='

This is based on the rdoc example:

c.default_format = :document
c.set("foo", {"bar" => 1})
c.cas("foo") do |val|
  val["baz"] = 2
  val
end
c.get("foo") #=> {"bar" => 1, "baz" => 2}

 Comments   
Comment by Sergey Avseyev [ 17/Jul/12 ]
It isn't bug here

Note what are you setting as document:

   "{'karen': '400', 'dipti': '800', 'status':'init' }"

This is a String, so it will be encoded as JSON string.

If you'd like to store a JSON Object, you should use Ruby Hash:

   {'karen' => '400', 'dipti' => '800', 'status' => 'init' }

I guess '400' and '800' shouldn't be specified as strings, therefore you might want to omit single quotes
Comment by Matt Ingenthron [ 18/Jul/12 ]
Also note that quoting JSON with ' is actually not legal. It's supposed to be " . Some JSON parsers (particularly some Python libraries) are really lax about this, but what you have there isn't JSON. It's a semi-JSON like string.

See json.org
Comment by kzeller [ 18/Jul/12 ]
I will add this last point to the section on Using JSON docs in the Structuring Data chapter of dev. guide....




[RCBC-57] Implement general purpose timers Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 18/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp6
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-85 Implement general purpose timers Closed

 Description   
The timers absolutely useful thing, for implementing TMPOOM back-offs for example

 Comments   
Comment by Sergey Avseyev [ 18/Jul/12 ]
http://review.couchbase.org/18543




[RCBC-56] Updated screencast for /develop pages Created: 12/Jul/12  Updated: 14/Jan/14

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Create an updated screencast to ship with the new 2.0 developer SDKs




[RCBC-55] Update the getting started to match the Beer sample DB Created: 12/Jul/12  Updated: 13/Jan/14  Resolved: 13/Jan/14

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Once the sample DB has been integrated into the server, update the getting started (both on the web page and in the documentation) to use the sample database.





[RCBC-54] Add a unit/integration test validation of OBSERVE + view stale=false Created: 12/Jul/12  Updated: 08/May/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Ensure that when a synchronous set is used with the new low-level observe, the index is fully updated when querying with view=false.





[RCBC-53] View error options at query time Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 12/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
At view query time, we need to ensure the developer has the ability to add an "on_error" parameter with values of either "stop" or "continue".





[RCBC-52] Bucket management Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 18/Oct/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.z.beta
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Add the necessary features to create and remove buckets. Also, add the ability to call the RESTful bucket flush.


 Comments   
Comment by Matt Ingenthron [ 14/Aug/12 ]
See related flush issue:
http://www.couchbase.com/issues/browse/MB-5170
Comment by Matt Ingenthron [ 12/Sep/12 ]
Is this closeable? A dupe?




[RCBC-51] Add Design document management, including error handling Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 12/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Add the additional functionality needed to create and replace design documents.




[RCBC-50] Replica read command Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 19/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp6
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed 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 Sergey Avseyev [ 19/Jul/12 ]
http://review.couchbase.org/18590




[RCBC-49] Highlevel synchronous mutation operations atop observe Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 27/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0.dp6
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Sergey Avseyev [ 23/Jul/12 ]
http://review.couchbase.org/18689 Bucket#observe_and_wait
Comment by Sergey Avseyev [ 27/Jul/12 ]
Fixed at http://review.couchbase.com/18957




[RCBC-48] Implement observe command Created: 12/Jul/12  Updated: 13/Nov/12  Resolved: 12/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates RCBC-6 implement OBSERVE command Closed

 Description   
Add the basic low level observe command





[RCBC-47] http auth is not asserted correctly with bucketname only, should default to bucketname even if no username is supplied Created: 07/Jul/12  Updated: 13/Nov/12  Resolved: 27/Jul/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.1
Fix Version/s: 1.2.0.dp6
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
User tried to use just :bucket_name and :bucket_password, in which case HTTP basic auth should be asserted, but that didn't happen.

See http://stackoverflow.com/questions/11319166/adding-a-new-couchbase-bucket-caused-bucketnotfound-error

 Comments   
Comment by Sergey Avseyev [ 09/Jul/12 ]
Ok, I can accept the bug and show deprecation warnings if someone will use :bucket_password and :bucket_name
Comment by Sergey Avseyev [ 27/Jul/12 ]
http://review.couchbase.org/18934

Now the client will use bucket name as username, but silently eat all other options. There is another ticket about claiming allowed options RCBC-65




[RCBC-46] Create shared pool of persistent connections Created: 05/Jul/12  Updated: 13/Jan/14  Resolved: 04/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: library
Affects Version/s: 1.0.0
Fix Version/s: 1.3.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: All


 Description   
Need a setting to indicate a connection should be persisted.

 Comments   
Comment by Sergey Avseyev [ 12/Jul/12 ]
I think connection pool is quite related thing. There is good implementation in mongo driver https://github.com/mongodb/mongo-ruby-driver/blob/master/lib/mongo/util/pool.rb I think I can re-use it because it is also Apache-2 licensed
Comment by Matt Ingenthron [ 28/Aug/12 ]
The current library already a thread local connection. Moving this to 2.0 as we may add a connection pool in that timeframe, but there is no current plan to add a connection pool.

Thread locals provide persistent connections, so I'm also changing the summary of the bug to be more accurate with respect to what's intended.
Comment by Sergey Avseyev [ 04/May/13 ]
http://review.couchbase.org/26028 Thanks to Mike Evans




[RCBC-45] Support Class Inheritance in Metadocs System Created: 22/Jun/12  Updated: 13/Jan/14  Resolved: 21/Nov/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: MC Brown (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Sergey requests that we provide class hierarchy/inheritance in the language reference. Required for Ruby SDK.

 Comments   
Comment by MC Brown (Inactive) [ 21/Nov/12 ]
We have this support now by using the parentclass attribute on a given apicall




[RCBC-44] Need to Convert Vartype XML into HTML/PDF/Epub Created: 22/Jun/12  Updated: 13/Nov/12  Resolved: 12/Sep/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: docs
Affects Version/s: 1.0.0
Fix Version/s: 1.0.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: MC Brown (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Need to convert all the vartype XML tags and content into tables for option hashes. Content there but not available on web.

 Comments   
Comment by kzeller [ 22/Jun/12 ]
This should actually be an enhancement to our build system, not a bug.
Comment by MC Brown (Inactive) [ 12/Sep/12 ]
This has now been implemented.




[RCBC-43] Document usage '$' prefix in JSON properties Created: 22/Jun/12  Updated: 13/Nov/12  Resolved: 22/Jun/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
There are not intuitive consequences of usage dollar sign as a prefix in document properties: they looks ok in CRUD, but stripped out in views. This behaviour should be documented

 Comments   
Comment by Sergey Avseyev [ 22/Jun/12 ]
http://review.couchbase.org/17540 uploaded for review




[RCBC-42] Gracefully handle exceptions from the callbacks Created: 22/Jun/12  Updated: 08/Feb/13  Resolved: 11/Dec/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: New Feature Priority: Blocker
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently unwanted exceptions in the callback (C level) could break the library

 Comments   
Comment by Sergey Avseyev [ 11/Dec/12 ]
http://review.couchbase.org/23200




[RCBC-41] Integrate log4r and log interesting events for issue investigation Created: 22/Jun/12  Updated: 08/Feb/13

Status: Open
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by RCBC-74 Provide Standardized Logging Closed
is duplicated by RCBC-108 Add Couchbase operation logging Closed




[RCBC-40] It isn't possible to receive result of the STORE part when doing Bucket#cas asynchronously Created: 15/Jun/12  Updated: 13/Nov/12  Resolved: 22/Jun/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The callback of the Bucket#cas method is triggered only once, when it fetches old value, and it isn't possible to receive notification if the next store operation was successful:

Couchbase.bucket.run do |c|
  c.cas("foo") do |oldval|
    # modify oldval and return newval
    newval
  end
end

It would be better if cas operation will be more like other operations in async mode and will return Result object twice, first for get part and then for set.

 Comments   
Comment by Sergey Avseyev [ 22/Jun/12 ]
http://review.couchbase.org/17541 uploaded fix




[RCBC-39] Increment Decrement Delta not working Created: 14/Jun/12  Updated: 20/May/13  Resolved: 20/May/13

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.1.0
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Anonymous Assignee: Wayne Siu
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Using the 1.1.2 gem, specifying a :delta => 10 does not increment or decrement the value by any given delta.

 Comments   
Comment by Sergey Avseyev [ 14/Jun/12 ]
There is only one mention about :delta option: in README, and currenly I don't have code which does it, but it will be easy to implement
Comment by karenzeller [ 14/Jun/12 ]
So right now in Ruby, the increment and decrement only increment/decrement by 1?
Comment by karenzeller [ 14/Jun/12 ]
If you do implement :delta for incr() and decr(), it would make the SDK more consistent with all the other SDKs....
Comment by Sergey Avseyev [ 15/Jun/12 ]
Currently you can specify delta using second argument:

conn.incr("foo", 100)
conn.decr("foo", 50)
Comment by Sergey Avseyev [ 22/Jun/12 ]
Uploaded fix http://review.couchbase.org/17554
Comment by karenzeller [ 22/Jun/12 ]
Great. Will update doc.
Comment by Wayne Siu [ 20/May/13 ]
Reopening the ticket for administrative reason.




[RCBC-38] 2 sets against non-default buckets fail. Created: 14/Jun/12  Updated: 13/Nov/12  Resolved: 15/Jun/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: James Mauss Assignee: Sergey Avseyev
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
couchbase-1.1.2.gem
libcouchbase 1.0.2 (latest brew version)


require 'rubygems'
require 'couchbase'

cb1 = Couchbase.new("http://10.4.2.4:8091/pools/default/buckets/bucket1")
cb1.quiet = false

cb1.set('key','data', :ttl => 0)
cb1.set('key2','data', :ttl => 0)


`set': failed to schedule set request (error=0x0f) (Couchbase::Error::Network)


This works if the bucket is set to default.

 Comments   
Comment by Sergey Avseyev [ 15/Jun/12 ]
Just verified all is working. Could you attach your bucket config

curl http://10.4.2.4:8091/pools/default/buckets/bucket1 > config.json

And verify using latest homebrew, which is 1.0.4

https://github.com/mxcl/homebrew/blob/master/Library/Formula/libcouchbase.rb

I just verified and all is ok.
Comment by James Mauss [ 15/Jun/12 ]
Issue was with the vbucket map after creating all the new buckets.

If I can reproduce this, I will open one against the server.




[RCBC-37] Implement bootstrapping using multiple nodes Created: 13/Jun/12  Updated: 13/Nov/12  Resolved: 22/Jun/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Major
Reporter: Sergey Avseyev Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Libcouchbase has implemented it already. Ruby client just need to format host list properly and feed it into libcouchbase

 Comments   
Comment by Sergey Avseyev [ 22/Jun/12 ]
Uploaded change to gerrit http://review.couchbase.org/17539




[RCBC-36] Issue with accessing the results of a view, view_row (seg fault) Created: 06/Jun/12  Updated: 13/Nov/12  Resolved: 07/Jun/12

Status: Closed
Project: Couchbase Ruby client library
Component/s: None
Affects Version/s: 1.2.0.dp
Fix Version/s: 1.2.0.dp4
Security Level: Public

Type: Bug Priority: Critical
Reporter: David Rice Assignee: Sergey Avseyev
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase Server 2.0.0.dp4.1, libcouchbase-1.1.0.dp5, Ruby 1.9


 Description   
Ocassional segfault when accessing the results of a **view** with the latest couchbase ruby client.

https://gist.github.com/2883925

 Comments   
Comment by Frank Weigel [ 06/Jun/12 ]
This is affecting the Rumble Labs POC project, please prioritize.
Comment by Matt Ingenthron [ 06/Jun/12