[PCBC-235] Documentation: Document how to install our SDK with PEAR Created: 21/May/13 Updated: 23/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Tug Grall | Assignee: | Karen Zeller |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Based on a community feedback it is possible and easy to install Couchbase PHP SDK with Pear, it could be interested to add that as part of our documentation to let the developer chose the type of install (manual, pecl, pear, ...)
You can find the steps here: http://www.couchbase.com/forums/thread/php-sdk-install-pear |
| Comments |
| Comment by Trond Norbye [ 21/May/13 ] |
| Please assign it back to me if you need more information. |
| Comment by Karen Zeller [ 22/May/13 ] |
| Have we verified ourselves that this works? |
| Comment by Trond Norbye [ 22/May/13 ] |
| Hey Tug, can you verify it? |
| Comment by Tug Grall [ 23/May/13 ] |
| I have not I would prefer to have a "PHP" Expert like Mike doing it, assigning the task to him. |
| Comment by Michael Nitschinger [ 23/May/13 ] |
| to be clear here, the SDK can be installed through pecl. pear is for userlevel libraries! |
| Comment by Michael Nitschinger [ 23/May/13 ] |
| quick update: pecl install couchbase works, but the version it shows is 1.1.4-dp inside php -i .. |
| Comment by Trond Norbye [ 23/May/13 ] |
| That was another bug we've already fixed :) |
| Comment by Trond Norbye [ 23/May/13 ] |
| It is verified by Michael |
[PCBC-234] anil Created: 14/May/13 Updated: 14/May/13 Resolved: 14/May/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Karen Zeller | Assignee: | Trond Norbye |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Karen Zeller [ 14/May/13 ] |
| error! |
| Comment by Karen Zeller [ 14/May/13 ] |
| error! |
[PCBC-233] build php 1.1.5 for windows Created: 14/May/13 Updated: 14/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | 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 | ||
| Attachments: |
|
| Description |
|
Since we've released 1.1.5, we need to get some builds of that for Windows.
|
[PCBC-232] 1.1.5 PECL shows up as 1.1.4-dp1 in phpinfo() Created: 14/May/13 Updated: 14/May/13 Resolved: 14/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.5 |
| Fix Version/s: | 1.1.5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Michael Nitschinger | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
JEDI_BC
8:12 hi 8:13 is it normal that the last php pecl couchbase ext (1.1.5) indicates 1.1.4dp1 as version number in phpinfo() ? daschl 8:30 JEDI_BC: I think its still a snapshot release right 8:30 ah no its not JEDI_BC 8:30 normally it is flag as a stable release daschl 8:30 yes it is 8:30 okay so this may be a bug 8:31 let me file an issue JEDI_BC 8:31 ok 8:32 probably just a miss in file declaration |
| Comments |
| Comment by Trond Norbye [ 14/May/13 ] |
| There was a duplicate #define |
[PCBC-231] version is incorrectly stored in two places Created: 09/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.5 |
| Fix Version/s: | 1.1.6 |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | all | ||
| Description |
|
After 1.1.5 release, we found a minor problem. Version is in two places.
ingenthr, trondn any reason why we need two defines for version? php ext Pierre @ 12:11 php_couchbase.h (correct) and internal.h (not sure why) Pierre @ 12:12 |
[PCBC-230] cannot work with autoconf 2.59 on CentOS 5.8 with php 5.3 Created: 08/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.3 |
| Fix Version/s: | 1.1.5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
[PCBC-229] --with-couchbase configure option no longer working Created: 08/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.6 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The --with-couchbase option no longer has any effect. One can still monkey around with CPPFLAGS/LDFLAGS etc, though.
It should either be removed or fixed. |
| Comments |
| Comment by Trond Norbye [ 10/May/13 ] |
| --with-couchbase is an option to enable or disable couchbase as part of the build process if the module is located in ext, and you would typically set it to --with-couchbase=shared etc. It was incorrectly used earlier to try to pass a root directory for libcouchbase |
[PCBC-228] Full return message upon error cut off from libcouchbase Created: 08/May/13 Updated: 12/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.6 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
When there is an error, it seems that the PHP library only returns "Network Error" instead of something more descriptive.
|
| Comments |
| Comment by Perry Krug [ 12/May/13 ] |
| Hey Trond, could these error messages and codes get documented? |
| Comment by Trond Norbye [ 12/May/13 ] |
|
I was under the impression that all of the error codes was documented already? Did you check couchbase-api.php? |
| Comment by Matt Ingenthron [ 12/May/13 ] |
|
1.1.5 is the first release that ships couchbase-api.php, though it's been around for a little while. I plan to add this to the official docs Perry, and then will send out an announcement internally. This just happened in the last few days (though Trond's addition of that file happened a little while ago). |
[PCBC-227] setMulti doesn't support pure digit key Created: 30/Apr/13 Updated: 03/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2, 1.1.4 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Knee Oh | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | Ubuntu 12.04 / Apache 2 / PHP5 / libcouchbase - 2.0.5 | ||
| Description |
|
This bug didn't exist in 1.1.0dp5, but I've seen it before in php-memcached. The issue is when issuing a setMulti() array into CB it doesn't like it if the key is not a string.
$key = 12345 $value = 67890 $value = json_encode($value); $array[$key] = $value; $cb_obj->setMulti($array,$expire); PHP Fatal error: Uncaught exception 'CouchbaseIllegalKeyException' with message 'Invalid key specified (not a string)' test2.php(67): Couchbase->setMulti(Array, 604800) The reference bug for php-memcached is: https://bugs.php.net/bug.php?id=59016 After experiencing the issue there I recompiled their newest version and it fixed the problem. I'm not sure if you can dovetail off of that work or not. |
| Comments |
| Comment by Knee Oh [ 30/Apr/13 ] |
| I forgot to mention, I'm loading a memcached bucket not a CB bucket. |
| Comment by Mark Nunberg [ 01/May/13 ] |
|
So the problem is here: https://github.com/couchbase/php-ext-couchbase/blob/9c1842fd5fd5c3e776ea85d85db1f7d5d5430c11/store.c#L673 Should look something like: https://github.com/couchbase/php-ext-couchbase/blob/9c1842fd5fd5c3e776ea85d85db1f7d5d5430c11/store.c#L189 The latter is smart enough to convert 'LONG' keys into strings, whereas the former just blindly complains. |
| Comment by Knee Oh [ 02/May/13 ] |
| Additional testing yields that even if I force the key to a string like strval($key); , if the string is purely digits the library will still complain. |
| Comment by Mark Nunberg [ 03/May/13 ] |
|
http://paste.scsys.co.uk/245952 I'd submit it to gerrit, but it appears to be down today. |
| Comment by Trond Norbye [ 03/May/13 ] |
| I've already got stuff for this but report in my repo.. it would probably be more efficient to synchronize with the people assigned to the bug reports before doing stuff... |
[PCBC-226] Key limit in view Queries and likely other SDK calls Created: 29/Apr/13 Updated: 29/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Robert Dominy | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | Mac OS X, CentOS | ||
| Description |
|
I'm querying a view using the PHP SDK using the view method, $object->view($ddocname [, $viewname ] [, $viewoptions ]), and finding that when I pass in a certain number of keys in the viewoptions param, the method silently fails and just returns null. It appears that 164 keys is OK, but 179 is not. I didn't see documentation indicating a key limit and would expect an error if there were.
Here's the call: // 179 keys breaks, 164 OK $result = $this->cb->view(self::VIEW_DAP,'modelcount',array('keys' => $keys, 'group_level' => 2, 'group' => true, 'skip' => 0) Here's a link to the forum thread I created: http://www.couchbase.com/forums/thread/key-limit-view-queries As you'll see in the responses, this is probably a much more general issue that the PHP SDK uses GET calls that have a string length limit. It seems that the SDK should either use POSTs to avoid the limit or document the size limits in the documentation. |
[PCBC-225] Failure to load JSON module, even with workaround provided via instructions Created: 23/Apr/13 Updated: 07/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs, library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
On a Centos 5.8 system, I am unable to follow our instructions (http://www.couchbase.com/develop/php/current) to success.
After setting everything up, I get the following error about JSON: NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/couchbase.so' - /usr/lib64/php/modules/couchbase.so: undefined symbol: php_json_decode in Unknown on line 0 This is even after I put the json.so as an extension in the PHP.ini file. php -i shows the proper JSON related output: ~ $ php -i | grep json json json support => enabled json version => 1.2.1 I will note that installing via the new PECL method helps to resolve this, but you still get the error if you don't include json.so in the php.ini file. |
| Comments |
| Comment by Sharon Barr [ 23/Apr/13 ] |
|
The user is using PHP 5.4.11 and was following the steps on http://eugenioz.blogspot.com/2013/01/installing-php-54-couchbase-server-20.html |
| Comment by Matt Ingenthron [ 23/Apr/13 ] |
|
Note that installing from PECL isn't for a release yet. We do have a snapshot up there though, but that needs to be installed through: sudo pecl install channel://pecl.php.net/couchbase-1.1.4 |
| Comment by Perry Krug [ 26/Apr/13 ] |
| Any progress on figuring out what was going wrong with this server? |
| Comment by Perry Krug [ 07/May/13 ] |
| Any comment/progress on this issue? |
| Comment by Matt Ingenthron [ 07/May/13 ] |
|
sorry, not at the moment. I did try to ssh to the server at one point, but I think I was too late. Can you identify where the user got the php 5.4.11? I can try that on my centos system to see if I can identify the source of the issue. |
| Comment by Perry Krug [ 07/May/13 ] |
|
I'm not sure where Sharon's user got php 5.4.11 from, but this is the PHP54 package I had installed on the RightScale system that had this issue reproduced: [root@ip-10-197-24-67 ~]# yum info php54 Loaded plugins: security Excluding Packages from none Finished Available Packages Name : php54 Arch : x86_64 Version : 5.4.4 Release : 1.ius.el5 Size : 3.1 M Repo : rightscale-epel Summary : PHP scripting language for creating dynamic web sites URL : http://www.php.net/ License : PHP Description: PHP is an HTML-embedded scripting language. PHP attempts to make it : easy for developers to write dynamically generated web pages. PHP : also offers built-in database integration for several commercial : and non-commercial database management systems, so writing a : database-enabled webpage with PHP is fairly simple. The most common : use of PHP coding is probably as a replacement for CGI scripts. : : The php package contains the module which adds support for the PHP : language to Apache HTTP Server. What else do you need in order to identify, reproduce and resolve this? |
[PCBC-224] Document installation instructions for Windows with Apache instead of IIS Created: 22/Apr/13 Updated: 22/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
[PCBC-223] Docs: Instructions to find php.ini incorrect Created: 22/Apr/13 Updated: 11/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
http://www.couchbase.com/develop/php/current
"You will add the couchbase.so extension to your php.ini file. To find where your php.inifile is, try php -i | grep extension_dir or look at your <?php phpinfo() ?> output. Edit your php.ini to include these two lines:" Not correct..."extension_dir" should be "Configuration" and there should be another set of instructions for finding the extension directory |
| Comments |
| Comment by Karen Zeller [ 24/Apr/13 ] |
| Looks like this is broken again despite the info on JSON library for linux. Do you have the correct way to do this? |
[PCBC-222] couchbase.default_prefix setting in PHP.ini Created: 22/Apr/13 Updated: 22/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | jtulach | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
It will be nice to have couchbase.default_prefix setting in PHP.ini to set default value of couchbase_res->prefix_key in new connections.
|
[PCBC-221] PHP Couchbase persistent connections shares more than expected Created: 22/Apr/13 Updated: 22/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | jtulach | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
PHP Couchbase persistent connection shares all option settings (serializer, compression, prefix_key) and keeps that settings across multiple requests. This is not an expected behaviour.
Code: <?php $cb1 = new Couchbase("http://192.168.0.180/default"); $cb2 = new Couchbase("http://192.168.0.180/default"); $cb1->setOption(COUCHBASE_OPT_PREFIX_KEY,'cb1'); $cb2->setOption(COUCHBASE_OPT_PREFIX_KEY,'cb2'); $cb1->set('val1','v1', 60); $cb2->set('val2','v2', 60); ?> will store following keys: cb2_val1 cb2_val2 Moreover if you execute right after previous request following code (in another script): <?php $cb = new Couchbase("http://192.168.0.180/default"); $cb->set('val3','v3', 60); ?> the code stores key: cb2_val3 If you turn off the persistent connections, you will get more consistent results: cb1_val1 cb2_val2 val3 The problem is that whole _php_couchbase_res structure is shared when using persistent connection. Possible change is to duplicate this structure in php_couchbase_create_impl. But resource destructors should be modified according to this change. |
[PCBC-220] error with "default" bucket. named bucket work OK: CouchbaseLibcouchbaseException Failed to get a value from server: Network error. Created: 13/Apr/13 Updated: 22/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | thanhbv | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | centos 6.4 x86_64. php-fpm 5.4.13-1.el6.remi.x86_64 | ||
| Description |
|
php-ext-couchbase version: https://github.com/couchbase/php-ext-couchbase/commit/ff2ed89c6255a2f364640b62d9930732ce597075
duplicates to # I use php-fpm 5.4.13-1.el6.remi.x86_64 ( with nginx-1.3.15-1.el6.ngx.x86_64). It work OK yesterday. But today: CouchbaseLibcouchbaseException Failed to get a value from server: Network error. $bk = isset($_GET['bk'])? $_GET['bk'] : 'default'; $cb = new Couchbase("$host:8091", 'user', 'password', $bk); $a = $cb->get('aaa'); //-> error here Error with /test.php (& /test.php?bk=default). But OK with /test.php?bk=mybk After: # service php-fpm restart Then all (with 'default' & with named bucket) test OK. I can not reproduce this error now. |
| Comments |
| Comment by thanhbv [ 15/Apr/13 ] |
|
yesterday, I update: php-fpm-5.4.14-1.el6.remi.x86_64, php-ext-couchbase 0f54569ebe34a80e225b85c7dcb5813ed86e351e tested OK. Now, the same error as above occur. After restart service php-fpm => OK Note: I run php-fpm (with couchbase ext) on a VMWare virtual machine and couchbase server 2.0.1 (enterprise edition build-170) on a physical machine. The VM is sometime suspended, sometime NOT connect to the server. (But when I run test, of course 2 machine is connected) |
| Comment by Matt Ingenthron [ 15/Apr/13 ] |
|
I suspect the network connection is getting dropped because of the idling time. Trond: do we need to worry about reconnect? Thanhbv: do you use persistent connections? What does your constructor for the client look like? |
| Comment by Trond Norbye [ 16/Apr/13 ] |
| I don't think you can use persistent connections in a configuration where you suspend and resume the vm so we won't look into this if thats the case. What is the output from the couchbase section of "php -i" ? |
| Comment by thanhbv [ 22/Apr/13 ] |
|
Yes, I think it use persistent connection. phpinfo(): _______________ couchbase couchbase support enabled version 1.1.4dp1 libcouchbase version 2.0.5 json support yes fastlz support yes zlib support yes Directive Local Value Master Value couchbase.compression_factor 1.3 1.3 couchbase.compression_threshold 2000 2000 couchbase.compressor none none couchbase.config_cache /var/cache/cb /var/cache/cb couchbase.durability_default_poll_interval 100000 100000 couchbase.durability_default_timeout 40000000 40000000 couchbase.instance.persistent On On couchbase.restflush On On couchbase.serializer json_array json_array couchbase.view_timeout 75 75 _______________ thank you. |
[PCBC-219] Floating point error in PHP Couchbase Library 1.1 Created: 09/Apr/13 Updated: 16/Apr/13 Resolved: 16/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
--------------
$value = 50.00; $couchbase->set('testvalue',$value,300); echo "getting value now... "; var_dump($couchbase->get('testvalue')); ------------- float(5011) Not 50.00. Diving into the couchbase console, it is stored correctly. Something is wrong with the get method coming out of the PHP extension. This is happening on any 2 decimal number with .00 as the extension. Caught this in an ecommerce application ... needless to say $ impact of giving someone $5011 instead of $50.00 is damaging. Can anyone confirm this behavior in their environments? |
| Comments |
| Comment by Trond Norbye [ 16/Apr/13 ] |
|
This was already fixed in some version before 1.1.4. I added a new testcase to verify this.
http://review.couchbase.org/25694 |
[PCBC-218] cas() operation does not check if the cas contains illegal characters. Created: 04/Apr/13 Updated: 05/Apr/13 Resolved: 05/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
$cb = new \Couchbase('127.0.0.1', '', '', 'default', true);
$cas = $cb->set('foo', 'bar', 0, null); var_dump($cb->get('foo')); var_dump($cb->cas($cas, 'foo', 'baz', 0)); var_dump($cb->get('foo')); var_dump($cb->cas($cas, 'foo', 'bad', 0)); var_dump($cb->get('foo')); var_dump($cb->cas('This is an invalid CAS', 'foo', 'bar', 0)); var_dump($cb->get('foo')); RESULTS OF RUNNING: php test.php string(3) "bar" bool(true) string(3) "baz" bool(false) string(3) "baz" bool(true) string(3) "bar" |
| Comments |
| Comment by Trond Norbye [ 04/Apr/13 ] |
| http://review.couchbase.org/#/c/25481/ |
[PCBC-217] Create package.xml to build from PECL Created: 02/Apr/13 Updated: 12/Apr/13 Resolved: 12/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| http://review.couchbase.org/#/c/25445/ |
[PCBC-216] Client Library not processing server response correctly returned COUCHBASE_SUCCESS upon faliure Created: 22/Mar/13 Updated: 22/Mar/13 Resolved: 22/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Juan Simon | Assignee: | Matt Ingenthron |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Version: 2.0.1 enterprise edition (build-170)
Client library version 1.1.2 |
||
| Description |
|
View query returned {"error":"bad_request","reason":"attachments not supported in Couchbase"}
The query was: $cb->view('/lnp/_design/lnp/_view/lnp_stats?key=[2013,3,22,11001]'); Note the malformed query (the extra bucket before _desing) The server returned: (captured using sudo tcpdump -s 1024 -l -i eth1 -A 'tcp port 8092') <- Thanks avsej HTTP/1.1 400 Bad Request Server: MochiWeb/1.0 (Any of you quaids got a smint?) Date: Fri, 22 Mar 2013 16:42:41 GMT Content-Type: application/json Content-Length: 74 Cache-Control: must-revalidate $cb->getResultCode() returned COUCHBASE_SUCCESS <-- Here is the issue |
| Comments |
| Comment by Trond Norbye [ 22/Mar/13 ] |
|
Same as |
[PCBC-215] View code does not check the HTTP status code Created: 22/Mar/13 Updated: 22/Mar/13 Resolved: 22/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
It currently just check if libcouchbase is able to execute the request, not if the status of the request is good or not
|
| Comments |
| Comment by Trond Norbye [ 22/Mar/13 ] |
|
http://review.couchbase.org/#/c/25305/ |
[PCBC-214] Detection of incorrect expiry time is wrong.. Created: 22/Mar/13 Updated: 22/Mar/13 Resolved: 22/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Currently it marks it as an error, but it goes ahead and perform the operation anyway...
|
| Comments |
| Comment by Trond Norbye [ 22/Mar/13 ] |
| http://review.couchbase.org/#/c/25304/ |
[PCBC-213] SEGV in extension: php_couchbase_pres_dtor (rsrc=<optimized out>) at /sources/lcb2.0-repo/php/couchbase.c:64 Created: 21/Mar/13 Updated: 22/Mar/13 Resolved: 22/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.3 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Description |
|
FAILED TEST SUMMARY
--------------------------------------------------------------------- GetMulti - PlainOO [tests/phpt/GetMulti/PlainOO.phpt] GetReplica - GetReplica [tests/phpt/GetReplica/GetReplica.phpt] GetReplica - GetReplicaMulti [tests/phpt/GetReplica/GetReplicaMulti.phpt] NegativeExpiry - Increment [tests/phpt/NegativeExpiry/Increment.phpt] NegativeExpiry - TouchMulti [tests/phpt/NegativeExpiry/TouchMulti.phpt] Prefix - Prefix [tests/phpt/Prefix/Prefix.phpt] ViewSimple - MissingView [tests/phpt/ViewSimple/MissingView.phpt] ===================================================================== This against a local cluster. Additionally, two of the failed tests segfault. Is this normal? For the GetMulti failure: Program received signal SIGSEGV, Segmentation fault. *__GI___libc_free (mem=0x7ffff37a7e60) at malloc.c:3709 3709 malloc.c: No such file or directory. (gdb) bt #0 *__GI___libc_free (mem=0x7ffff37a7e60) at malloc.c:3709 #1 0x00007ffff47efded in php_couchbase_pres_dtor (rsrc=<optimized out>) at /sources/lcb2.0-repo/php/couchbase.c:64 #2 0x00000000006ae83e in plist_entry_destructor (ptr=0x101a630) at /tmp/buildd/php5-5.4.4/Zend/zend_list.c:209 #3 0x00000000006ab1b5 in zend_hash_apply_deleter () at /tmp/buildd/php5-5.4.4/Zend/zend_hash.c:650 #4 0x00000000006ac9a8 in zend_hash_graceful_reverse_destroy (ht=0xdb8798) at /tmp/buildd/php5-5.4.4/Zend/zend_hash.c:687 #5 0x000000000069e749 in zend_shutdown () at /tmp/buildd/php5-5.4.4/Zend/zend.c:822 #6 0x000000000063f44b in php_module_shutdown () at /tmp/buildd/php5-5.4.4/main/main.c:2346 #7 0x0000000000430f78 in main (argc=32767, argv=0xdb9210) at /tmp/buildd/php5-5.4.4/sapi/cli/php_cli.c:1376 The segfault from the Prefix test is similar. |
| Comments |
| Comment by Trond Norbye [ 22/Mar/13 ] |
| This error is caused by the persistent connections (and most likely been here from the beginning) |
| Comment by Trond Norbye [ 22/Mar/13 ] |
| http://review.couchbase.org/#/c/25306/ |
[PCBC-212] make persistent connections on by default Created: 17/Mar/13 Updated: 17/Mar/13 Resolved: 17/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
I think it's time to make the switch.
See: http://stackoverflow.com/questions/15451560/couchbase-php-sdk-slow-establishing-connection-to/15455411?noredirect=1#comment21878658_15455411 |
[PCBC-210] couchbase.ini should have an entry for loading the extension ;) Created: 08/Mar/13 Updated: 08/Mar/13 Resolved: 08/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
This makes it easier to just copy the ini file in place :)
|
| Comments |
| Comment by Trond Norbye [ 08/Mar/13 ] |
| http://review.couchbase.org/#/c/25052/ |
[PCBC-209] The default value for persistent instances should be contigurable Created: 08/Mar/13 Updated: 08/Mar/13 Resolved: 08/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
|
| Comments |
| Comment by Trond Norbye [ 08/Mar/13 ] |
| http://review.couchbase.org/#/c/25051/ |
[PCBC-208] Add a bucket flush feature to ClusterManager class Created: 01/Mar/13 Updated: 11/Mar/13 Resolved: 11/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0, 1.1.1, 1.1.2 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | New Feature | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
One thing that should be possible with the ClusterManager class is flushing a bucket by it's name. If instantiated with the Administrator credentials, the ClusterManager should be able to flush any bucket.
Note, this depends on flush being enabled. |
[PCBC-207] Support to Spatial Views in PHP SDK Created: 28/Feb/13 Updated: 01/Mar/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | New Feature | Priority: | Major |
| Reporter: | Tug Grall | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The release 1.1.2 does not allow developer to call Spatial Views.
We need to implement it for future release |
| Comments |
| Comment by Matt Ingenthron [ 01/Mar/13 ] |
| Note that this may be a while, as spatial support is still experimental at this stage. Best approach at the moment is to use the REST API directly as documented. |
[PCBC-206] Add support for the config-caching interface in libcouchbase Created: 27/Feb/13 Updated: 08/Apr/13 Resolved: 08/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
[PCBC-205] couchbase_res->rc not set on view execute failure Created: 18/Feb/13 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Tim Smith | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | php-ext-couchbase git master @9a301ada0bf7 | ||
| Description |
|
In views.c in php_couchbase_view_impl(), the couchbase_res->rc result code is last set in case the lcb_timer can't be created. But it is not set in case of any further failures in actually processing the view results.
I expect it to clear the flag (set it to LCB_SUCCESS) on success, and set it to some meaningful error code in the failure branches: https://github.com/couchbase/php-ext-couchbase/blob/cf70968ed3f0c781e75e4cc43de6c561019b459d/views.c#L357 https://github.com/couchbase/php-ext-couchbase/blob/cf70968ed3f0c781e75e4cc43de6c561019b459d/views.c#L369 |
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| the rc value is set in the callback for other errors. |
[PCBC-204] Persistent connections should be indexed on server list contents, not their order. Created: 13/Feb/13 Updated: 14/Feb/13 Resolved: 14/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.0.4, 1.1.2 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
In the current state, we simply treat the connection parameter as a string.
An example use case may be of several clients trying to load-balance between various entry points nodes (EPTs). Such a strategy ensures that they aren't all hitting the same node for configuration requests. However when attempting to use this in conjunction with persistent connections, we have the consequence that each permutation of the "Server List" is treated as a separate key when using persistent connections; therefore something like: $base_list = array("1.1.1.1", "2.2.2.2", "3.3.3.3", "4.4.4.4"); for ($i = 0; $i < 1000; $i++) { $cur_list = $base_list; shuffle($cur_list); $cb = new Couchbase($cur_list, "", "", "", true); $cb->set("foo", "bar"); // other operations } In a nutshell, this code has a "base" set of four servers. In the "normal" initialization code, the list is copied and then shuffled around, so that the first server in the list is always something else. Since the first server in the list ends up becoming the EPT (unless the server is down, in which case the next node is used, etc.) this enables some kind of cheap load balancing. However this also means the order of the array is different, which means the "canonical connection key" is different, which means that when considering whether an existing connection is available, a new one is created. Since we have 4 servers in the list, there is a potential of having 4*4=16 different client objects per process. These objects will never die. The solution is then to "deconstruct" the connection string in such a way that the server list itself is always alphabetically sorted. The effective list (When actually connecting) will remain the same, but for indexing purposes, it shall be sorted. |
[PCBC-203] document getResultCode() and getResultMessage() Created: 13/Feb/13 Updated: 21/Feb/13 Resolved: 21/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | MC Brown |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The getResultCode() and getResultMessage() are not currently in the API reference. Also, there should be mention of the couchbase-api.php that is now included in the .zip file distribution.
|
| Comments |
| Comment by MC Brown [ 15/Feb/13 ] |
|
According to Trond, the getResultCode() and getResultMessage() methods are deprecated and should not be used in the OO interface, instead the exception raised should be caught. I'll check on the couchbase-api.php file and update as necessary. |
| Comment by MC Brown [ 18/Feb/13 ] |
| I've downloaded all the packages available, and cannot find the couchbase-api.php file you mention. |
| Comment by MC Brown [ 21/Feb/13 ] |
|
The PHP docs have been updated with the usage, examples, and codes for getResultCode() and getResultMessage(), in addition to the information on the new Exceptions structure.
The top level for the error handling in PHP can be found here: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-summary-errorhandling.html |
[PCBC-202] Missing documentations how to setup php client on windows 7 Created: 12/Feb/13 Updated: 02/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Minor |
| Reporter: | Ilan Katz | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | windows | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Ilan Katz [ 12/Feb/13 ] |
| There are no explanations in the following link http://www.couchbase.com/develop/php/current |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| Windows is currently not a "supported" platform. see PCBC-53 |
[PCBC-201] Docs: Reference installation Created: 11/Feb/13 Updated: 11/Feb/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | 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 (PHP 5.x, etc) -other packages/modules required and/or tested with |
[PCBC-200] Docs: Documented supported versions of PHP Created: 11/Feb/13 Updated: 14/May/13 Resolved: 14/May/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Perry Krug | Assignee: | Karen Zeller |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Previous pages of the /develop/PHP/current mentioned support for a specific PHP version. There is no mention of that now.
Does that imply that any version of PHP will work with any of our supported libraries? If yes, let's please be specific about that. If no, can we please detail which PHP version is supported for each OS? |
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| Can you update the documentation on the site that the currently supported versions is PHP 5.3 and newer. |
| Comment by Karen Zeller [ 14/May/13 ] |
|
confirmed/updated
getting-started.xml:47: <para> PHP 5.3 and above installed. For more information, see <ulink tutorial.xml:43: PHP 5.3 or later: The PHP SDK itself requires 5.3 or later, appears: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/getting-started.html http://www.couchbase.com/docs/couchbase-sdk-php-1.1/tutorial.html |
| Comment by Karen Zeller [ 14/May/13 ] |
|
confirmed/updated
getting-started.xml:47: <para> PHP 5.3 and above installed. For more information, see <ulink tutorial.xml:43: PHP 5.3 or later: The PHP SDK itself requires 5.3 or later, appears: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/getting-started.html http://www.couchbase.com/docs/couchbase-sdk-php-1.1/tutorial.html |
[PCBC-199] Docs: Add link to more code examples Created: 11/Feb/13 Updated: 11/Feb/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
https://github.com/couchbaselabs/DeveloperDay/tree/master/PHP
|
[PCBC-198] Tag the 1.1.2 release Created: 09/Feb/13 Updated: 13/May/13 Resolved: 13/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.2 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Mike Wiederhold | Assignee: | Matt Ingenthron |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
http://www.couchbase.com/forums/thread/github-tagging-php-ext-couchbase
Please follow up with the user who posted this forum question upon completion |
| Comments |
| Comment by Trond Norbye [ 13/May/13 ] |
| Its too old... use a more recent version |
[PCBC-197] different parameter order for incremement Created: 05/Feb/13 Updated: 16/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
From IRC:
lachlan: can the latest php sdk (couchbase.so) still to be a drop in replacement for php memcached? [2:39pm] trondn: lachlan: it is supposed to be compatible, but the constructor/factory methods are named differently etc.. [2:39pm] lachlan: reason I ask is the different order of parameters for increment() between memcached and couchbase sdk [2:39pm] lachlan: Memcached::increment ( string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] ) [2:39pm] lachlan: Couchbase - $object->increment($key [, $offset ] [, $create ] [, $expiry ] [, $initial ]) [2:39pm] trondn: hmm.. I guess that's a bug... [2:40pm] trondn: let me file that one... [2:40pm] |
| Comments |
| Comment by Trond Norbye [ 16/Apr/13 ] |
| This will result in an API breakage... What should we do? |
[PCBC-196] Error handling documentation Created: 05/Feb/13 Updated: 05/Feb/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| 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. |
[PCBC-195] Write the Getting Started with PHP on Linux section of the essentials guide Created: 04/Feb/13 Updated: 04/Feb/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | MC Brown | Assignee: | Michael Nitschinger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Write the Getting started with PHP on Linux (Redhat and Debian) section of the Essentials Guide
Needs to cover: Installation of the PHP Couchbase extensions and pre-requisites Writing your first (small) app using Couchbase and PHP 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. |
[PCBC-194] Write the Getting started with PHP on Mac OS X section of the essentials guide Created: 04/Feb/13 Updated: 18/Feb/13 Resolved: 18/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | MC Brown | Assignee: | MC Brown |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Write the Getting started with PHP on Mac OS X section of the Essentials Guide
Needs to cover: Installation of the PHP Couchbase extensions and pre-requisites Writing your first (small) app using Couchbase and PHP 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 Trond Norbye [ 04/Feb/13 ] |
| See http://trondn.blogspot.com/2013/02/accessing-couchbase-from-php-on-your-mac.html |
| Comment by MC Brown [ 18/Feb/13 ] |
| I've converted this information to a suitable XML fragment and added it to the Essentials Guide for PHP/Mac OS X. Thanks Trond. |
[PCBC-193] Missing tag in github for 1.1.2 Created: 01/Feb/13 Updated: 15/Apr/13 Resolved: 15/Apr/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.2 |
| Security Level: | Public |
| Type: | Bug | Priority: | Minor |
| Reporter: | James Mauss | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The current 1.1.2 release was never tagged in github. Prior releases up to 1.1.1 have all been tagged, but 1.1.2 is not tagged.
|
| Comments |
| Comment by Matt Ingenthron [ 15/Apr/13 ] |
| Fixed some time ago: https://github.com/couchbase/php-ext-couchbase/tree/1.1.2 |
[PCBC-192] Persistent connections should be the default Created: 01/Feb/13 Updated: 14/Feb/13 Resolved: 14/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.2.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Mark Nunberg [ 04/Feb/13 ] |
|
I don't think this is a good idea - we may end up "leaking" connections for other clients - or messing things up for clients which have randomized host lists.. (though for this, I guess we can have another fix - to make array lists containing the same hosts be made as the same key (for hashing purposes)) for persistent connections. A better idea would be to make the persistent connection stuff enforcible by an INI config entry (so the code in the ctor doesn't need to change) - chances are such an option already exists - this would be a fairly sufficient workaround for some of the issues we've been seeing while not breaking code for those people who do not *want* these so-called persistent connections. |
[PCBC-191] Segfault on malformed argument in setMulti() Created: 01/Feb/13 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Juan Simon | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Providing a malformed array as a parameter to setMulti() results in "Segmentation fault (core dumped)"
The issue can be replicated with the following script: https://gist.github.com/8a08980573d47c22aecc#file-seg_fault-php if instead of providing $docs[]['TEST_DOC::' . $x] = '{"a" : 1}'; we provide the correct structure $docs['TEST_DOC::' . $x] = '{"a" : 1}'; It works ok, but the first shouldn't segfault. |
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| http://review.couchbase.org/#/c/25432/ |
[PCBC-190] Need documentation on timeouts available for PHP Created: 29/Jan/13 Updated: 16/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs, library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
This link: http://www.couchbase.com/docs/couchbase-devguide-1.8/about-client-timeouts.html, states that there aren't any timeouts available for PHP
The PHP docs don't describe any. However, I know that the underlying libcouchbase exposes at least one basic request timeout setting so either the PHP library needs some help exposing that, or it already does and we need to document it. |
| Comments |
| Comment by Matt Ingenthron [ 15/Apr/13 ] |
|
Trond: Could you please review the existing documentation, recommend where we should put this information, then write up a draft and assign it back to me? Then I can review and get it over to Karen.
Let's try to do this one very soon. |
| Comment by Trond Norbye [ 16/Apr/13 ] |
|
/**
* Retrieve the current operation timeout. * * @return integer The currently used timeout specified in usec */ function getTimeout() { } /** * Specify an operation timeout. * * The operation timeout is the time it takes from the command is sent * to the cluster and the result should be returned back. * * @param integer $timeout the new operation timeout specified in usec */ function setTimeout($timeout) { } The keyDurability methods have a timeout parameter, and the view have the connection_timeout parameter one may set. |
| Comment by Perry Krug [ 16/Apr/13 ] |
|
Thanks Trond. A few more questions: -This bug was specifically requested for PHP...can you provide documentation on how to exercise those timeouts through PHP? -And is there a separate timeout associated with the initial connection to 8091? -Is there any logic/handling of a case where the comet stream becomes un responsive but is not actually reset? |
[PCBC-189] [Better sample needed] Code sample of PHP Get and Lock Created: 28/Jan/13 Updated: 26/Mar/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Karen Zeller | Assignee: | Matt Ingenthron |
| 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 PHP for the Developer Guide.
|
| Comments |
| Comment by Matt Ingenthron [ 28/Jan/13 ] |
|
A code sample can be found here: https://github.com/couchbase/php-ext-couchbase/blob/master/tests/Get.inc#L301 The description says in the developer guide? Do you want this there or in the API reference? In any event, I'm passing it back to you to update the appropriate document. |
| Comment by Karen Zeller [ 29/Jan/13 ] |
| It was specifically asked for the Dev Guide, but if it makes more sense, I can just add the cross reference from there to the actual example in the PHP area. |
| Comment by Karen Zeller [ 30/Jan/13 ] |
| Note to self, this is a test case with assertions vs. example of when to use in sample application..... |
| Comment by Karen Zeller [ 26/Mar/13 ] |
|
Dependancies/Blockers: -Reviewed code with Technical Support (Perry) -Need a better PHP Get and Lock code sample. Should demonstrate Get and Lock in sample application context. -Need information on why get and lock suited for the context. |
| Comment by Karen Zeller [ 26/Mar/13 ] |
| See blockers on sample and information. |
[PCBC-188] prioritized disk write queue - php client Created: 28/Jan/13 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Alex Ma | Assignee: | Dipti Borkar |
| Resolution: | Incomplete | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
ability for the client to specify that a write should be prioritized and the server to fast track that write to disk ahead of whatever might be in the disk write queue. Especially important during the case of rebalance where they may be a million+ items in the queue and the write needs to be prioritized for whatever purpose.
|
| Comments |
| Comment by Dipti Borkar [ 28/Jan/13 ] |
|
Is this request only for the php client? This functionality needs to be available on the server side. Can you please move to MB?
Also, can you change from "bug" to "improvement"? |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| There is no way this can be done in the PHP driver. It needs to be implemented on the server first |
[PCBC-187] get() on a missing document should return false Created: 24/Jan/13 Updated: 14/Feb/13 Resolved: 14/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Brian Moon [ 24/Jan/13 ] |
| The de facto standard for operations in both PHP memcached clients is to return bool false on any failure. If you want to be consistent with those libs, you may want to check more than just get(). |
| Comment by Trond Norbye [ 14/Feb/13 ] |
| I am going to write tests that verifies all of the return codes, but given that this is _the_ most common call we should get it in ASAP |
[PCBC-186] Design document listing (Extends PCBC-85) Created: 23/Jan/13 Updated: 08/Apr/13 Resolved: 08/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Juan Simon | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Add listing capabilities to the current Design document management.
http://www.couchbase.com/issues/browse/PCBC-85 |
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| http://review.couchbase.org/25441 |
[PCBC-185] Create an example to show how to use the getAndLock feature Created: 22/Jan/13 Updated: 22/Jan/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Tug Grall | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
It will be useful for user to see how to use the getAndLock function in PHP here:
https://github.com/couchbase/php-ext-couchbase/tree/master/example |
| Comments |
| Comment by Tug Grall [ 22/Jan/13 ] |
| Coming from the community: http://www.couchbase.com/forums/thread/php-examples-code-getandlock-and-view |
[PCBC-184] It would be nice to support the flags sections for the memcache extension Created: 22/Jan/13 Updated: 16/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Simon Gavin [ 22/Jan/13 ] |
| I believe this is related to PCBC-180 |
| Comment by Matt Ingenthron [ 15/Apr/13 ] |
| Trond is this related to PCBC-180? In other words, is this more than an improvement? |
| Comment by Trond Norbye [ 16/Apr/13 ] |
| The intention of this RFE is to fall back to try to use the flag values as specified in the memcache extension if we fail to deserialize with the currently used flag values. |
[PCBC-183] Issues using the $callback parameter for get Created: 18/Jan/13 Updated: 18/Jan/13 Resolved: 18/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Cannot Reproduce | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
This doesn't work as expected, and the test cases seems to skip this with a comment that there are issues... we should fix those..
|
| Comments |
| Comment by Trond Norbye [ 18/Jan/13 ] |
|
The callback signature looks like: boolean function($resource, $id, &$val) |
[PCBC-182] Update the documentation to show when a parameter is a copy or a reference Created: 17/Jan/13 Updated: 18/Jan/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Tug Grall | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
When I look at the PHP core documentation I see when a parameter is a reference or not. (so we should review all our function documentation)
For example if you look at: http://www.php.net/sort Not only I know the type but also when it is a reference it is mentionned as &$array I think we should do the same in our documentation, when I see our API with cas, for example: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-retrieve-get.html#table-couchbase-sdk_php_get it is not clear to me. |
| Comments |
| Comment by Trond Norbye [ 18/Jan/13 ] |
| As a workaround for now you should include couchbase-api.php in your project and have your IDE give you code completion ;) |
[PCBC-181] The documentation is wrong for get() in couchbase-api.php Created: 17/Jan/13 Updated: 18/Jan/13 Resolved: 18/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Michael Nitschinger | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | MacOS X, PHP 5.4 | ||
| Description |
|
I just discovered this while fixing a bug in Basement.
The $cas variable callback is not working on get() but works on getMulti(). Simple example: Works: $client->set("foo", "bar"); $cas = null; var_dump($client->getMulti(array("foo"), $cas)); var_dump($cas); array(1) { ["foo"]=> string(3) "bar" } array(1) { ["foo"]=> string(20) "11699665754086047744" } Doesn't work: $client->set("foo", "bar"); $cas = null; var_dump($client->get("foo", $cas)); var_dump($cas); string(3) "bar" NULL The doc gets returned properly, but the cas value is not set. Also, when you set $cas to "" or false (not null), then it complains with a dubios error: Warning: Couchbase::get() expects parameter 2 to be a valid callback, no array or string given in /Users/michael/Webserver/basement-test/index.php on line 10 Note that its a warning and not an exception on the OOP interface! |
| Comments |
| Comment by Michael Nitschinger [ 17/Jan/13 ] |
|
Okay after more investigation of course the notation is:
get(key, callback, cas) then only the documentation needs to be updated here: https://github.com/couchbase/php-ext-couchbase/blob/master/example/couchbase-api.php#L320 |
| Comment by Trond Norbye [ 18/Jan/13 ] |
| http://review.couchbase.org/#/c/24053/ |
[PCBC-180] PHP Warning: Couchbase::get() could not decompress value (bad content) Created: 17/Jan/13 Updated: 16/Apr/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Andrey Nikishaev | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
CentOS 5.6
Linux CentOS-56-64-minimal 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux PHP 5.2.17 Coucbase 1.8 |
||
| Description |
|
Forum thread with bug history
http://www.couchbase.com/forums/thread/php-warning-couchbaseget-could-not-decompress-value-bad-content |
| Comments |
| Comment by Trond Norbye [ 16/Apr/13 ] |
| Could you post some code sample I could use to reproduce the error? What kind of data are you storing, do you encode them in any special way etc? |
[PCBC-179] Couchbase PHP client library v1.1.1 returns random integer on get request Created: 09/Jan/13 Updated: 17/Jan/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Andrey Nikishaev | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
CentOS 5.6
Linux CentOS-56-64-minimal 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux PHP 5.2.17 Coucbase 1.8 |
||
| Description |
|
Forum thread with bug history
http://www.couchbase.com/forums/thread/couchbase-php-client-library-v1-1-1-returns-random-integer-get-request |
| Comments |
| Comment by Andrey Nikishaev [ 17/Jan/13 ] |
| if before broken get request make another request to non-existing key, then all be fine. this is hot fix for those who also has such problem. |
[PCBC-178] Add support for 'connection_timeout' option in views Created: 03/Jan/13 Updated: 05/Apr/13 Resolved: 05/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The "connection_timeout" parameter is not supported currently in the code. This is a simple addition of
{ "connection_timeout", num_param_handler }, in the handlers list. Ideally the option handling code should be largely removed from PHP and migrated towards libcouchbase (there are pending commits to this effect) which would allow greater effectiveness in coercing and recognizing view options. |
| Comments |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| http://review.couchbase.org/25439 |
[PCBC-177] inconsistent parameter setup for createBucket and modifyBucket Created: 02/Jan/13 Updated: 03/Jan/13 Resolved: 03/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
There is an inconsistency between the ZEND macros and the implementation
|
| Comments |
| Comment by Trond Norbye [ 02/Jan/13 ] |
| http://review.couchbase.org/#/c/23636/2 |
| Comment by Matt Ingenthron [ 02/Jan/13 ] |
| Can you add some additional detail. I can understand that there may be a bug in the macros, but the underlying change looks like we're just changing the API. I'm still confused by this one. Sorry to be slow. |
| Comment by Trond Norbye [ 03/Jan/13 ] |
| The macros say we take multiple parameters, but the implementation takes two where the first one is the name, the second is the properties |
[PCBC-176] move .[ch] files to src Created: 01/Jan/13 Updated: 08/Mar/13 Resolved: 08/Mar/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Matt Ingenthron |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The toplevel directory is getting pretty crowded and its hard to locate files.. Its easier to navigate through the stuff if they're all located in a separate directory.
|
| Comments |
| Comment by Trond Norbye [ 08/Mar/13 ] |
| Seems to be hard to make it work on windows... we could leave just "one" of the files in the directory to work around the windows problems, but let's do that on a day when we don't have any better things to do... |
[PCBC-175] released bundle should contain the example php ini file and the couchbase api file Created: 01/Jan/13 Updated: 03/Jan/13 Resolved: 03/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Trond Norbye [ 01/Jan/13 ] |
| http://review.couchbase.org/#/c/23645/1 |
[PCBC-174] Create a php file with "javadoc-style" comments describing the api Created: 31/Dec/12 Updated: 03/Jan/13 Resolved: 03/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
This allows users to add it to their IDE and get code completion and help (at least in NetBeans)
|
[PCBC-173] The php extension should have an example .ini file describing the tunables Created: 31/Dec/12 Updated: 18/Jan/13 Resolved: 18/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
It is easier for people to edit a template than writing their own file ;)
|
| Comments |
| Comment by Trond Norbye [ 31/Dec/12 ] |
| http://review.couchbase.org/#/c/23634/ |
[PCBC-172] Document how to create a views from PHP Code Created: 30/Dec/12 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.2 |
| Fix Version/s: | 1.1.4 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Tug Grall | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 1 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The latest PHP Library allows developer to create views from code.
We need to document this: - in the tutorial - in the API Method list : http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-summary.html |
| Comments |
| Comment by Trond Norbye [ 01/Jan/13 ] |
| It is part of http://review.couchbase.org/#/c/23641/ |
| Comment by Tug Grall [ 22/Jan/13 ] |
| We should also add this to https://github.com/couchbase/php-ext-couchbase/tree/master/example |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| http://review.couchbase.org/#/c/25436/ |
[PCBC-171] Package build scripts don't build source correctly Created: 27/Dec/12 Updated: 27/Dec/12 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | 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 |
|
The prefix is missing the trailing slash, so the source packages are prefixed incorrectly.
|
[PCBC-170] Document error code, etc. Created: 19/Dec/12 Updated: 30/Jan/13 Resolved: 30/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Tim Smith | Assignee: | MC Brown |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Someone asked me: "Do you, by any chance know where I can find out what the error code will be if we try to get something that doesn't exist? It used to be Memcached::RES_NOTFOUND"
After searching our docs, my answer was: https://github.com/couchbase/php-ext-couchbase/blob/master/tests/Errors.inc Please add this info to the API reference for PHP. |
| Comments |
| Comment by Tim Smith [ 19/Dec/12 ] |
|
See related bug Thanks! |
| Comment by MC Brown [ 30/Jan/13 ] |
| I've updated the PHP documentation and tables to be more precise about the information/data return from each call, the possible exceptions raised during the process, and I've provided a list of the error codes for PHP responses. There is some further work to do to ensure the links between the elements are complete, and I should be completing that shortly. |
[PCBC-169] PHP 5.2 w/ 1.1.1 client doesn't connect to "default" bucket, named bucket works OK Created: 18/Dec/12 Updated: 03/Jan/13 Resolved: 03/Jan/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Tim Smith | Assignee: | Matt Ingenthron |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | CentOS 5.8, PHP 5.2.17 binary from jason repo, libcouchbase 2.0.1 and friends, libevent 1.4.13, php-ext-couchbase built from git master branch (git pull; git clean -fdx; phpize; ./configure; cp modules/couchbase.so /usr/lib64/php/modules/) | ||
| Description |
|
A simple test program fails when accessing the default bucket, but works OK when using a different bucket with either no password or a set password.
Telnet localhost 11211 and using get and set works OK. Sample program is: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Couchbase Server PHP Test</title> </head> <body> <p> <?php $cb = new Couchbase("127.0.0.1:8091", "Administrator", "password", "default"); $cb->set("a", "OSDIFOISJDFOIJ"); echo("The value for 'a' is: "); var_dump($cb->get("a")); ?> </p> </body> </html> Changing "default" to "xyz" works (both are Couchbase buckets on the same cluster). Failure looks like: # php cb2.php <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Couchbase Server PHP Test</title> </head> <body> <p> PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with message 'Failed to store value to server: Network error' in /usr/share/nginx/html/cb2.php:13 Stack trace: #0 /usr/share/nginx/html/cb2.php(13): Couchbase->set('a', 'OSDIFOISJDFOIJ') #1 {main} thrown in /usr/share/nginx/html/cb2.php on line 13 [root@localhost html]# strace php cb2.php execve("/usr/bin/php", ["php", "cb2.php"], [/* 22 vars */]) = 0 brk(0) = 0x1ab3f000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cc6000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cc7000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb80cc8000 close(3) = 0 open("/lib64/libcrypt.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\t\240=1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=48600, ...}) = 0 mmap(0x313da00000, 2322880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313da00000 mprotect(0x313da09000, 2093056, PROT_NONE) = 0 mmap(0x313dc08000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x313dc08000 mmap(0x313dc0a000, 184768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313dc0a000 close(3) = 0 open("/usr/lib64/libreadline.so.5", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2209\201.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=247544, ...}) = 0 mmap(0x312e800000, 2345400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e800000 mprotect(0x312e835000, 2093056, PROT_NONE) = 0 mmap(0x312ea34000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x312ea34000 mmap(0x312ea3c000, 2488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312ea3c000 close(3) = 0 open("/usr/lib64/libncurses.so.5", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\375\341?1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=380336, ...}) = 0 mmap(0x313fe00000, 2476872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313fe00000 mprotect(0x313fe4e000, 2097152, PROT_NONE) = 0 mmap(0x314004e000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4e000) = 0x314004e000 mmap(0x314005c000, 2888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x314005c000 close(3) = 0 open("/usr/lib64/libgmp.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pr\340:1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=236392, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cda000 mmap(0x313ae00000, 2329440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313ae00000 mprotect(0x313ae38000, 2097152, PROT_NONE) = 0 mmap(0x313b038000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38000) = 0x313b038000 close(3) = 0 open("/usr/lib64/libcurl.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \260\34061\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=252456, ...}) = 0 mmap(0x3136e00000, 2345576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136e00000 mprotect(0x3136e3b000, 2097152, PROT_NONE) = 0 mmap(0x313703b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3b000) = 0x313703b000 close(3) = 0 open("/usr/lib64/libbz2.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\26\240A1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=67792, ...}) = 0 mmap(0x3141a00000, 2160784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3141a00000 mprotect(0x3141a0f000, 2093056, PROT_NONE) = 0 mmap(0x3141c0e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x3141c0e000 close(3) = 0 open("/lib64/libz.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\36\300-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=85544, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cdb000 mmap(0x312dc00000, 2178544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312dc00000 mprotect(0x312dc14000, 2093056, PROT_NONE) = 0 mmap(0x312de13000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x312de13000 close(3) = 0 open("/lib64/libpcre.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\35@.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=129984, ...}) = 0 mmap(0x312e400000, 2222984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e400000 mprotect(0x312e41e000, 2097152, PROT_NONE) = 0 mmap(0x312e61e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x312e61e000 close(3) = 0 open("/lib64/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \"@.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=53448, ...}) = 0 mmap(0x312e400000, 2132936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb80cdc000 mprotect(0x2afb80ce3000, 2097152, PROT_NONE) = 0 mmap(0x2afb80ee3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x2afb80ee3000 close(3) = 0 open("/lib64/libresolv.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\24051\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=92816, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ee5000 mmap(0x3135a00000, 2181896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135a00000 mprotect(0x3135a11000, 2097152, PROT_NONE) = 0 mmap(0x3135c11000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x3135c11000 mmap(0x3135c13000, 6920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3135c13000 close(3) = 0 open("/lib64/libm.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`>@-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=614992, ...}) = 0 mmap(0x312d400000, 2629816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d400000 mprotect(0x312d482000, 2093056, PROT_NONE) = 0 mmap(0x312d681000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x81000) = 0x312d681000 close(3) = 0 open("/lib64/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\200-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=23360, ...}) = 0 mmap(0x312d800000, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d800000 mprotect(0x312d802000, 2097152, PROT_NONE) = 0 mmap(0x312da02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x312da02000 close(3) = 0 open("/lib64/libnsl.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240@`51\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=114352, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ee6000 mmap(0x3135600000, 2194096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135600000 mprotect(0x3135615000, 2093056, PROT_NONE) = 0 mmap(0x3135814000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x3135814000 mmap(0x3135816000, 6832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3135816000 close(3) = 0 open("/usr/lib64/libxml2.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\262\24271\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1297360, ...}) = 0 mmap(0x3137a00000, 3395512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137a00000 mprotect(0x3137b34000, 2093056, PROT_NONE) = 0 mmap(0x3137d33000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x133000) = 0x3137d33000 mmap(0x3137d3c000, 4024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3137d3c000 close(3) = 0 open("/usr/lib64/libgssapi_krb5.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\222\34071\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=190976, ...}) = 0 mmap(0x3137e00000, 2283888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137e00000 mprotect(0x3137e2c000, 2097152, PROT_NONE) = 0 mmap(0x313802c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2c000) = 0x313802c000 close(3) = 0 open("/usr/lib64/libkrb5.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\222!71\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=613928, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ee7000 mmap(0x3137200000, 2706656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137200000 mprotect(0x3137291000, 2097152, PROT_NONE) = 0 mmap(0x3137491000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x91000) = 0x3137491000 close(3) = 0 open("/usr/lib64/libk5crypto.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260V`71\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=153720, ...}) = 0 mmap(0x3137600000, 2247528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137600000 mprotect(0x3137624000, 2093056, PROT_NONE) = 0 mmap(0x3137823000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x3137823000 close(3) = 0 open("/lib64/libcom_err.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\n 61\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=10096, ...}) = 0 mmap(0x3136200000, 2103144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136200000 mprotect(0x3136202000, 2093056, PROT_NONE) = 0 mmap(0x3136401000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3136401000 close(3) = 0 open("/lib64/libssl.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000/a91\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=315080, ...}) = 0 mmap(0x3139600000, 2407856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3139600000 mprotect(0x3139646000, 2097152, PROT_NONE) = 0 mmap(0x3139846000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x46000) = 0x3139846000 close(3) = 0 open("/lib64/libcrypto.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\232\34551\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1367232, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ee8000 mmap(0x3135e00000, 3476304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135e00000 mprotect(0x3135f2d000, 2093056, PROT_NONE) = 0 mmap(0x313612c000, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12c000) = 0x313612c000 mmap(0x313614d000, 15184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313614d000 close(3) = 0 open("/usr/lib64/libidn.so.11", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p.\24061\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=204600, ...}) = 0 mmap(0x3136a00000, 2297584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136a00000 mprotect(0x3136a31000, 2093056, PROT_NONE) = 0 mmap(0x3136c30000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x30000) = 0x3136c30000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\332\1-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1718232, ...}) = 0 mmap(0x312d000000, 3498328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d000000 mprotect(0x312d14e000, 2093056, PROT_NONE) = 0 mmap(0x312d34d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14d000) = 0x312d34d000 mmap(0x312d352000, 16728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312d352000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ee9000 open("/lib64/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340W\0.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=145872, ...}) = 0 mmap(0x312e000000, 2204528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e000000 mprotect(0x312e016000, 2093056, PROT_NONE) = 0 mmap(0x312e215000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x312e215000 mmap(0x312e217000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312e217000 close(3) = 0 open("/usr/lib64/libkrb5support.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\" 81\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=35984, ...}) = 0 mmap(0x3138200000, 2128848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3138200000 mprotect(0x3138208000, 2093056, PROT_NONE) = 0 mmap(0x3138407000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x3138407000 close(3) = 0 open("/lib64/libkeyutils.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\n`61\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=9472, ...}) = 0 mmap(0x3136600000, 2102416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136600000 mprotect(0x3136602000, 2093056, PROT_NONE) = 0 mmap(0x3136801000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3136801000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eea000 open("/lib64/libselinux.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340E\24041\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=95464, ...}) = 0 mmap(0x3134a00000, 2192800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3134a00000 mprotect(0x3134a15000, 2097152, PROT_NONE) = 0 mmap(0x3134c15000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x3134c15000 mmap(0x3134c17000, 1440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3134c17000 close(3) = 0 open("/lib64/libsepol.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@=`41\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=247496, ...}) = 0 mmap(0x3134600000, 2383168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3134600000 mprotect(0x313463b000, 2097152, PROT_NONE) = 0 mmap(0x313483b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3b000) = 0x313483b000 mmap(0x313483c000, 40256, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313483c000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eeb000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eec000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eed000 arch_prctl(ARCH_SET_FS, 0x2afb80eecfa0) = 0 mprotect(0x312e215000, 4096, PROT_READ) = 0 mprotect(0x312d34d000, 16384, PROT_READ) = 0 mprotect(0x3135814000, 4096, PROT_READ) = 0 mprotect(0x312da02000, 4096, PROT_READ) = 0 mprotect(0x312d681000, 4096, PROT_READ) = 0 mprotect(0x3135c11000, 4096, PROT_READ) = 0 mprotect(0x2afb80ee3000, 4096, PROT_READ) = 0 mprotect(0x313dc08000, 4096, PROT_READ) = 0 mprotect(0x312ce1c000, 4096, PROT_READ) = 0 munmap(0x2afb80cc8000, 71066) = 0 set_tid_address(0x2afb80eed030) = 22680 set_robust_list(0x2afb80eed040, 0x18) = 0 futex(0x7fff57cedecc, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigaction(SIGRTMIN, {0x312e0053c0, [], SA_RESTORER|SA_SIGINFO, 0x312e00ebe0}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x312e0052f0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x312e00ebe0}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 access("/etc/selinux/", F_OK) = 0 brk(0) = 0x1ab3f000 brk(0x1ab60000) = 0x1ab60000 open("/etc/selinux/config", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=511, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cc8000 read(3, "# This file controls the state o"..., 4096) = 511 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2afb80cc8000, 4096) = 0 open("/proc/mounts", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80cc8000 read(3, "rootfs / rootfs rw 0 0\n/dev/root"..., 1024) = 497 read(3, "", 1024) = 0 close(3) = 0 munmap(0x2afb80cc8000, 4096) = 0 rt_sigaction(SIGPIPE, {0x1, [PIPE], SA_RESTORER|SA_RESTART, 0x312d0302f0}, {SIG_DFL, [], 0}, 8) = 0 getcwd("/usr/share/nginx/html"..., 4096) = 22 mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eee000 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=56430272, ...}) = 0 mmap(NULL, 56430272, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb80f2f000 close(3) = 0 open("/etc/localtime", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\0"..., 4096) = 2819 lseek(3, -1802, SEEK_CUR) = 1017 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\5\0\0\0\0"..., 4096) = 1802 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/sbin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/sbin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/bin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/sbin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/sbin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/bin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/sbin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/bin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 lstat("/usr/sbin/php", 0x7fff57ce86d0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/bin", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0 lstat("/usr/bin/php", {st_mode=S_IFREG|0755, st_size=3444293, ...}) = 0 access("/usr/bin/php", X_OK) = 0 open("/usr/bin/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/php.ini", O_RDONLY) = 3 lstat("/etc", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=45804, ...}) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb7a0) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=45804, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "[PHP]\n\n;;;;;;;;;;;;;;;;;;;\n; Abo"..., 8192) = 8192 read(3, "brary\n; Valid values for this op"..., 8192) = 8192 read(3, "production web sites,\n; you're s"..., 8192) = 8192 read(3, "et to 1 if running under IIS. D"..., 8192) = 8192 read(3, "istent = -1\n\n; Maximum number of"..., 8192) = 8192 read(3, "ct timeout\n;mssql.connect_timeou"..., 8192) = 4844 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 open("/etc/php.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 getdents(3, /* 7 entries */, 32768) = 216 getdents(3, /* 0 entries */, 32768) = 0 close(3) = 0 stat("/etc/php.d/dbase.ini", {st_mode=S_IFREG|0644, st_size=51, ...}) = 0 open("/etc/php.d/dbase.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb7a0) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=51, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "; Enable dbase extension module\n"..., 8192) = 51 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 stat("/etc/php.d/json.ini", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 open("/etc/php.d/json.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb7a0) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "; Enable json extension module\ne"..., 8192) = 49 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 stat("/etc/php.d/zip.ini", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 open("/etc/php.d/zip.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb7a0) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "; Enable zip extension module\nex"..., 8192) = 47 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 stat("/etc/php.d/zzz-couchbase.ini", {st_mode=S_IFREG|0644, st_size=182, ...}) = 0 open("/etc/php.d/zzz-couchbase.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb7a0) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=182, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84500000 read(3, "; Couchbase relies on JSON, whic"..., 8192) = 182 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb84500000, 4096) = 0 brk(0x1ab81000) = 0x1ab81000 brk(0x1aba2000) = 0x1aba2000 brk(0x1abc3000) = 0x1abc3000 futex(0x312da030ec, FUTEX_WAKE_PRIVATE, 2147483647) = 0 open("/usr/lib64/php/modules/dbase.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300'\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=145168, ...}) = 0 mmap(NULL, 2128992, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb84500000 mprotect(0x2afb84507000, 2097152, PROT_NONE) = 0 mmap(0x2afb84707000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x2afb84707000 close(3) = 0 open("/usr/lib64/php/modules/json.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\21\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=104303, ...}) = 0 mmap(NULL, 2123984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb84708000 mprotect(0x2afb8470f000, 2093056, PROT_NONE) = 0 mmap(0x2afb8490e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x2afb8490e000 close(3) = 0 open("/usr/lib64/php/modules/zip.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20L\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=841893, ...}) = 0 mmap(NULL, 2168952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb8490f000 mprotect(0x2afb84920000, 2093056, PROT_NONE) = 0 mmap(0x2afb84b1f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x2afb84b1f000 close(3) = 0 open("/usr/lib64/php/modules/couchbase.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\205\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=737887, ...}) = 0 mmap(NULL, 2246712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb84b21000 mprotect(0x2afb84b41000, 2093056, PROT_NONE) = 0 mmap(0x2afb84d40000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x2afb84d40000 close(3) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb84d46000 close(3) = 0 open("/usr/lib64/libcouchbase.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240+\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=118552, ...}) = 0 mmap(NULL, 2213816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb84d58000 mprotect(0x2afb84d74000, 2097152, PROT_NONE) = 0 mmap(0x2afb84f74000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x2afb84f74000 close(3) = 0 munmap(0x2afb84d46000, 71066) = 0 futex(0x3137d3ccb8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 open("/proc/sys/crypto/fips_enabled", O_RDONLY) = 3 read(3, "0\n", 2) = 2 close(3) = 0 brk(0x1abe4000) = 0x1abe4000 brk(0x1ac05000) = 0x1ac05000 brk(0x1ac27000) = 0x1ac27000 brk(0x1ac48000) = 0x1ac48000 brk(0x1ac69000) = 0x1ac69000 open("/etc/nsswitch.conf", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=1696, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84d46000 read(3, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1696 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2afb84d46000, 4096) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb84d46000 close(3) = 0 open("/lib64/libnss_files.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\37\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=53880, ...}) = 0 mmap(NULL, 2139432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb84f75000 mprotect(0x2afb84f7f000, 2093056, PROT_NONE) = 0 mmap(0x2afb8517e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x2afb8517e000 close(3) = 0 mprotect(0x2afb8517e000, 4096, PROT_READ) = 0 munmap(0x2afb84d46000, 71066) = 0 open("/etc/protocols", O_RDONLY) = 3 fcntl(3, F_GETFD) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84d46000 read(3, "# /etc/protocols:\n# $Id: protoco"..., 4096) = 4096 close(3) = 0 munmap(0x2afb84d46000, 4096) = 0 open("/etc/protocols", O_RDONLY) = 3 fcntl(3, F_GETFD) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb84d46000 read(3, "# /etc/protocols:\n# $Id: protoco"..., 4096) = 4096 close(3) = 0 munmap(0x2afb84d46000, 4096) = 0 brk(0x1ac8a000) = 0x1ac8a000 brk(0x1acab000) = 0x1acab000 munmap(0x2afb80eee000, 266240) = 0 brk(0x1acee000) = 0x1acee000 open("cb2.php", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=316, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eee000 read(3, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 4096) = 316 lseek(3, 0, SEEK_SET) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80eef000 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afb80ef0000 lseek(1, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 lseek(2, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) getcwd("/usr/share/nginx/html"..., 4096) = 22 lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/usr/share/nginx", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share/nginx/html", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share/nginx/html/cb2.php", {st_mode=S_IFREG|0644, st_size=316, ...}) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff57ceb6a0) = -1 ENOTTY (Inappropriate ioctl for device) read(3, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 8192) = 316 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2afb80eee000, 4096) = 0 write(1, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 114<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Couchbase Server PHP Test</title> </head> <body> <p> ) = 114 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb80ef1000 close(3) = 0 open("/usr/lib64/libcouchbase_libevent.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=8456, ...}) = 0 mmap(NULL, 2103848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb85180000 mprotect(0x2afb85182000, 2093056, PROT_NONE) = 0 mmap(0x2afb85381000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x2afb85381000 close(3) = 0 open("/usr/lib64/libevent-1.4.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 S\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=104296, ...}) = 0 mmap(NULL, 2202288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb85382000 mprotect(0x2afb8539b000, 2093056, PROT_NONE) = 0 mmap(0x2afb8559a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x2afb8559a000 mmap(0x2afb8559b000, 2736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2afb8559b000 close(3) = 0 munmap(0x2afb80ef1000, 71066) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 857211209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 857249209}) = 0 getuid() = 0 geteuid() = 0 getgid() = 0 getegid() = 0 epoll_create(32000) = 3 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 socketpair(PF_FILE, SOCK_STREAM, 0, [4, 5]) = 0 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 fcntl(4, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 getuid() = 0 geteuid() = 0 getgid() = 0 getegid() = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 6 fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 connect(6, {sa_family=AF_INET, sin_port=htons(8091), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLOUT, {u32=6, u64=6}}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 858084209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 858118209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 858149209}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 858217209}) = 0 connect(6, {sa_family=AF_INET, sin_port=htons(8091), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 858428209}) = 0 sendto(6, "GET /pools/default/bucketsStream"..., 111, 0, NULL, 0) = 111 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLIN|EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=6}}) = 0 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 861110209}) = 0 recvfrom(6, "HTTP/1.1 200 OK\r\nTransfer-Encodi"..., 2048, 0, NULL, NULL) = 225 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 32, 2497) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 871991209}) = 0 recvfrom(6, "1c18\r\n{\"name\":\"default\",\"bucketT"..., 2048, 0, NULL, NULL) = 2048 recvfrom(6, "[0,1],[0,1],[0,1],[0,1],[0,1],[0"..., 2048, 0, NULL, NULL) = 2048 recvfrom(6, ",1],[0,1],[0,1],[0,1],[0,1],[1,0"..., 4096, 0, NULL, NULL) = 3113 brk(0x1ad0f000) = 0x1ad0f000 brk(0x1ad30000) = 0x1ad30000 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 7 fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 connect(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, 16) = -1 EINPROGRESS (Operation now in progress) epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLOUT, {u32=7, u64=7}}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 878724209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 878759209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 878791209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067255, 878822209}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 878891209}) = 0 connect(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, 16) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(53246), sin_addr=inet_addr("10.4.2.14")}, [9599484487629013008]) = 0 getpeername(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, [9599484487629013008]) = 0 sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\200\1\0\1\10\0\0\267\0\0\0\27\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 47}], msg_controllen=0, msg_flags=0}, 0) = 47 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLOUT, {u32=7, u64=7}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 epoll_wait(3, {{EPOLLIN, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067255, 879412209}) = 0 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\35015-1\0\0\0\35015-1\0\0\0ph\315\32\0\0\0\0ph\315\32\0\0\0\0"..., 8192}], msg_controllen=0, msg_flags=0}, 0) = 0 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 close(7) = 0 write(2, "PHP Fatal error: Uncaught excep"..., 320PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with message 'Failed to store value to server: Network error' in /usr/share/nginx/html/cb2.php:13 Stack trace: #0 /usr/share/nginx/html/cb2.php(13): Couchbase->set('a', 'OSDIFOISJDFOIJ') #1 {main} thrown in /usr/share/nginx/html/cb2.php on line 13 ) = 320 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLIN, {u32=6, u64=6}}) = 0 close(6) = 0 close(4) = 0 close(5) = 0 close(3) = 0 munmap(0x2afb85180000, 2103848) = 0 munmap(0x2afb85382000, 2202288) = 0 close(2) = 0 close(1) = 0 munmap(0x2afb80ef0000, 4096) = 0 close(0) = 0 munmap(0x2afb80eef000, 4096) = 0 munmap(0x2afb84b21000, 2246712) = 0 munmap(0x2afb84d58000, 2213816) = 0 munmap(0x2afb8490f000, 2168952) = 0 munmap(0x2afb84708000, 2123984) = 0 munmap(0x2afb84500000, 2128992) = 0 brk(0x1ac88000) = 0x1ac88000 exit_group(255) = ? [root@localhost html]# And successful run with "xyz": [root@localhost html]# strace php cb2.php execve("/usr/bin/php", ["php", "cb2.php"], [/* 22 vars */]) = 0 brk(0) = 0x8baf000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf37000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf38000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2af55bf39000 close(3) = 0 open("/lib64/libcrypt.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\t\240=1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=48600, ...}) = 0 mmap(0x313da00000, 2322880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313da00000 mprotect(0x313da09000, 2093056, PROT_NONE) = 0 mmap(0x313dc08000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x313dc08000 mmap(0x313dc0a000, 184768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313dc0a000 close(3) = 0 open("/usr/lib64/libreadline.so.5", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2209\201.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=247544, ...}) = 0 mmap(0x312e800000, 2345400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e800000 mprotect(0x312e835000, 2093056, PROT_NONE) = 0 mmap(0x312ea34000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x312ea34000 mmap(0x312ea3c000, 2488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312ea3c000 close(3) = 0 open("/usr/lib64/libncurses.so.5", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\375\341?1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=380336, ...}) = 0 mmap(0x313fe00000, 2476872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313fe00000 mprotect(0x313fe4e000, 2097152, PROT_NONE) = 0 mmap(0x314004e000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4e000) = 0x314004e000 mmap(0x314005c000, 2888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x314005c000 close(3) = 0 open("/usr/lib64/libgmp.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pr\340:1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=236392, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf4b000 mmap(0x313ae00000, 2329440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x313ae00000 mprotect(0x313ae38000, 2097152, PROT_NONE) = 0 mmap(0x313b038000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38000) = 0x313b038000 close(3) = 0 open("/usr/lib64/libcurl.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \260\34061\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=252456, ...}) = 0 mmap(0x3136e00000, 2345576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136e00000 mprotect(0x3136e3b000, 2097152, PROT_NONE) = 0 mmap(0x313703b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3b000) = 0x313703b000 close(3) = 0 open("/usr/lib64/libbz2.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\26\240A1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=67792, ...}) = 0 mmap(0x3141a00000, 2160784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3141a00000 mprotect(0x3141a0f000, 2093056, PROT_NONE) = 0 mmap(0x3141c0e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x3141c0e000 close(3) = 0 open("/lib64/libz.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\36\300-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=85544, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf4c000 mmap(0x312dc00000, 2178544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312dc00000 mprotect(0x312dc14000, 2093056, PROT_NONE) = 0 mmap(0x312de13000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x312de13000 close(3) = 0 open("/lib64/libpcre.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\35@.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=129984, ...}) = 0 mmap(0x312e400000, 2222984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e400000 mprotect(0x312e41e000, 2097152, PROT_NONE) = 0 mmap(0x312e61e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x312e61e000 close(3) = 0 open("/lib64/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \"@.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=53448, ...}) = 0 mmap(0x312e400000, 2132936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55bf4d000 mprotect(0x2af55bf54000, 2097152, PROT_NONE) = 0 mmap(0x2af55c154000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x2af55c154000 close(3) = 0 open("/lib64/libresolv.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\24051\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=92816, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c156000 mmap(0x3135a00000, 2181896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135a00000 mprotect(0x3135a11000, 2097152, PROT_NONE) = 0 mmap(0x3135c11000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x3135c11000 mmap(0x3135c13000, 6920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3135c13000 close(3) = 0 open("/lib64/libm.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`>@-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=614992, ...}) = 0 mmap(0x312d400000, 2629816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d400000 mprotect(0x312d482000, 2093056, PROT_NONE) = 0 mmap(0x312d681000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x81000) = 0x312d681000 close(3) = 0 open("/lib64/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\200-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=23360, ...}) = 0 mmap(0x312d800000, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d800000 mprotect(0x312d802000, 2097152, PROT_NONE) = 0 mmap(0x312da02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x312da02000 close(3) = 0 open("/lib64/libnsl.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240@`51\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=114352, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c157000 mmap(0x3135600000, 2194096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135600000 mprotect(0x3135615000, 2093056, PROT_NONE) = 0 mmap(0x3135814000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x3135814000 mmap(0x3135816000, 6832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3135816000 close(3) = 0 open("/usr/lib64/libxml2.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\262\24271\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1297360, ...}) = 0 mmap(0x3137a00000, 3395512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137a00000 mprotect(0x3137b34000, 2093056, PROT_NONE) = 0 mmap(0x3137d33000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x133000) = 0x3137d33000 mmap(0x3137d3c000, 4024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3137d3c000 close(3) = 0 open("/usr/lib64/libgssapi_krb5.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\222\34071\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=190976, ...}) = 0 mmap(0x3137e00000, 2283888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137e00000 mprotect(0x3137e2c000, 2097152, PROT_NONE) = 0 mmap(0x313802c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2c000) = 0x313802c000 close(3) = 0 open("/usr/lib64/libkrb5.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\222!71\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=613928, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c158000 mmap(0x3137200000, 2706656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137200000 mprotect(0x3137291000, 2097152, PROT_NONE) = 0 mmap(0x3137491000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x91000) = 0x3137491000 close(3) = 0 open("/usr/lib64/libk5crypto.so.3", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260V`71\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=153720, ...}) = 0 mmap(0x3137600000, 2247528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3137600000 mprotect(0x3137624000, 2093056, PROT_NONE) = 0 mmap(0x3137823000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x3137823000 close(3) = 0 open("/lib64/libcom_err.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\n 61\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=10096, ...}) = 0 mmap(0x3136200000, 2103144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136200000 mprotect(0x3136202000, 2093056, PROT_NONE) = 0 mmap(0x3136401000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3136401000 close(3) = 0 open("/lib64/libssl.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000/a91\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=315080, ...}) = 0 mmap(0x3139600000, 2407856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3139600000 mprotect(0x3139646000, 2097152, PROT_NONE) = 0 mmap(0x3139846000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x46000) = 0x3139846000 close(3) = 0 open("/lib64/libcrypto.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\232\34551\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1367232, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c159000 mmap(0x3135e00000, 3476304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3135e00000 mprotect(0x3135f2d000, 2093056, PROT_NONE) = 0 mmap(0x313612c000, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12c000) = 0x313612c000 mmap(0x313614d000, 15184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313614d000 close(3) = 0 open("/usr/lib64/libidn.so.11", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p.\24061\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=204600, ...}) = 0 mmap(0x3136a00000, 2297584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136a00000 mprotect(0x3136a31000, 2093056, PROT_NONE) = 0 mmap(0x3136c30000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x30000) = 0x3136c30000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\332\1-1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1718232, ...}) = 0 mmap(0x312d000000, 3498328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312d000000 mprotect(0x312d14e000, 2093056, PROT_NONE) = 0 mmap(0x312d34d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14d000) = 0x312d34d000 mmap(0x312d352000, 16728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312d352000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15a000 open("/lib64/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340W\0.1\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=145872, ...}) = 0 mmap(0x312e000000, 2204528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x312e000000 mprotect(0x312e016000, 2093056, PROT_NONE) = 0 mmap(0x312e215000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x312e215000 mmap(0x312e217000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x312e217000 close(3) = 0 open("/usr/lib64/libkrb5support.so.0", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\" 81\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=35984, ...}) = 0 mmap(0x3138200000, 2128848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3138200000 mprotect(0x3138208000, 2093056, PROT_NONE) = 0 mmap(0x3138407000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x3138407000 close(3) = 0 open("/lib64/libkeyutils.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\n`61\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=9472, ...}) = 0 mmap(0x3136600000, 2102416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3136600000 mprotect(0x3136602000, 2093056, PROT_NONE) = 0 mmap(0x3136801000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3136801000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15b000 open("/lib64/libselinux.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340E\24041\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=95464, ...}) = 0 mmap(0x3134a00000, 2192800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3134a00000 mprotect(0x3134a15000, 2097152, PROT_NONE) = 0 mmap(0x3134c15000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x3134c15000 mmap(0x3134c17000, 1440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3134c17000 close(3) = 0 open("/lib64/libsepol.so.1", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@=`41\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=247496, ...}) = 0 mmap(0x3134600000, 2383168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3134600000 mprotect(0x313463b000, 2097152, PROT_NONE) = 0 mmap(0x313483b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3b000) = 0x313483b000 mmap(0x313483c000, 40256, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x313483c000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15c000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15e000 arch_prctl(ARCH_SET_FS, 0x2af55c15dfa0) = 0 mprotect(0x312e215000, 4096, PROT_READ) = 0 mprotect(0x312d34d000, 16384, PROT_READ) = 0 mprotect(0x3135814000, 4096, PROT_READ) = 0 mprotect(0x312da02000, 4096, PROT_READ) = 0 mprotect(0x312d681000, 4096, PROT_READ) = 0 mprotect(0x3135c11000, 4096, PROT_READ) = 0 mprotect(0x2af55c154000, 4096, PROT_READ) = 0 mprotect(0x313dc08000, 4096, PROT_READ) = 0 mprotect(0x312ce1c000, 4096, PROT_READ) = 0 munmap(0x2af55bf39000, 71066) = 0 set_tid_address(0x2af55c15e030) = 22685 set_robust_list(0x2af55c15e040, 0x18) = 0 futex(0x7fff4ff0c2ac, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigaction(SIGRTMIN, {0x312e0053c0, [], SA_RESTORER|SA_SIGINFO, 0x312e00ebe0}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x312e0052f0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x312e00ebe0}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 access("/etc/selinux/", F_OK) = 0 brk(0) = 0x8baf000 brk(0x8bd0000) = 0x8bd0000 open("/etc/selinux/config", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=511, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf39000 read(3, "# This file controls the state o"..., 4096) = 511 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2af55bf39000, 4096) = 0 open("/proc/mounts", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55bf39000 read(3, "rootfs / rootfs rw 0 0\n/dev/root"..., 1024) = 497 read(3, "", 1024) = 0 close(3) = 0 munmap(0x2af55bf39000, 4096) = 0 rt_sigaction(SIGPIPE, {0x1, [PIPE], SA_RESTORER|SA_RESTART, 0x312d0302f0}, {SIG_DFL, [], 0}, 8) = 0 getcwd("/usr/share/nginx/html"..., 4096) = 22 mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15f000 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=56430272, ...}) = 0 mmap(NULL, 56430272, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2af55c1a0000 close(3) = 0 open("/etc/localtime", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\0"..., 4096) = 2819 lseek(3, -1802, SEEK_CUR) = 1017 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\5\0\0\0\0"..., 4096) = 1802 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/sbin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/sbin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/kerberos/bin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/sbin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/sbin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local/bin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/sbin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/bin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 lstat("/usr/sbin/php", 0x7fff4ff06ab0) = -1 ENOENT (No such file or directory) lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/bin", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0 lstat("/usr/bin/php", {st_mode=S_IFREG|0755, st_size=3444293, ...}) = 0 access("/usr/bin/php", X_OK) = 0 open("/usr/bin/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/php.ini", O_RDONLY) = 3 lstat("/etc", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=45804, ...}) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09b80) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=45804, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "[PHP]\n\n;;;;;;;;;;;;;;;;;;;\n; Abo"..., 8192) = 8192 read(3, "brary\n; Valid values for this op"..., 8192) = 8192 read(3, "production web sites,\n; you're s"..., 8192) = 8192 read(3, "et to 1 if running under IIS. D"..., 8192) = 8192 read(3, "istent = -1\n\n; Maximum number of"..., 8192) = 8192 read(3, "ct timeout\n;mssql.connect_timeou"..., 8192) = 4844 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 open("/etc/php.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 getdents(3, /* 7 entries */, 32768) = 216 getdents(3, /* 0 entries */, 32768) = 0 close(3) = 0 stat("/etc/php.d/dbase.ini", {st_mode=S_IFREG|0644, st_size=51, ...}) = 0 open("/etc/php.d/dbase.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09b80) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=51, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "; Enable dbase extension module\n"..., 8192) = 51 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 stat("/etc/php.d/json.ini", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 open("/etc/php.d/json.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09b80) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "; Enable json extension module\ne"..., 8192) = 49 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 stat("/etc/php.d/zip.ini", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 open("/etc/php.d/zip.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09b80) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "; Enable zip extension module\nex"..., 8192) = 47 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 stat("/etc/php.d/zzz-couchbase.ini", {st_mode=S_IFREG|0644, st_size=182, ...}) = 0 open("/etc/php.d/zzz-couchbase.ini", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09b80) = -1 ENOTTY (Inappropriate ioctl for device) fstat(3, {st_mode=S_IFREG|0644, st_size=182, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55f771000 read(3, "; Couchbase relies on JSON, whic"..., 8192) = 182 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55f771000, 4096) = 0 brk(0x8bf1000) = 0x8bf1000 brk(0x8c12000) = 0x8c12000 brk(0x8c33000) = 0x8c33000 futex(0x312da030ec, FUTEX_WAKE_PRIVATE, 2147483647) = 0 open("/usr/lib64/php/modules/dbase.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300'\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=145168, ...}) = 0 mmap(NULL, 2128992, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55f771000 mprotect(0x2af55f778000, 2097152, PROT_NONE) = 0 mmap(0x2af55f978000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x2af55f978000 close(3) = 0 open("/usr/lib64/php/modules/json.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\21\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=104303, ...}) = 0 mmap(NULL, 2123984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55f979000 mprotect(0x2af55f980000, 2093056, PROT_NONE) = 0 mmap(0x2af55fb7f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x2af55fb7f000 close(3) = 0 open("/usr/lib64/php/modules/zip.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20L\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=841893, ...}) = 0 mmap(NULL, 2168952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55fb80000 mprotect(0x2af55fb91000, 2093056, PROT_NONE) = 0 mmap(0x2af55fd90000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x2af55fd90000 close(3) = 0 open("/usr/lib64/php/modules/couchbase.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\205\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=737887, ...}) = 0 mmap(NULL, 2246712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55fd92000 mprotect(0x2af55fdb2000, 2093056, PROT_NONE) = 0 mmap(0x2af55ffb1000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x2af55ffb1000 close(3) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2af55ffb7000 close(3) = 0 open("/usr/lib64/libcouchbase.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240+\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=118552, ...}) = 0 mmap(NULL, 2213816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af55ffc9000 mprotect(0x2af55ffe5000, 2097152, PROT_NONE) = 0 mmap(0x2af5601e5000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x2af5601e5000 close(3) = 0 munmap(0x2af55ffb7000, 71066) = 0 futex(0x3137d3ccb8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 open("/proc/sys/crypto/fips_enabled", O_RDONLY) = 3 read(3, "0\n", 2) = 2 close(3) = 0 brk(0x8c54000) = 0x8c54000 brk(0x8c75000) = 0x8c75000 brk(0x8c97000) = 0x8c97000 brk(0x8cb8000) = 0x8cb8000 brk(0x8cd9000) = 0x8cd9000 open("/etc/nsswitch.conf", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=1696, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55ffb7000 read(3, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1696 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2af55ffb7000, 4096) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2af55ffb7000 close(3) = 0 open("/lib64/libnss_files.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\37\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=53880, ...}) = 0 mmap(NULL, 2139432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af5601e6000 mprotect(0x2af5601f0000, 2093056, PROT_NONE) = 0 mmap(0x2af5603ef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x2af5603ef000 close(3) = 0 mprotect(0x2af5603ef000, 4096, PROT_READ) = 0 munmap(0x2af55ffb7000, 71066) = 0 open("/etc/protocols", O_RDONLY) = 3 fcntl(3, F_GETFD) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55ffb7000 read(3, "# /etc/protocols:\n# $Id: protoco"..., 4096) = 4096 close(3) = 0 munmap(0x2af55ffb7000, 4096) = 0 open("/etc/protocols", O_RDONLY) = 3 fcntl(3, F_GETFD) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55ffb7000 read(3, "# /etc/protocols:\n# $Id: protoco"..., 4096) = 4096 close(3) = 0 munmap(0x2af55ffb7000, 4096) = 0 brk(0x8cfa000) = 0x8cfa000 brk(0x8d1b000) = 0x8d1b000 munmap(0x2af55c15f000, 266240) = 0 brk(0x8d5e000) = 0x8d5e000 open("cb2.php", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=312, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c15f000 read(3, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 4096) = 312 lseek(3, 0, SEEK_SET) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c160000 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2af55c161000 lseek(1, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 3), ...}) = 0 lseek(2, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) getcwd("/usr/share/nginx/html"..., 4096) = 22 lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 lstat("/usr/share/nginx", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share/nginx/html", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/share/nginx/html/cb2.php", {st_mode=S_IFREG|0644, st_size=312, ...}) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff4ff09a80) = -1 ENOTTY (Inappropriate ioctl for device) read(3, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 8192) = 312 read(3, "", 4096) = 0 read(3, "", 8192) = 0 close(3) = 0 munmap(0x2af55c15f000, 4096) = 0 write(1, "<!DOCTYPE html>\n<html>\n<head>\n<m"..., 114<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Couchbase Server PHP Test</title> </head> <body> <p> ) = 114 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=71066, ...}) = 0 mmap(NULL, 71066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2af55c162000 close(3) = 0 open("/usr/lib64/libcouchbase_libevent.so", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\n\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=8456, ...}) = 0 mmap(NULL, 2103848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af5603f1000 mprotect(0x2af5603f3000, 2093056, PROT_NONE) = 0 mmap(0x2af5605f2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x2af5605f2000 close(3) = 0 open("/usr/lib64/libevent-1.4.so.2", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 S\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=104296, ...}) = 0 mmap(NULL, 2202288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2af5605f3000 mprotect(0x2af56060c000, 2093056, PROT_NONE) = 0 mmap(0x2af56080b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x2af56080b000 mmap(0x2af56080c000, 2736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2af56080c000 close(3) = 0 munmap(0x2af55c162000, 71066) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 716999209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 717037209}) = 0 getuid() = 0 geteuid() = 0 getgid() = 0 getegid() = 0 epoll_create(32000) = 3 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 socketpair(PF_FILE, SOCK_STREAM, 0, [4, 5]) = 0 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 fcntl(4, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 getuid() = 0 geteuid() = 0 getgid() = 0 getegid() = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 6 fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 connect(6, {sa_family=AF_INET, sin_port=htons(8091), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLOUT, {u32=6, u64=6}}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 718041209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 718086209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 718121209}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 718202209}) = 0 connect(6, {sa_family=AF_INET, sin_port=htons(8091), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 718486209}) = 0 sendto(6, "GET /pools/default/bucketsStream"..., 107, 0, NULL, 0) = 107 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLIN|EPOLLOUT, {u32=6, u64=6}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=6}}) = 0 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 721126209}) = 0 recvfrom(6, "HTTP/1.1 200 OK\r\nTransfer-Encodi"..., 2048, 0, NULL, NULL) = 225 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 32, 2497) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 731696209}) = 0 recvfrom(6, "1c02\r\n{\"name\":\"xyz\",\"bucketType\""..., 2048, 0, NULL, NULL) = 2048 recvfrom(6, "],[0,1],[0,1],[0,1],[0,1],[0,1],"..., 2048, 0, NULL, NULL) = 2048 recvfrom(6, "[0,1],[1,0],[1,0],[1,0],[1,0],[1"..., 4096, 0, NULL, NULL) = 3091 brk(0x8d7f000) = 0x8d7f000 brk(0x8da0000) = 0x8da0000 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 7 fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 connect(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, 16) = -1 EINPROGRESS (Operation now in progress) epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLOUT, {u32=7, u64=7}}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 737521209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 737655209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 737786209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 737916209}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 738187209}) = 0 connect(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, 16) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(53248), sin_addr=inet_addr("10.4.2.14")}, [6944348624503439376]) = 0 getpeername(7, {sa_family=AF_INET, sin_port=htons(11210), sin_addr=inet_addr("10.4.2.14")}, [6944348624503439376]) = 0 sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\200 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24}], msg_controllen=0, msg_flags=0}, 0) = 24 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLOUT, {u32=7, u64=7}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 epoll_wait(3, {{EPOLLIN, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 739578209}) = 0 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\201 \0\0\0\0\0\0\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0PLAIN\0\0\0"..., 8192}], msg_controllen=0, msg_flags=0}, 0) = 29 sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\200!\0\5\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0PLAIN\0xy"..., 40}], msg_controllen=0, msg_flags=0}, 0) = 40 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\201!\0\0\0\0\0\0\0\0\0\r\0\0\0\0\0\0\0\0\0\0\0\0Authenti"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 37 sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\200\1\0\1\10\0\0\267\0\0\0\27\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 47}], msg_controllen=0, msg_flags=0}, 0) = 47 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\201\1\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\2I\367Authenti"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 24 recvmsg(7, 0x7fff4ff09230, 0) = -1 EAGAIN (Resource temporarily unavailable) write(1, "The value for 'a' is: ", 22The value for 'a' is: ) = 22 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLOUT, {u32=7, u64=7}}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 741458209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 741598209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 741730209}) = 0 clock_gettime(CLOCK_MONOTONIC, {4067299, 741860209}) = 0 epoll_wait(3, {{EPOLLOUT, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 742117209}) = 0 sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\200\0\0\1\0\0\0\267\0\0\0\1\2\0\0\0\0\0\0\0\0\0\0\0a", 25}], msg_controllen=0, msg_flags=0}, 0) = 25 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLIN|EPOLLOUT, {u32=7, u64=7}}) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 epoll_wait(3, {{EPOLLIN, {u32=7, u64=7}}}, 32, 2500) = 1 clock_gettime(CLOCK_MONOTONIC, {4067299, 742885209}) = 0 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\201\0\0\0\4\0\0\0\0\0\0\22\2\0\0\0\0\0\0\0\0\2I\367\0\0\0\0OSDI"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 42 recvmsg(7, 0x7fff4ff09590, 0) = -1 EAGAIN (Resource temporarily unavailable) write(1, "string(14) \"", 12string(14) ") = 12 write(1, "OSDIFOISJDFOIJ", 14OSDIFOISJDFOIJ) = 14 write(1, "\"\n", 2" ) = 2 write(1, "</p>\n</body>\n</html>\n", 21</p> </body> </html> ) = 21 epoll_ctl(3, EPOLL_CTL_DEL, 6, {EPOLLIN, {u32=6, u64=6}}) = 0 close(6) = 0 epoll_ctl(3, EPOLL_CTL_DEL, 7, {EPOLLIN, {u32=7, u64=7}}) = 0 close(7) = 0 close(4) = 0 close(5) = 0 close(3) = 0 munmap(0x2af5603f1000, 2103848) = 0 munmap(0x2af5605f3000, 2202288) = 0 close(2) = 0 close(1) = 0 munmap(0x2af55c161000, 4096) = 0 close(0) = 0 munmap(0x2af55c160000, 4096) = 0 munmap(0x2af55fd92000, 2246712) = 0 munmap(0x2af55ffc9000, 2213816) = 0 munmap(0x2af55fb80000, 2168952) = 0 munmap(0x2af55f979000, 2123984) = 0 munmap(0x2af55f771000, 2128992) = 0 brk(0x8cf8000) = 0x8cf8000 exit_group(0) = ? [root@localhost html]# |
| Comments |
| Comment by Trond Norbye [ 03/Jan/13 ] |
| we don't support PHP 5.2. According to http://php.net/downloads.php the current stable php version is 5.4, and the old stable version is 5.3. |
[PCBC-168] cannot query with compound key Created: 17/Dec/12 Updated: 18/Dec/12 Resolved: 18/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | Mark Nunberg |
| Resolution: | Cannot Reproduce | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
A view has been created and it's being queried properly, but the compound keys seem to be getting quoted.
Is there a workaround for this approach? Is something like the ComplexKey class used in Java needed here in PHP? A basic investigation shows: GET /default/_design/debug/_view/user2hour?startkey=%22%5C%22%5Buser_event%5D%5C%22%22&endkey=%22%5C%22%5Buser_event__%5D%5C%22%22&group=true << doesn't work GET /default/_design/debug/_view/user2hour?startkey=%5B%22user_event%22%5D&endkey=%5B%22user_event__%22%5D&group=true HTTP/1.1 << works So it seems it's extra quoting that's going on. See also: http://www.couchbase.com/forums/thread/view-array-key-started-behave-differently-http-request-and-php-api |
| Comments |
| Comment by Matt Ingenthron [ 17/Dec/12 ] |
|
I've assigned this to Michael, since he may have an idea how to approach the problem with a workaround.
Michael, once you have an idea what it is, can you please reassign it to Trond for a proper fix? |
| Comment by Mark Nunberg [ 18/Dec/12 ] |
|
I've answered this on the forum post.. In summary, nothing is broken, but the API changed between DP versions.
The API change is reversible by using an extra handle-level option (see the forum post) |
| Comment by Matt Ingenthron [ 18/Dec/12 ] |
| Mark: thanks so much for helping to address that. I didn't pick up on the change. |
[PCBC-167] Got this error "undefined symbol: php_json_encode in Unknown on line 0" in PHP when trying to use client library v1.1.1 Created: 17/Dec/12 Updated: 03/Jan/13 Resolved: 03/Jan/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.1 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Andrey Nikishaev | Assignee: | Matt Ingenthron |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
CeontOS 5.6
PHP 5.2.17 Couchabse 1.8 |
||
| Description |
|
Installed fresh v1.1.1 client lib to production server and got this:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/couchbase.so' - /usr/lib64/php/modules/couchbase.so: undefined symbol: php_json_encode in Unknown on line 0 I already had this error, and it was fixed with loading lib after json lib. But now it not helped. It still throwing error even if couchbase.so loading after json.so |
| Comments |
| Comment by Trond Norbye [ 03/Jan/13 ] |
|
AFAIK we don't support PHP 5.2. According to http://www.php.net/downloads.php 5.4 is the current stable version, and 5.3 is the old stable version.
|
[PCBC-166] make get() API consistent with 1.0.x Created: 16/Dec/12 Updated: 19/Dec/12 Resolved: 19/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0, 1.1.1 |
| Fix Version/s: | 1.1.2 |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Inadvertently, the API for get() changed between 1.0.x and 1.1.x. This has caused trouble for people upgrading from 1.0.x.
While the API change was somewhat intentional (it was thought that the callback wasn't used), the position of the callback and using null with it just to get to the CAS parameter has been a problem. We should undo at least this one change and aim for a an update as soon as possible. |
| Comments |
| Comment by Matt Ingenthron [ 16/Dec/12 ] |
| Note this forum thread: http://www.couchbase.com/forums/thread/cant-install-php-client-library-v-1-1 |
[PCBC-165] Docs have return type scalar ( Binary object ), which doesn't help much Created: 14/Dec/12 Updated: 30/Jan/13 Resolved: 30/Jan/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Improvement | Priority: | Major |
| Reporter: | Tim Smith | Assignee: | MC Brown |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-summary.html | ||
| Description |
|
A lot of the PHP methods are documented to return scalar ( Binary object ), which is not very helpful. What does the binary object represent?
For example, the set method: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-store.html#table-couchbase-sdk_php_set What does it really return? By looking at the source, I think it returns bool(false) if it fails, and the new CAS id for the item (represented as a string in decimal notation) on success. Saying "Binary Object" is a long ways away from understanding this. The docs (and probably the underlying code, too, but hey, it's PHP and bound to turn into spaghetti, right?) need to create meaningful names for these things, like "Returns: CAS id string or false", and then use those names consistently. Another example, just below, is setMulti: It returns a PHP Array, where the index of the array is the key that was set, and the value is -- I think -- a CAS id string or false. I could be wrong here, I didn't do a complete test on it. But I think that demonstrates exactly the point. Currently it's very difficult for anyone to use the library correctly based on our API reference. The tests in the source code are a helpful source of info in the mean time, until the reference docs can be improved. |
| Comments |
| Comment by Tim Smith [ 19/Dec/12 ] |
|
See related bug Thanks! |
| Comment by MC Brown [ 30/Jan/13 ] |
| I've updated the PHP documentation and tables to be more precise about the information/data return from each call, the possible exceptions raised during the process, and I've provided a list of the error codes for PHP responses. There is some further work to do to ensure the links between the elements are complete, and I should be completing that shortly. |
[PCBC-164] Streamline tests Created: 14/Dec/12 Updated: 11/May/13 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.2.0 |
| Security Level: | Public |
| Type: | Task | Priority: | Critical |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Tests right now are much slower than they should be, which also means that running them is turning into a much bigger hassle than it should be. Here are some things to do in order to make them quicker
1) Remove OO vs non-OO tests unless behavior is known to differ: Right now all our OO functions and non-OO functions traverse exactly the same code paths (not as previously when there would be different code paths for each). 2) Move slow tests into their own categories: Simple mutation functions should not be intermixed with long things like key durability ops. These should be in separate files -- thus also allowing us to exclude them somehow (either via make test, or through runwrap/phpunit) 3) Tests which are expected to fail or are inconclusive should be marked as such. |
[PCBC-163] Typo cause runtime linking to fail Created: 12/Dec/12 Updated: 13/Dec/12 Resolved: 13/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.1 |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
There is a typo for the touch_multi (double __ in the function name for the function couchbase_touch_multi) causing the runtime linker to abort if the function is being called.
The current unit tests didn't cover the functional touch interface. |
| Comments |
| Comment by Trond Norbye [ 12/Dec/12 ] |
| http://review.couchbase.org/#/c/23229/ |
| Comment by Trond Norbye [ 12/Dec/12 ] |
| THe current workaround is to use the object-oriented interface |
| Comment by Tim Smith [ 13/Dec/12 ] |
|
This is more important than that. PHP can't open couchbase.so at all, no matter if you use any couchbase functions or not. Just trying to start up php-fpm to load couchbase.so fails:
Starting php-fpm: [13-Dec-2012 14:08:49] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/root/php-lib/php-ext-couchbase/couchbase.so' - /root/php-lib/php-ext-couchbase/couchbase.so: undefined symbol: php_couchbase_touch__multi_impl in Unknown on line 0 This was tested on Centos 5.8 and 6.3 (with install from the centos55 and centos62 rpms). I recompiled couchbase.so from current master php-ext-couchbase, and it does work OK. Please get a new 1.1 official release out as soon as possible. The current one is not usable at all. |
| Comment by Tim Smith [ 13/Dec/12 ] |
| Unofficial (user-supplied) build that fixes this issue. Just copy it as couchbase.so into your php lib directory. |
[PCBC-162] include_docs support missing Created: 11/Dec/12 Updated: 11/Dec/12 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Jeff Minard | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
viewopts.c appears to be missing include_docs as a valid parameter for the array values that get passed in for a view.
|
| Comments |
| Comment by Jeff Minard [ 11/Dec/12 ] |
|
I just added
# git diff diff --git a/viewopts.c b/viewopts.c index 612559d..4b9ce0f 100644 --- a/viewopts.c +++ b/viewopts.c @@ -54,6 +54,7 @@ static view_param Recognized_View_Params[] = { { "startkey", jval_param_handler }, { "startkey_docid", string_param_handler }, { "debug", bool_param_handler }, + { "include_docs", bool_param_handler }, { NULL, NULL } }; And it seems to work just fine. |
[PCBC-161] update tutorial to be based on sample database Created: 06/Dec/12 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Blocker |
| Reporter: | Matt Ingenthron | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Update the PHP sample with a simple app that covers three things:
CRUD (just get/set is fine) JSON (PHP has this built in) querying views Optionally, do this with Twitter Bootstrap (as Michael and Sergey are using). Not required. It should be a webapp though. This should pick up after the getting started guide which Karen is updating. |
| Comments |
| Comment by Michael Nitschinger [ 22/Jan/13 ] |
| I lost track on this, but is this considered finished with my tutorial? |
| Comment by Trond Norbye [ 10/May/13 ] |
| Closing this issue with now that we have Michaels tutorial. Create a new one if we need more examples |
[PCBC-160] Observe test fails if the bucket is configured with more replicas than there are servers. Created: 05/Dec/12 Updated: 05/Dec/12 Resolved: 05/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Trond Norbye | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Trond Norbye [ 05/Dec/12 ] |
| http://review.couchbase.org/#/c/23080/ |
[PCBC-159] incorrect timeout exceptions during required-durability function tests Created: 05/Dec/12 Updated: 11/Dec/12 Resolved: 05/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Mac OS 10.8
2.0 build 1971 1.1.0-dp4-76-g2f51ee9 |
||
| Attachments: |
|
| Description |
|
When running the tests with the build mentioned above, I relatively regularly receive timeouts during the sync tests. Given that the host is localhost and there is no active workload (and it's on ssd), these seem to indicate a problem with the implementation of the required-durability functions.
|
| Comments |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
| logs showing the timeout exceptions. these don't have much data, but maybe there's something interesting? |
| Comment by Mark Nunberg [ 05/Dec/12 ] |
|
I've seen this issue as well (but initially thought I was just having a slow cluster). I'm willing to bet the issue is in the timeout loop itself rather than in libcouchbase or in somewhere 'deeper', as the other Observe tests pass.
Additionally, they seem to take very long to complete (patch below does not). What's odd is that I've run this through valgrind and it didn't show any particular errors, and the errors are not always reproducible. fwiw, this seems to pass the tests http://paste.scsys.co.uk/216801 |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
| Attached a packet capture showing the same issues. I'm going to reconfigure the server and see if they go away, because I clearly see the polling, but I've not looked to see what's happening with the poll. |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
|
Have a different failure under the remove scenario here. This isn't a timeout. see: packetdump- php_test_results_20121205_0637.txt |
| Comment by Trond Norbye [ 05/Dec/12 ] |
| http://review.couchbase.org/#/c/23103/1 |
[PCBC-158] assertion in removeOnePersist.phpt at Sync.inc:222 Created: 05/Dec/12 Updated: 11/Dec/12 Resolved: 05/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
libcouchbase 2.0.0
Mac OS X 10.8 |
||
| Attachments: |
|
| Description |
|
Had reasons to run the tests to package things up. I ran into this failed assertion.
001+ Assertion failed.. dumping backtrace.. 001- PHP_COUCHBASE_OK 002+ #0 CBTestFramework->dieCommon(Expected TRUE) called at [/Users/ingenthr/src/php-ext-couchbase/tests/cbtestframework/CBTestFramework.inc:113] 003+ #1 CBTestFramework->assertTrue(, The document was mutated) called at [/Users/ingenthr/src/php-ext-couchbase/tests/Sync.inc:222] 004+ #2 Sync->testRemoveOnePersist() 005+ #3 ReflectionMethod->invoke(Sync Object ([] => cbtestframework_error_handler,[handle] => Resource id #10,[oo] => Couchbase Object ([] => Resource id #11))) called at [/Users/ingenthr/src/php-ext-couchbase/tests/cbtestframework/CBTestFramework.inc:195] 006+ #4 CBTestFramework->runSingleTest(testRemoveOnePersist) called at [/Users/ingenthr/src/php-ext-couchbase/tests/cbtestframework/cbtest-phpt-loader.inc:19] 007+ #5 couchbase_phpt_runtest(Sync, testRemoveOnePersist) called at [/Users/ingenthr/src/php-ext-couchbase/tests/phpt/Sync/removeOnePersist.php:3] 008+ [CBTestFramework] Expected TRUE |
| Comments |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
| Setting this to a blocker until we know the nature of it. |
| Comment by Trond Norbye [ 05/Dec/12 ] |
|
This is the same issue as |
[PCBC-157] Todos for GA PHP Content Created: 04/Dec/12 Updated: 12/Dec/12 Resolved: 05/Dec/12 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Karen Zeller | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
-Send Karen .tar of latest stable pre-GA install
-Setup Karen on Drupal -Code snippets (CRUD example and views example) from Trond. |
| Comments |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
|
Sent items one and three via email. Also, some time back I'd sent you a pointer to some of the tests, which is another good reference for examples. That's https://github.com/couchbase/php-ext-couchbase/tree/master/tests
Tests are named after what they're testing, so if you want to see a get test... |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
| sent details on editing the getting started on the website. |
| Comment by James Mauss [ 11/Dec/12 ] |
| This is a pre-release version of the php client for mac, not final GA |
[PCBC-156] PHP GA Content Created: 04/Dec/12 Updated: 10/Jan/13 Resolved: 10/Jan/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Epic | Priority: | Major |
| Reporter: | Karen Zeller | Assignee: | Karen Zeller |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
1. Release Notes - prio two.
- Incidents under PCBC: http://www.couchbase.com/issues/secure/ReleaseNote.jspa?projectId=10049&version=10242 - Matt will have some more items to add. - .net and Java - check out look at front matter, especially java 2. Getting Starting: at develop/php/next - top prio. -- create content in getting-started.xml - grab subset and put into Drupal, renumber - Matt to get me Drupal access - Get the install from the develop page on PHP from. Matt - will send. - Model the content after Ruby 1.2 for install: develop/ruby/next - Model the "try it out" after .net at develop/net/next to introduce JSON 3. note API methods signatures put by MC **(Item still outstanding - Beer App in PHP should be available as of week of 12/10) 4. Tutorial: Priority 3. Issue is webchat -Beer app in .net, ruby, and java -Reuse two-phase commit? No. -Leave existing Webchat application up for now -Matt is talking to Trond about minimal crud and views. Check in with Matt |
| Comments |
| Comment by Karen Zeller [ 06/Dec/12 ] |
|
After you log in, you'll have a black bar across the top for some
administrative kinds of capabilities. Don't worry about that too much. Mostly, you'll want to head to: http://www.couchbase.com/develop/php/next When you're there, you'll be able to edit the page. Go here: http://www.couchbase.com/user IMPORTANT!! Make sure any edits are done as a revision. We always have review before publishing. In this case, we can probably publish straight away, but you'll still want review. Notes: modeled after the ruby page for steps 0 & 1 since the steps are similar modeled after the .NET page for step 2 where it covers bootstrapping, basic CRUD, introduces JSON and using JSON, then introduces views ****Add info about removing old C library before you get new one....) |
| Comment by Karen Zeller [ 10/Jan/13 ] |
| completed end of december |
| Comment by Karen Zeller [ 10/Jan/13 ] |
| completed end of december |
[PCBC-155] Compile error at git:master 2f51ee9573cc93fdf343570ac5422bb99f6ce7f6 Created: 04/Dec/12 Updated: 05/Dec/12 Resolved: 04/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Jeff Minard | Assignee: | Trond Norbye |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Probably a temporary error, but I updated from git this morning to recompile and I'm getting this:
/root/sources/php-ext-couchbase/remove.c: In function 'php_couchbase_remove_callback': /root/sources/php-ext-couchbase/remove.c:16: error: 'const struct <anonymous>' has no member named 'cas' make: *** [remove.lo] Error 1 And the end of the make process. PHP 5.3.19, CentOS5.6. Let me know if you need any more specific system information. |
| Comments |
| Comment by Jeff Minard [ 04/Dec/12 ] |
| This commit https://github.com/couchbase/php-ext-couchbase/commit/ad692a4f28f031ff02385f1985e45f0b17a39d87 introduced the error. |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
|
Thanks Jeff! We'll let you know if we need more info. If you can, please "git clean -dfx" (brutal clean) as I've had things stick around and cause problems before. Trond: can you check this out? |
| Comment by Trond Norbye [ 04/Dec/12 ] |
| You have to upgrade libcouchbase to the latest 2.0 release |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
| Thanks Trond. Do you think we should add some checks for a 2.0 lcb and print out a sane error message? |
| Comment by Trond Norbye [ 04/Dec/12 ] |
|
That's easier said than done.. this changed with some of the betas... it is going to be pretty much work to always keep that up to date (and backport fixes etc)
|
| Comment by Jeff Minard [ 04/Dec/12 ] |
|
> You have to upgrade libcouchbase to the latest 2.0 release
How does one go about that? I had installed libcouchbase from the rhel5x64 repo (specifically http://packages.couchbase.com/preview/rpm/5.5/x86_64) -- is the repo not going to be up-to-date enough? |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
|
If it's the preview repo, then it should be up to date. Have you done a "yum update" (I think it is)? Which lcb does RPM/yum say you have installed right now?
That said, libcouchbase is actually released, so you can actually move to the release repo. When I had to do this recently, I had to clean my yum cache with "yum clean all" IIRC. in order to get the latest bits. |
| Comment by Jeff Minard [ 04/Dec/12 ] |
|
Yup, updating the repo did the trick. I'll give switching over the to the release repo a try too. That would be http://packages.couchbase.com/rpm/couchbase-centos55-x86_64.repo correct?
Thanks guys! |
| Comment by Jeff Minard [ 04/Dec/12 ] |
| Updating to the real repo is failing, but not for other reasons I'll address over here: http://www.couchbase.com/issues/browse/PCBC-155 |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
| Well, now I've run into this myself. It looks like something changed between beta3 and release on libcouchbase :( Same building problem Jeff had. |
| Comment by Trond Norbye [ 05/Dec/12 ] |
| That is a risk dealing with previews or betas. |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
| This is true, but we shouldn't have changed API/ABI between beta3 and GA. Apparently something changed. |
| Comment by Trond Norbye [ 05/Dec/12 ] |
| The change was necessary in order to be able to support observe on deleted items. Personally I don't think this is a big deal since it was all sorted out on for the GA. If we can't fix up missing pieces between betas and GA we'll end up with a million different APIs for things just because we can't clean up stuff.. |
| Comment by Matt Ingenthron [ 05/Dec/12 ] |
|
We can, but it should be exceptional and something that's communicated. It also means that we need to ship updates so we don't leave people broken. It's unfortunately not always trivial to get the older one, even if you know you need it.
We'll work through it-- we just need to be more disciplined between Beta and GA, otherwise Beta is no different than Dev Preview. |
[PCBC-154] test for touch with expiration needs updating (maybe) Created: 03/Dec/12 Updated: 16/Apr/13 Resolved: 16/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
I'm really not sure what the behavior should be, but it's worth clarifying.
What does touch with an argument of 0 imply -- it is effectively a delete. Perhaps this should be a warning etc? Please post your comments. |
| Comments |
| Comment by Matt Ingenthron [ 03/Dec/12 ] |
|
Given that using an expiration of 0 means "forever", I would think a touch of 0 would extend the time to forever.
In fact, the documentation says that: http://www.couchbase.com/docs/couchbase-devguide-2.0/cb-touch.html Trond: can you verify we do the right thing here? |
| Comment by Matt Ingenthron [ 03/Dec/12 ] |
|
See also a commit in limbo:
http://review.couchbase.org/#/c/21848/ |
| Comment by Trond Norbye [ 04/Dec/12 ] |
|
This is not a bug in the PHP extension, but a bug in the server. I filed |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
| Thanks for getting that addressed Trond. |
| Comment by Matt Ingenthron [ 19/Dec/12 ] |
|
The underlying question on this test has been resolved. There was a server bug and a touch with expiration of 0 should not return an error, but should rather extend it from whatever the current time is to forever. A good functional test would be: - Set with expiration of 3 secs - Touch with expiration of 0 - Check 3 secs later to see if it's still there. |
| Comment by Matt Ingenthron [ 15/Apr/13 ] |
| Trond: can you review what, if anything more, needs to be done here? I think it's closeable. |
| Comment by Trond Norbye [ 16/Apr/13 ] |
| I verified that this worked as intended in a test program. I don't want to add more tests than necessary to the test suite that does sleep, and this test is not testing the client but verifies the server and should therefore be done elsewhere... |
[PCBC-153] move flush function to RESTful flush Created: 30/Nov/12 Updated: 11/Dec/12 Resolved: 04/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Flagged: |
Release Note
|
| Description |
|
With Couchbase bucket types and memcached bucket types, the RESTful flush should always be used in Couchbase Server. Thus, the flush() function needs to be connected to the restful flush in libcouchbase:
https://github.com/couchbase/libcouchbase/blob/master/tools/cbc.cc#L947 |
| Comments |
| Comment by Trond Norbye [ 30/Nov/12 ] |
| Is this really a _blocker_ and something we can't put in the release notes? I wouldn't assume a "non-working" flush for the couchbase buckets to be the biggest problem for people in production.... |
| Comment by Trond Norbye [ 03/Dec/12 ] |
| http://review.couchbase.org/#/c/23014/ |
| Comment by Jeff Minard [ 04/Dec/12 ] |
| I know this is already resolved, but I'd actually implement our own wrapper to detect "is bucket memcached? ok, flush as normal. else _alldocs, loop, delete(key)". It wasn't a big deal to implement, just annoying. |
| Comment by Matt Ingenthron [ 04/Dec/12 ] |
|
Thanks Jeff
Use of _alldocs is not recommended or really supported in Couchbase Server 2.0. It works okay, but it can't walk the views in an optimal way and thus churns through disk. The RESTful flush should be relatively speedy and will definitely be speedy in the long term and safe. |
| Comment by Trond Norbye [ 04/Dec/12 ] |
| The rest way should also work for me cached buckets |
[PCBC-152] Release notes needed fro 1.0.6 Created: 30/Nov/12 Updated: 30/Nov/12 |
|
| Status: | Open |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.0.6 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
As with Ruby, PHP 1.0.5 and 1.0.6 are marked as "unreleased" in Jira yet have been avialable for d/l. Release notes needed for 1.0.6
|
[PCBC-151] support PHP 5.4 Created: 29/Nov/12 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.0.4, 1.1.0-dp5 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | New Feature | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Owing to changes in PHP API versions, we'll need to rebuild/retest the extension for PHP 5.4. We'll track that in this issue.
A workaround for now would be to download the PHP 1.0.6 source, build, test and release. Source is available from: https://github.com/couchbase/php-ext-couchbase/archive/1.0.6.tar.gz The included README covers how to build/test. It does require a php development environment |
| Comments |
| Comment by Matt Ingenthron [ 29/Nov/12 ] |
|
See also comments in |
| Comment by Matt Ingenthron [ 11/Dec/12 ] |
|
Talked to PHP core contributor Pierre Joye today.
To do this correctly, PHP must be rebuilt for each Major.Minor release and each nts/ts. It must also be built per architecture. From the discussion: hi Pierre! question for you, if we build our PECL extension against 5.3, we need to rebuild against 5.4, right? ingenthr @ 9:06 ingenthr, yes, and for each you also need ts and nts Pierre @ 9:06 ingenthr, I would do it for 5.5 too while being at it, always good to be in line 9:06 so, rebuild for each ts and nts, and each major.minor, huh? ingenthr @ 9:07 yes Pierre @ 9:07 they are usually binary incompatible, while being API compatible 9:07 ABI no, API yes 9:07 you're referring to between ts and nts? ingenthr @ 9:08 okay, so…. what we're doing right now is just wrong 9:09 morning mordy_ @ 9:09 ingenthr, x.y.z > x.y.z+1 API and ABI compatible Pierre @ 9:29 ingenthr, x.y.z > x.y+1.z+1 API compatible and ABI not compatible 9:30 whew mordy_ @ 9:30 ingenthr, x.y.z > x+1.y.z End of the world as we know it Pierre @ 9:30 err Pierre @ 9:30 ingenthr, x.y.z > x.y+1.z API compatible and ABI not compatible Pierre @ 9:30 good morning mordy_ ingenthr @ 9:30 so patch level doesn't break ABI, minor level does mordy_ @ 9:30 ABI breakages only need recompilation, sometimes with some #ifdef Pierre @ 9:31 thanks Pierre, is there a primary source for this? I just know I'm going to have to explain this one a lot. and I'd searched, but it's a hard thing to search for ingenthr @ 9:31 ingenthr: i pretty much believe we've been working on this premise already mordy_ @ 9:32 ingenthr, https://wiki.php.net/rfc/releaseprocess Pierre @ 9:32 |
| Comment by Matt Ingenthron [ 11/Dec/12 ] |
|
The updated source tarball is available from:
https://github.com/couchbase/php-ext-couchbase/archive/1.1.0.tar.gz This can be built (instructions in the readme) on PHP 5.4 or 5.5, with nts/ts. |
| Comment by makeawish [ 11/Jan/13 ] |
|
Matt,
will you guys in the very near future release/ make avail a PHP client library which will support 5.4 ? Also it might be helpful to update the docs to reflect that the current one does not support 5.4, i says 5.3 or higher |
| Comment by Perry Krug [ 20/Feb/13 ] |
| Matt, can we get a release assigned to this? |
| Comment by Matt Ingenthron [ 20/Feb/13 ] |
| Will do when I can assign appropriate resources. |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| Our download page contains betas for windows on 5.4, and the "prebuilt" versions for the other os's contains the version the os use.. |
[PCBC-150] make default view timeout 75s Created: 21/Nov/12 Updated: 11/Dec/12 Resolved: 11/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp1, 1.1.0-dp2, 1.1.0-dp3, 1.1.0-dp4, 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Blocker |
| Reporter: | Matt Ingenthron | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Since the server side view timeout is 60s, we should raise the client side a bit higher. 75s seems like the right number.
It must also be tuneable through the constructor to the client or the .ini file or both. |
| Comments |
| Comment by Matt Ingenthron [ 26/Nov/12 ] |
|
Per discussion with Trond, we don't currently do anything for timeout other than the default libcouchbase timeout. On this issue, we'll change the timeout to the 75s standard.
For what it's worth, it wouldn't hurt my feelings if we were to create a second timeout in libcouchbase for http requests. Maybe there is one already? The only problem with that is that the API/ABI in libcouchbase is required to be stable for now (since we hit Beta). |
| Comment by Trond Norbye [ 06/Dec/12 ] |
| http://review.couchbase.org/23118 |
[PCBC-149] persist_to should imply master when greater than zero Created: 19/Nov/12 Updated: 11/Dec/12 Resolved: 23/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Currently persist_to in the observe array will consider the criteria satisfied when *any* combination of nodes say that the key is persisted. The client should ensure that at least one of those nodes is the master.
|
[PCBC-148] Key persistence checks wrong criterion Created: 19/Nov/12 Updated: 11/Dec/12 Resolved: 23/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Derived from |
[PCBC-147] Segmentation Fault (segfault) when querying view Created: 15/Nov/12 Updated: 19/Nov/12 Resolved: 19/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Jeff Minard | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | PHP 5.3.13 / 5.3.15, Redhat 5.6 | ||
| Attachments: |
|
| Description |
|
When doing a query against a view, the php application segfaults. Set/get/delete commands all work fine.
Attached is an strace, a stack trace from gdb, and various other support files, including the repro script. |
| Comments |
| Comment by Jeff Minard [ 15/Nov/12 ] |
| I was asked to run a gdb, but I don't really think it looks that helpful. I've attached it. |
| Comment by Jeff Minard [ 15/Nov/12 ] |
| gdb file, looks pretty useless without a php debug symbols version |
| Comment by Mark Nunberg [ 15/Nov/12 ] |
|
My bad. Type 'bt' when you get the segfault :)
That'll show you the stack trace |
| Comment by Jeff Minard [ 15/Nov/12 ] |
| Yes, this looks much more helpful :) |
| Comment by Jeff Minard [ 15/Nov/12 ] |
| Here is the same segfault when using the latest couchbase.so compiled from the github master branch (so, cutting edge, I'd seen some lcb changes, so I figured I'd give ya both). |
| Comment by Mark Nunberg [ 15/Nov/12 ] |
|
Can you try this patch?
diff --git a/views.c b/views.c index 6c7bc30..7d03c5a 100644 --- a/views.c +++ b/views.c @@ -52,12 +52,13 @@ void php_couchbase_complete_callback(lcb_http_request_t request, return; } + /** We have one extra byte in 'data' */ hti = emalloc(sizeof(*hti) + resp->v.v0.nbytes); hti->ndata = resp->v.v0.nbytes; - memcpy(hti->data, resp->v.v0.bytes, hti->ndata + 1); + if (hti->ndata) { - hti->data[hti->ndata - 1] = '\0'; - hti->ndata--; + memcpy(hti->data, resp->v.v0.bytes, hti->ndata); + hti->data[hti->ndata] = '\0'; } ctx->res->rc = error; I'll make it as a gerrit changeset as well.. |
| Comment by Mark Nunberg [ 15/Nov/12 ] |
| http://review.couchbase.org/22573 |
| Comment by Jeff Minard [ 15/Nov/12 ] |
| That changed fixed the segfault, yes. The value assigned to the variable from the $cb->view() call is bool(false) |
| Comment by Matt Ingenthron [ 15/Nov/12 ] |
| Thanks for the quick work Mark! Looks like it'll be closeable after it's reviewed and in. |
[PCBC-146] Create a windows php-5.3.17-Win32-VC9-x86 thread-safe build of the current 1.1 tree Created: 12/Nov/12 Updated: 02/Apr/13 Resolved: 02/Apr/13 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Task | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | Mark Nunberg |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
Please create what's in the summary line, and simply attach it here.
|
| Comments |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
| Please |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
|
Whoops. Premature enter key.
Richard: please let us know how this binary works out for you. Thanks! |
| Comment by Richard Wharton [ 13/Nov/12 ] |
|
Thanks. I am now up and running.
PHP Version => 5.3.17 Compiler => MSVC9 (Visual C++ 2008) Thread Safety => enabled Host => i386-pc-win32 couchbase support => enabled couchbase.compression_factor => 1.3 => 1.3 couchbase.compression_threshold => 2000 => 2000 couchbase.compressor => none => none couchbase.durability_default_poll_interval => 100000 => 100000 couchbase.durability_default_timeout => 4000000 => 4000000 couchbase.serializer => php => php |
| Comment by Mark Nunberg [ 13/Nov/12 ] |
| reopening to upload modified binary |
| Comment by Trond Norbye [ 14/Nov/12 ] |
|
Mark: could you post information about:
1. the php source code used 2. the configure options THat'll make it easier to reproduce the setup |
| Comment by Mark Nunberg [ 14/Nov/12 ] |
|
http://windows.php.net/downloads/releases/php-5.3.18-src.zip
configure options: --disable-all --enable-cli --with-couchbase=shared --with-json (or is it --enable-json). I needed to modify the php couchbase source to compile json (changeset pending) on win32; as the normal header/config checking did not do the trick. |
| Comment by Trond Norbye [ 02/Apr/13 ] |
| This is obsolete (and a duplicate of the one we've got to support windows) |
[PCBC-144] getVersion() returns memcached version, not couchbase version Created: 10/Nov/12 Updated: 11/Dec/12 Resolved: 06/Dec/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Michael Nitschinger | Assignee: | Trond Norbye |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
For whatever reason, when doing getVersion() on the php ext the showed version is not the couchbase one. I assume its the memcached one, but I think this will only confuse people.
Is it possible to change this to the corresponding couchbase version? array(2) { '192.168.56.101:11210' => string(18) "1.4.4_600_g7ea975a" '192.168.56.102:11210' => string(18) "1.4.4_600_g7ea975a" } Michael |
| Comments |
| Comment by Matt Ingenthron [ 11/Nov/12 ] |
| Unfortunately, this is a bit correct. The memcached protocol "version" command returns that string. We're simply returning what the server says. I know it's a bit confusing in this instance. I think I'd asked for this behavior, but maybe we need to reconsider it a bit. |
| Comment by Matt Ingenthron [ 11/Nov/12 ] |
|
Trond: not assigning this to you to fix it, but rather just to get your opinion on what we should do here. We have a getVersion() which maps to the memcached protocol version command. Given that our server returns this string, should we change the behavior of getVersion() on the client? My current feeling is no. Besides, this issue has never been reported by a real user. We're staying true to the interface we intended to implement, it's not our fault that the string coming back is confusing. What do you think? |
| Comment by Trond Norbye [ 12/Nov/12 ] |
| I don't have a printout of what the REST response from the server looks like, but I think we should add a call to the library we may use to retrieve that version. I don't think we should change the current getVersion() (in case someone use that already), but rather have something like getClusterVersion (or getNodeVersion). The cluster may be running multiple versions during an upgrade scenario... |
| Comment by Michael Nitschinger [ 12/Nov/12 ] |
| If this is easily achievable, I'd definitely vote for it. It could be done the same way as getVersion() that returns an array for each node with the corresponding version. |
| Comment by Trond Norbye [ 06/Dec/12 ] |
|
This is easily achieved with something among the lines of:
<?php $cb = new CouchbaseClusterManager("localhost", "Administrator", "asdasd"); $info = json_decode($cb->getInfo()); foreach ($info->{"nodes"} as $node) { print $node->{"hostname"} . " is running " . $node->{"version"} . "\n"; } ?> |
[PCBC-143] segfault during lcb handle-level error handler Created: 09/Nov/12 Updated: 11/Dec/12 Resolved: 15/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.0.4, 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
This is related to Basically the error handler checks for the 'ctx' which is not reset in-between calls. The ideal solution should be for start_loop to accept a cookie argument and call lcb_set_cookie on it. This way there is always a valid cookie. Otherwise the cookie remains a stale pointer and when the global error handler is called, it crashes. |
| Comments |
| Comment by Mark Nunberg [ 12/Nov/12 ] |
| http://review.couchbase.org/#/c/22426/ |
[PCBC-142] Plug leaks reported by debug-mode php/zts Created: 09/Nov/12 Updated: 11/Dec/12 Resolved: 12/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
PHP_COUCHBASE_OK
[Fri Nov 9 14:45:38 2012] Script: '/sources/lcb2.0-repo/php/tests/phpt/Serialization/MixedSerializationErrors.php' /sources/php-5.3.17/Zend/zend_execute_API.c(987) : Freeing 0x018EF248 (32 bytes), script=/sources/lcb2.0-repo/php/tests/phpt/Serialization/MixedSerializationErrors.php === Total 1 memory leaks detected ===PHP_COUCHBASE_OK [Fri Nov 9 14:45:39 2012] Script: '/sources/lcb2.0-repo/php/tests/phpt/Serialization/SerializeJsonArrayMixed.php' /sources/php-5.3.17/Zend/zend_execute_API.c(987) : Freeing 0x018086E0 (32 bytes), script=/sources/lcb2.0-repo/php/tests/phpt/Serialization/SerializeJsonArrayMixed.php === Total 1 memory leaks detected ===PHP_COUCHBASE_OK [Fri Nov 9 14:45:39 2012] Script: '/sources/lcb2.0-repo/php/tests/phpt/Serialization/SerializeJsonObjectMixed.php' /sources/php-5.3.17/Zend/zend_execute_API.c(987) : Freeing 0x026C65F8 (32 bytes), script=/sources/lcb2.0-repo/php/tests/phpt/Serialization/SerializeJsonObjectMixed.php === Total 1 memory leaks detected ===mnunberg@csure:/sources/lcb2.0-repo/php$ |
| Comments |
| Comment by Mark Nunberg [ 12/Nov/12 ] |
| This should've been closed (fixed, merged), sorry :) |
[PCBC-141] 1.1 dp releases not working on phps which do not export the symbol php_json_encode Created: 07/Nov/12 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Mark Nunberg | Assignee: | Matt Ingenthron |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
This affects all php binaries which do not have the symbol "php_json_encode". This includes EL5 and EL6 based linux distributions
The library cannot load because the symbol is not found. Disabling using this symbol also means preventing views from functioning (as well as JSON serialization). I'd like to note that this is not our bug and not our fault. We are probably not the only extension relying on php_json* functions, and package creators (specifically redhat) should expose this symbol. Additionally, our configure script checks to see if the PHP_JSON_* constants are defined (and if not, compiles out the relevant code from views - this would make views not work, but not prevent the library from loading). In any event, we should find a way to work around this, as this bug has been seen quite a bit. One possible solution would be to call the php-level json encoding function. It may incur a bit of overhead from calling into php, but the function itself is more likely to be there. |
| Comments |
| Comment by Mark Nunberg [ 07/Nov/12 ] |
| Currently the only workaround is to compile your own php |
| Comment by Matt Ingenthron [ 07/Nov/12 ] |
|
One other solution that I'd be okay with is to simply uplevel our minimum version of CentOS/RHEL. Unless there's significant pushback, I really don't see any reason to keep people living with ancient code for longer and longer periods of time.
Dissenting opinions accepted, but at some point you have to say "we don't support that because it's broken", right? Do you think it's likely that some minimum 5.x EL is fixed enough? Or there's some patchlevel that is fixed enough? If on the other hand, it's just conscious decision to not expose that symbol and it's only supported through PHP land, then calling up there as a workaround seems okay by me. |
| Comment by Matt Ingenthron [ 07/Nov/12 ] |
| Assigning this to the subject matter expert for now. Will hopefully pick it back up soon. |
| Comment by Matt Ingenthron [ 07/Nov/12 ] |
|
One other question, I don't think so, but is this possibly related to need to put the ini for loading the extension after the php_json as an extension?
Another possible workaround is that if the license is permissive enough, we could just suck in the parts we need? Possible API/ABI issues here I guess, but hard to say. |
| Comment by Matt Ingenthron [ 07/Nov/12 ] |
| Duh, I see you proactively addressed the "which release" in the original description. Thanks for that. |
| Comment by Mark Nunberg [ 07/Nov/12 ] |
|
I've explored that possibility. The problem is that on rhel and centos don't export that symbol. EPEL actually contains a json.so (php-pecl-json), but much to our my chagrin, it does not export that symbol either.
I was thinking about sticking the significant bits inside our own code.. it'd probably be easier to just call the php level function though.. This does seem to be a conscious decision by redhat - as this happens in CentOS 6.3 (EL6) as well. So this is obviously not fixed anywhere. |
| Comment by Mark Nunberg [ 10/Nov/12 ] |
| http://review.couchbase.org/#/c/22425/ |
| Comment by Mark Nunberg [ 10/Nov/12 ] |
|
The problem is a bit more intricate it seems :)
Apparently some of the json.so modules I've seen *do* export the php_json_* functions. HOWEVER, apparently php loads these modules with a line similar to dlopen(mod, RTLD_LOCAL..) making their symbols unavailable for other modules to use. A more complex workaround: static void (*_json_encode)(smart_str*, zval*, int TSRMLS_DC) = NULL; static void (*_json_decode)(zval*, char*, int, zend_bool, long TSRMLS_DC) = NULL; static void _init_json_symbols(void) { zend_module_entry *m_ent; int ret; if (_json_encode) { return; } ret = zend_hash_find(&module_registry, "json", sizeof("json"), (void**)&m_ent); if (ret == FAILURE) { fprintf(stderr, "Couldn't load extension..\n"); abort(); } _json_encode = DL_FETCH_SYMBOL(m_ent->handle, "php_json_encode"); _json_decode = DL_FETCH_SYMBOL(m_ent->handle, "php_json_decode"); if (_json_encode == NULL || _json_decode == NULL) { fprintf(stderr, "Coudln't find JSON handles!: %s\n", dlerror()); abort(); } } void php_json_encode(smart_str *buf, zval *value, int options TSRMLS_DC) { _init_json_symbols(); _json_encode(buf, value, options TSRMLS_CC); } void php_json_decode(zval *out, char *buf, int len, zend_bool assoc, long depth TSRMLS_DC) { _init_json_symbols(); _json_decode(out, buf, len, assoc, depth TSRMLS_CC); } |
| Comment by Matt Ingenthron [ 11/Nov/12 ] |
| Very interesting. Why is this done only on RHEL/CentOS? We should check with some PHP internals folks before we go too far here. Maybe there's some subtlety we don't understand. |
| Comment by Pierre Joye [ 11/Nov/12 ] |
|
hi!
Not sure what RHEL5/6 does but PHP 5.3.2 has these APIs exported since the very 1st day: https://github.com/php/php-src/blob/php-5.3.2/ext/json/php_json.h Also json has always been a default extension in PHP, again something wrong at RHEL. I would suggest to add a configure check to see if it is exposed and refused to compile if it is missing. To me it is a bug in RHEL (not the 1st weird one :) and would not begin to duplicate code around (especially not for json, to ensure 100% compatibility and get all fixes in time). |
| Comment by Mark Nunberg [ 11/Nov/12 ] |
|
The real problem is in the first line I mentioned; and it might be a change in the arguments of dlopen. If the json extension is truly loaded before the couchbase one, then the couchbase ext *should* find the appropriate symbols to use.
However it seems that for RHEL (I haven't checked on debian.. debian builds the json ext into the php executable itself, rhel provides it as a loadable module) even though the json extension is already loaded, because there is something weird with either the way it uses dlopen (default php header macro for DL_LOAD uses RTLD_GLOBAL, i.e. make the symbols global to the entire app.. but it might be that RHEL uses RTLD_LOCAL...). But we're not duplicating code here and I personally like the call-to-php solution (even though it's not the most elegant, it's the most predictable/reliable. For example, I don't know how the snippet in my last post would work on a php that doesn't have json as a DSO) |
| Comment by Mark Nunberg [ 11/Nov/12 ] |
|
So it seems we're (or is it only me) looking at it from multiply wrong ways :)
(1) RHEL (and debian) modify the default php DL_LOAD from using RTLD_LAZY (which would have avoided giving us this error) to RTLD_NOW (2) On Debian this is not a problem (at least not for JSON) since it's compiled into the php binary (3) Even on RHEL, placing extension=json.so before extension=couchbase.so seems to do the trick. This is mentioned in the documentation (4) For tests, run-tests.php will not work. Unless a specifically crafted ini file is written, run-tests.php will not load the json extension at all. Defining an extra -d parameter will load the json extension; however the script counter-intuitively *appends* this option to the commandline, so one thus effectively has: -d extension=couchbase.so -d extension=json.so Coupled with RTLD_NOW, this fails. I'd still like to fix this in code; as this is a fairly confusing matter; if only to be able to print out a more meaningful user message. |
| Comment by Pierre Joye [ 11/Nov/12 ] |
|
1) Not sure that should cause this error, as long as the loading order is respected.
2) Debian does it right. JSON is a default builtin extension and should always be available, not optionally. 3) Yes, loading order, that should be documented as such in the couchbase install documentation 4) yes, it is expected, also using a php.ini is always a good thing, to avoid tests failure due to random php.ini being caught There is nothing to fix in couchbase, calling user land function is horribly slow and should really not be done for such thing. |
| Comment by Mark Nunberg [ 11/Nov/12 ] |
|
The fix here would be to make users understand this a bit better.
The point isn't that something is broken, but rather that something is confusing. This issue is hinted in the couchbase ext documentation, but seems to be passed over by quite a few people who have run into this. This seems like a very subtle configuration aspect which users shouldn't have to encounter; or at least something in which we'd be able to show the user an error message. So without going into a debate of terminology about what's "broken" and whose "fault" it is, this is something that lots of users are seeing, and shouldn't. Such fine minutiae really isn't easy to pick up. Another option would have been to load the symbols dynamically from either the binary or from the loaded library (depending on the configuration) - however 'php_json_decode' is now no longer an exported symbol (it's defined in the header as an inline wrapper around php_json_decode_ex) in some versions. |
| Comment by Pierre Joye [ 11/Nov/12 ] |
| ext dependencies are a very common issue in php, this is well documented. I won't change anything in the code (causing more arms) and clearly document that the json ext, for old broken (it is broken, as it must be builtin and always enabled) distribution packages. |
| Comment by Matt Ingenthron [ 11/Nov/12 ] |
|
Thanks for all the help here Pierre.
According to Mark, this doesn't affect only old, broken distribution packages. It's even in recent RHEL6*. Just to fix this with the simplest, most supportable solution perhaps we should test the function at startup time and if it's not there log and exit appropriately? If the distro is loading that lazily, and people want to use that distro, then they need to configure their PHP .ini's correctly, right? Our log message can be explicit even, saying "make sure json whatever is loaded first with your php.ini". Thoughts? * which maybe is arguably old, broken, but it's also arguably not since it's the most recent thing shipped on this particular distro fork |
| Comment by Matt Ingenthron [ 11/Nov/12 ] |
| Pierre: one other question-- any 'prior art' here? In other words, surely some other extension must rely on json and has an approach? |
| Comment by Mark Nunberg [ 11/Nov/12 ] |
|
Unfortunately there is no way to configure RHEL's php to load things lazily.
RHEL Specifically mangles this. I know the patch says 5.0.4, but this is still in php-5.3.3-14.el6_3.src.rpm: --- php-5.0.4/Zend/zend.h.dlopen +++ php-5.0.4/Zend/zend.h @@ -102,11 +102,11 @@ # endif # if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT) -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT) # elif defined(RTLD_DEEPBIND) -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND) # else -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL) # endif # define DL_UNLOAD dlclose # if defined(DLSYM_NEEDS_UNDERSCORE) ~ So basically by the time our library loads, if it utilizes a bare 'json_decode' that reference is resolved immediately; our module has no chance to warn. |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
| Given there is no good solution, for now we'll need to document this one very, very well. |
| Comment by Karen Zeller [ 12/Nov/12 ] |
| I don't do the release notes for individual SDK libraries. |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
|
This isn't a release note item, this is a PHP documentation item. This needs to be added to the getting started guide with a really clear description of what the issue is and how to work around it for RHEL/CentOS. I think you're still able to help us with PHP documentation, right? |
| Comment by Karen Zeller [ 12/Nov/12 ] |
| I see. Do you want this to go as a note during the platform-specific install section under RHEL/Centos? |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
|
I'll follow the docs team's guidance on how best to present the info.
Just be aware that it's something we've frequently hit and nearly every CentOS/RHEL user will hit it too. It's not our bug really that we can't make it simpler. It's a limitation in current PHP extension loading. That's why I think it needs to be covered in the appropriate section of the getting started guide, which is both on the web site (http://www.couchbase.com/develop/php/next) and in our documentation (http://www.couchbase.com/docs/couchbase-sdk-php-1.1/download.html and http://www.couchbase.com/docs/couchbase-sdk-php-1.1/installation-verification.html). Most people will hit it when following either of those. Our web pages currently have the following note: Note: With the PHP packages on many Red Hat/CentOS distributions (and possibly others), PHP's JSON encoding is not available to other extensions by default. As a result, you may see an error resolving the php_json_encode symbol. The solution is to edit ini file that loads the JSON extension (typically /etc/php.d/json.ini) to add the Couchbase extension after the JSON extension. Something along these lines (but improved, if you think need be) should be added to the getting started guide in the documentation. |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
|
Note, Pierre replied via email to my 'prior art' question:
No, ext dep manager is a long due todo but much easier to document than to implement. Other core exts have this, exif and mbstring, pdo exts and the sin pdo ext (which should be builtin but rhel and defiant made it wrong 1st) |
| Comment by Karen Zeller [ 14/Nov/12 ] |
|
Hi,
I'm adding this. Do we have an example of the php_json_encode error that you will get? Need to add this to the section. |
| Comment by Karen Zeller [ 14/Nov/12 ] |
|
Added to getting started/install as:
"If you are using the PHP SDK on a Linux distribution such as Red Hat/CentOS, be aware that JSON encoding for PHP is by default not available to other extensions. As a result you will receive an error resolving the php_json_encode symbol. The solution is to edit the .ini file that loads the JSON extension to add the Couchbase extension after the JSON extension. For instance, if your JSON extension is at /etc/php.d/json.ini, add the following line to the file under extensions: extension=/path/to/couchbase.so" |
| Comment by Karen Zeller [ 14/Nov/12 ] |
|
Added to getting started and install for PHP 1.1: If you are using the PHP SDK on a Linux distribution such as Red Hat/CentOS, be aware that JSON encoding for PHP is by default not available to other extensions. As a result you will receive an error resolving the php_json_encode symbol. The solution is to edit the .ini file that loads the JSON extension to add the Couchbase extension after the JSON extension. For instance, if your JSON extension is at /etc/php.d/json.ini, add the following line to the file under extensions: extension=/path/to/couchbase.so |
| Comment by Matt Ingenthron [ 28/Nov/12 ] |
| Karen: per the email thread with Mark Nunberg the other day, can we update this to have the two line recommendation? Perhaps that's what you've already done? |
| Comment by Karen Zeller [ 28/Nov/12 ] |
|
Oh yes, I did update per Mark's email several days ago. It is now: Depending on the platform you are using, you may also need to reference the JSON library in your PHP configuration file. If you are using the Couchbase PHP SDK on Red Hat/CentOS or their derivatives, be aware that JSON encoding for PHP is by default not available to other extensions. As a result you will receive an error resolving the php_json_encode symbol. The solution is to edit the php.ini file to load the JSON library and also load the Couchbase library. For instance, if your extensions are at /etc/php.ini, add the following two lines to the file: extension=/path/to/json.so extension=/path/to/couchbase.so The reference to the two extensions must be in this specific order. You can see it here: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/download.html |
| Comment by Karen Zeller [ 28/Nov/12 ] |
|
Oh yes, I did update per Mark's email several days ago. It is now: Depending on the platform you are using, you may also need to reference the JSON library in your PHP configuration file. If you are using the Couchbase PHP SDK on Red Hat/CentOS or their derivatives, be aware that JSON encoding for PHP is by default not available to other extensions. As a result you will receive an error resolving the php_json_encode symbol. The solution is to edit the php.ini file to load the JSON library and also load the Couchbase library. For instance, if your extensions are at /etc/php.ini, add the following two lines to the file: extension=/path/to/json.so extension=/path/to/couchbase.so The reference to the two extensions must be in this specific order. You can see it here: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/download.html |
| Comment by Andrey Nikishaev [ 17/Dec/12 ] |
|
Use version 1.1.1 of client lib and still get this error even when couchbase.so loaded after json.so
CentOS 5.6, PHP 5.2.17, Couchbase 1.8 |
| Comment by Karen Zeller [ 17/Dec/12 ] |
|
Hi Matt, This was reported as an technical issue still with PHP SDK: [ http://www.couchbase.com/issues/browse/PCBC-141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46067#comment-46067 ] Andrey Nikishaev commented on --------------------------------------- Use version 1.1.1 of client lib and still get this error even when couchbase.so loaded after json.so |
| Comment by Mark Nunberg [ 17/Dec/12 ] |
|
what's the exact error you're getting?
Maybe the json module needs to be installed as well? (I'll need to check this) -- |
| Comment by Matt Ingenthron [ 17/Dec/12 ] |
| Andrey: We do not support PHP 5.2, so you'll want to try 5.3 or later. CentOS 5.6 does have, if I recall correctly, a "php53" package. |
| Comment by Trond Norbye [ 10/May/13 ] |
| There are multiple bugs reported for this issue |
[PCBC-140] Connection Socket Not Closing Created: 04/Nov/12 Updated: 07/Nov/12 Resolved: 07/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | None |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Jeff Minard | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: | CentOS 5.5, Apache 2.2, mod_php, PHP5.3, Couchbase 2.0dp5 | ||
| Description |
|
(See discussion @ https://groups.google.com/forum/#!topic/couchbase/z5PWM5lS7gU)
I've been getting a "Too many files open" warning while accessing pages in my site. I tracked it down to this process using LSOF httpd 25992 httpduser 98u unix 0xffff81006cbcf4c0 0t0 6019192 socket httpd 25992 httpduser 99u unix 0xffff810074b160c0 0t0 6019193 socket httpd 25992 httpduser 100r 0000 0,11 0 6063613 eventpoll httpd 25992 httpduser 101u unix 0xffff8100701f66c0 0t0 6063614 socket httpd 25992 httpduser 102u unix 0xffff8100701f7a00 0t0 6063615 socket httpd 25992 httpduser 103r 0000 0,11 0 6064737 eventpoll httpd 25992 httpduser 104u unix 0xffff8100666eb6c0 0t0 6064738 socket httpd 25992 httpduser 105u unix 0xffff8100666eb980 0t0 6064739 socket httpd 25992 httpduser 108r 0000 0,11 0 6064793 eventpoll Everytime I refresh a page, two new sockets and one new eventpoll shows up. These socket/eventpoll's only show up on pages that make use of Coucbase -- in fact, in the email thread I narrowed it down to a single command page, so I'm pretty sure it's CB here. These FD's stick around until the apache thread is restarted (due to MaxRequestsPerChild limit reached) or an httpd restart. Eventually, the number of FD's opened causes things to go very poorly for the server. Utilizing persistent connections lessened the problem, but the number never went down/static, just increased more slowly. |
| Comments |
| Comment by Mark Nunberg [ 04/Nov/12 ] |
|
I can confirm this is happening even on a CLI script. Run this script (php 5.4, debian wheezy), and lsof -p on the php process.
This seems to be an issue in libcouchbase itself and not in the php code. Upon deeper analysis, the leaking fds seem to come from some odd socketpair call that libevent makes for no apparently good reason. It would seem libcouchbase never properly destroys the 'event_base' object, and the socket pairs keep persisting until the application exits. (gdb) bt #0 socketpair () at ../sysdeps/unix/syscall-template.S:82 #1 0x00007ffff3568181 in evsig_init () from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 #2 0x00007ffff35677c0 in ?? () from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 #3 0x00007ffff3556645 in event_base_new_with_config () from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 #4 0x00007ffff3556765 in event_base_new () from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 #5 0x00007ffff378b605 in lcb_create_libevent_io_opts () from /sources/libcouchbase/inst/lib/libcouchbase_libevent.so.2 #6 0x00007ffff3bb9dcc in lcb_create_io_ops () from /sources/libcouchbase/inst/lib/libcouchbase.so.2 #7 0x00007ffff3dd463d in php_couchbase_create_impl (ht=<optimized out>, return_value=0x7ffff7fbf078, this_ptr=0x7ffff7fbd2e8, oo=1, return_value_used=<error reading variable: Unhandled dwarf expression opcode 0xfa>, return_value_ptr=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /sources/lcb2.0-repo/php/couchbase.c:1708 #8 0x00007ffff3ff2edc in xdebug_execute_internal (current_execute_data=0x7ffff7f86060, return_value_used=0) at /srv/debian_developer/xdebug/xdebug-2.2.1/build-php5/xdebug.c:1483 #9 0x000000000074688e in zend_do_fcall_common_helper_SPEC (execute_data=0x7ffff7f86060) at /tmp/buildd/php5-5.4.4/Zend/zend_vm_execute.h:644 #10 0x0000000000700297 in execute (op_array=0x7ffff7fbdbc8) at /tmp/buildd/php5-5.4.4/Zend/zend_vm_execute.h:410 #11 0x00007ffff3ff2a81 in xdebug_execute (op_array=0x7ffff7fbdbc8) at /srv/debian_developer/xdebug/xdebug-2.2.1/build-php5/xdebug.c:1391 #12 0x00000000006a00de in zend_execute_scripts (type=8, retval=0x7ffff7fbdb90, file_count=3) at /tmp/buildd/php5-5.4.4/Zend/zend.c:1279 #13 0x000000000063f6b3 in php_execute_script (primary_file=0x7fffffff9f50) at /tmp/buildd/php5-5.4.4/main/main.c:2473 #14 0x0000000000749003 in do_cli (argc=0, argv=0x7fffffffe40c) at /tmp/buildd/php5-5.4.4/sapi/cli/php_cli.c:988 #15 0x00000000004310ca in main (argc=32767, argv=0xdb9210) at /tmp/buildd/php5-5.4.4/sapi/cli/php_cli.c:1361 |
| Comment by Mark Nunberg [ 04/Nov/12 ] |
|
I was right about the problem, but not about the real cause.
The real cause is that the php extension creates the iops structure manually, and does not manually clean it up. Therefore the explicit creation of the iops structure causes a memory leak as well as a fd leak. Ideally our extension code should never be dealing with the iops structure directly, which will be done in subsequent refactors. This was not the case in the 1.0.x versions of libcouchbase where lcb would just assume the iops structure needed to be destroyed and freed it. |
| Comment by Mark Nunberg [ 04/Nov/12 ] |
|
http://review.couchbase.org/22255
You can apply this patch manually if you'd like as a temporary workaround. |
| Comment by Mark Nunberg [ 04/Nov/12 ] |
|
For the record, in output like this:
httpd 25992 httpduser 105u unix 0xffff8100666eb980 0t0 6064739 socket The fifth column indicates the underlying fd type. In this case, it's a unix socket. If it were a TCP socket it'd say "IPv4" (or "IPv6") - and that gave me the hint, as libcouchbase on its own does not utilize unix domain sockets. |
| Comment by Matt Ingenthron [ 04/Nov/12 ] |
| Does a similar fix need to be made in 1.0.x? I peeked at the code briefly, but enough has changed that I couldn't quite tell. |
| Comment by Mark Nunberg [ 05/Nov/12 ] |
| No, this issue is specific to the lcb 2.0 iops refactor |
| Comment by Matt Ingenthron [ 05/Nov/12 ] |
| Good news, thanks! |
| Comment by Mark Nunberg [ 07/Nov/12 ] |
| I'm marking this as resolved/fixed. Reopen if not working. |
[PCBC-139] PHP client needs fastlz compression to be compatible with legacy memcached clients Created: 01/Nov/12 Updated: 11/Dec/12 Resolved: 16/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.0.4 |
| Fix Version/s: | 1.0.6, 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Tim Smith | Assignee: | Trond Norbye |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | customer | ||
| Remaining Estimate: | 16h | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | 16h | ||
| Environment: | With both php-ext-couchbase-1.0.5-centos55-x86_64.tar.gz and php-ext-couchbase-1.0.6b23_centos-5.5-x64.tar.gz. I will attach php -i output as a separate comment. Using php-pecl-memcached extension 1.0.0. libmemcached 1.0.4. | ||
| Attachments: |
|
||||
| Issue Links: |
|
||||
| Description |
|
The existing memcached clients for PHP (pecl-memcached and memcache) both default to using fastlz compression for values >= 2000 bytes.
The couchbase client library doesn't have fastlz compression included. It doesn't provide a useful error message when it runs into this problem. Instead, it misinterprets the stored value, tries to allocate a huge block of memory and fails. The error it gives (look, e.g., in the PHP-FPM web-access.log) is: [01-Nov-2012 20:45:49 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8460104323416721361 bytes) in /usr/share/nginx/html/cb.php on line 32 To reproduce, just set a value >= 2000 bytes with pecl-memcached client, and try to read it with Couchbase client. Here's a sample: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Couchbase Server PHP Test</title> </head> <body> <p> <?php $host = "10.4.2.15"; $user = "Administrator"; $password = "password"; $bucketName = "default"; $persistConnection = false; $cb = new Couchbase($host . ":8091", $user, $password, $bucketName, $persistConnection); $mc = new Memcached('Pool-1'); if (count($mc->getServerList()) == 0) { // No servers, this pool needs to be configured $mc->addServer($host, 11211); //$mc->addServer("other host", 11211); } // Change this to 1999 and it will work $valLength = 2000; date_default_timezone_set('UTC'); $val = date(DateTime::RFC2822) . ' '; $val .= str_repeat('X', $valLength - strlen($val)); $mc->set("a", $val); echo("The value for 'a' is: "); var_dump($cb->get("a")); ?> </p> </body> </html> The correct behavior is for the Couchbase client to ship, out of the box, compatible with existing Memcached client implementations. It should include fastlz support directly, or else clearly document how to add such support without requiring any unusual compilations or other hoops. The fastlz code is very small and portable, and hasn't changed since 2007, so it should present a minimal maintenance issue. In addition, the PHP client documentation should clearly indicate what changes are needed in order for the client to be compatible with the other Couchbase clients (Java, .NET, etc.). Again, without requiring recompilation or extra hoops to jump through. |
| Comments |
| Comment by Tim Smith [ 01/Nov/12 ] |
|
phpinfo()
PHP Version => 5.3.15 System => Linux localhost.localdomain 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 Build Date => Jul 20 2012 13:07:19 Configure Command => './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--with-t1lib=/usr' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--with-mhash' '--enable-force-cgi-redirect' '--libdir=/usr/lib64/php' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--enable-mysqlnd=shared' '--with-mysql=shared,mysqlnd' '--with-mysqli=shared,mysqlnd' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-oci8=shared,instantclient,/usr/lib64/oracle/11.2/client64/lib,11.2' '--with-pdo-oci=shared,instantclient,/usr,11.2' '--with-interbase=shared,/usr/lib64/firebird' '--with-pdo-firebird=shared,/usr/lib64/firebird' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-pdo-dblib=shared,/usr' '--without-sqlite3' '--with-sqlite=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--without-readline' '--with-libedit' '--with-pspell=shared' '--enable-phar=shared' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-mssql=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-enchant=shared,/usr' '--with-recode=shared,/usr' Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini Scan this dir for additional .ini files => /etc/php.d Additional .ini files parsed => /etc/php.d/curl.ini, /etc/php.d/fileinfo.ini, /etc/php.d/igbinary.ini, /etc/php.d/json.ini, /etc/php.d/memcached.ini, /etc/php.d/phar.ini, /etc/php.d/zip.ini, /etc/php.d/zzz-couchbase.ini PHP API => 20090626 PHP Extension => 20090626 Zend Extension => 220090626 Zend Extension Build => API220090626,NTS PHP Extension Build => API20090626,NTS Debug Build => no Thread Safety => disabled Zend Memory Manager => enabled Zend Multibyte Support => disabled IPv6 Support => enabled Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk This program makes use of the Zend Scripting Language Engine: Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies _______________________________________________________________________ Configuration bz2 BZip2 Support => Enabled Stream Wrapper support => compress.bzip2:// Stream Filter support => bzip2.decompress, bzip2.compress BZip2 Version => 1.0.3, 15-Feb-2005 calendar Calendar support => enabled Core PHP Version => 5.3.15 Directive => Local Value => Master Value allow_call_time_pass_reference => Off => Off allow_url_fopen => On => On allow_url_include => Off => Off always_populate_raw_post_data => Off => Off arg_separator.input => & => & arg_separator.output => & => & asp_tags => Off => Off auto_append_file => no value => no value auto_globals_jit => On => On auto_prepend_file => no value => no value browscap => no value => no value default_charset => no value => no value default_mimetype => text/html => text/html define_syslog_variables => Off => Off disable_classes => no value => no value disable_functions => no value => no value display_errors => Off => Off display_startup_errors => Off => Off doc_root => no value => no value docref_ext => no value => no value docref_root => no value => no value enable_dl => Off => Off error_append_string => no value => no value error_log => no value => no value error_prepend_string => no value => no value error_reporting => 22527 => 22527 exit_on_timeout => Off => Off expose_php => On => On extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules file_uploads => On => On highlight.bg => <font style="color: #FFFFFF">#FFFFFF</font> => <font style="color: #FFFFFF">#FFFFFF</font> highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font> highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font> highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font> highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font> highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font> html_errors => Off => Off ignore_repeated_errors => Off => Off ignore_repeated_source => Off => Off ignore_user_abort => Off => Off implicit_flush => On => On include_path => .:/usr/share/pear:/usr/share/php => .:/usr/share/pear:/usr/share/php log_errors => On => On log_errors_max_len => 1024 => 1024 magic_quotes_gpc => Off => Off magic_quotes_runtime => Off => Off magic_quotes_sybase => Off => Off mail.add_x_header => On => On mail.force_extra_parameters => no value => no value mail.log => no value => no value max_execution_time => 0 => 0 max_file_uploads => 20 => 20 max_input_nesting_level => 64 => 64 max_input_time => -1 => -1 max_input_vars => 1000 => 1000 memory_limit => 128M => 128M open_basedir => no value => no value output_buffering => 0 => 0 output_handler => no value => no value post_max_size => 8M => 8M precision => 14 => 14 realpath_cache_size => 16K => 16K realpath_cache_ttl => 120 => 120 register_argc_argv => On => On register_globals => Off => Off register_long_arrays => Off => Off report_memleaks => On => On report_zend_debug => Off => Off request_order => GP => GP safe_mode => Off => Off safe_mode_exec_dir => no value => no value safe_mode_gid => Off => Off safe_mode_include_dir => no value => no value sendmail_from => no value => no value sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i serialize_precision => 100 => 100 short_open_tag => Off => Off SMTP => localhost => localhost smtp_port => 25 => 25 sql.safe_mode => Off => Off track_errors => Off => Off unserialize_callback_func => no value => no value upload_max_filesize => 2M => 2M upload_tmp_dir => no value => no value user_dir => no value => no value user_ini.cache_ttl => 300 => 300 user_ini.filename => .user.ini => .user.ini variables_order => GPCS => GPCS xmlrpc_error_number => 0 => 0 xmlrpc_errors => Off => Off y2k_compliance => On => On zend.enable_gc => On => On couchbase couchbase support => enabled version => 1.0.5 json support => yes fastlz support => no zlib support => yes Directive => Local Value => Master Value couchbase.compression_factor => 1.3 => 1.3 couchbase.compression_threshold => 2000 => 2000 couchbase.compressor => none => none couchbase.serializer => php => php ctype ctype functions => enabled curl cURL support => enabled cURL Information => 7.15.5 Age => 2 Features AsynchDNS => No Debug => No GSS-Negotiate => Yes IDN => Yes IPv6 => Yes Largefile => Yes NTLM => Yes SPNEGO => No SSL => Yes SSPI => No krb4 => No libz => Yes CharConv => No Protocols => tftp, ftp, telnet, dict, ldap, http, file, https, ftps Host => x86_64-redhat-linux-gnu SSL Version => OpenSSL/0.9.8b ZLib Version => 1.2.3 date date/time support => enabled "Olson" Timezone Database Version => 0.system Timezone Database => internal PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Los_Angeles' for 'PDT/-7.0/DST' instead in Unknown on line 0 Default timezone => America/Los_Angeles Directive => Local Value => Master Value date.default_latitude => 31.7667 => 31.7667 date.default_longitude => 35.2333 => 35.2333 date.sunrise_zenith => 90.583333 => 90.583333 date.sunset_zenith => 90.583333 => 90.583333 date.timezone => no value => no value ereg Regex Library => Bundled library enabled exif EXIF Support => enabled EXIF Version => 1.4 $Id$ Supported EXIF Version => 0220 Supported filetypes => JPEG,TIFF Directive => Local Value => Master Value exif.decode_jis_intel => JIS => JIS exif.decode_jis_motorola => JIS => JIS exif.decode_unicode_intel => UCS-2LE => UCS-2LE exif.decode_unicode_motorola => UCS-2BE => UCS-2BE exif.encode_jis => no value => no value exif.encode_unicode => ISO-8859-15 => ISO-8859-15 fileinfo fileinfo support => enabled version => 1.0.5-dev filter Input Validation and Filtering => enabled Revision => $Id: 2b8c730d7dfaa8485d07cd792f0c82852ffe4113 $ Directive => Local Value => Master Value filter.default => unsafe_raw => unsafe_raw filter.default_flags => no value => no value ftp FTP support => enabled gettext GetText Support => enabled gmp gmp support => enabled GMP version => 4.1.4 hash hash support => enabled Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 iconv iconv support => enabled iconv implementation => glibc iconv library version => 2.5 Directive => Local Value => Master Value iconv.input_encoding => ISO-8859-1 => ISO-8859-1 iconv.internal_encoding => ISO-8859-1 => ISO-8859-1 iconv.output_encoding => ISO-8859-1 => ISO-8859-1 igbinary igbinary support => enabled igbinary version => 1.1.1 igbinary APC serializer ABI => 0 Directive => Local Value => Master Value igbinary.compact_strings => On => On json json support => enabled json version => 1.2.1 libxml libXML support => active libXML Compiled Version => 2.6.26 libXML Loaded Version => 20626 libXML streams => enabled memcached memcached support => enabled Version => 2.1.0 libmemcached version => 1.0.4 Session support => yes igbinary support => yes json support => yes Directive => Local Value => Master Value memcached.compression_factor => 1.3 => 1.3 memcached.compression_threshold => 2000 => 2000 memcached.compression_type => fastlz => fastlz memcached.serializer => igbinary => igbinary memcached.sess_binary => 0 => 0 memcached.sess_lock_wait => 150000 => 150000 memcached.sess_locking => 1 => 1 memcached.sess_prefix => memc.sess.key. => memc.sess.key. mhash MHASH support => Enabled MHASH API Version => Emulated Support openssl OpenSSL support => enabled OpenSSL Library Version => OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 OpenSSL Header Version => OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 pcntl pcntl support => enabled pcre PCRE (Perl Compatible Regular Expressions) Support => enabled PCRE Library Version => 8.12 2011-01-15 Directive => Local Value => Master Value pcre.backtrack_limit => 1000000 => 1000000 pcre.recursion_limit => 100000 => 100000 Phar Phar: PHP Archive support => enabled Phar EXT version => 2.0.1 Phar API version => 1.1.1 SVN revision => $Id: f7d08da4ab9e515975840c28b830edc9437c3026 $ Phar-based phar archives => enabled Tar-based phar archives => enabled ZIP-based phar archives => enabled gzip compression => enabled bzip2 compression => enabled Native OpenSSL support => enabled Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. Directive => Local Value => Master Value phar.cache_list => no value => no value phar.readonly => On => On phar.require_hash => On => On Reflection Reflection => enabled Version => $Id: e98652ba2326bd9391b730afdaf96c017d9fab48 $ session Session Support => enabled Registered save handlers => files user memcached Registered serializer handlers => php php_binary igbinary Directive => Local Value => Master Value session.auto_start => Off => Off session.bug_compat_42 => Off => Off session.bug_compat_warn => Off => Off session.cache_expire => 180 => 180 session.cache_limiter => nocache => nocache session.cookie_domain => no value => no value session.cookie_httponly => Off => Off session.cookie_lifetime => 0 => 0 session.cookie_path => / => / session.cookie_secure => Off => Off session.entropy_file => no value => no value session.entropy_length => 0 => 0 session.gc_divisor => 1000 => 1000 session.gc_maxlifetime => 1440 => 1440 session.gc_probability => 1 => 1 session.hash_bits_per_character => 5 => 5 session.hash_function => 0 => 0 session.name => PHPSESSID => PHPSESSID session.referer_check => no value => no value session.save_handler => files => files session.save_path => /var/lib/php/session => /var/lib/php/session session.serialize_handler => php => php session.use_cookies => On => On session.use_only_cookies => On => On session.use_trans_sid => 0 => 0 shmop shmop support => enabled SimpleXML Simplexml support => enabled Revision => $Id: a379111021e24ef020a2eefd8ca830cb1ab5b280 $ Schema support => enabled sockets Sockets Support => enabled SPL SPL support => enabled Interfaces => Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException standard Dynamic Library Support => enabled Path to sendmail => /usr/sbin/sendmail -t -i Directive => Local Value => Master Value assert.active => 1 => 1 assert.bail => 0 => 0 assert.callback => no value => no value assert.quiet_eval => 0 => 0 assert.warning => 1 => 1 auto_detect_line_endings => 0 => 0 default_socket_timeout => 60 => 60 from => no value => no value safe_mode_allowed_env_vars => PHP_ => PHP_ safe_mode_protected_env_vars => LD_LIBRARY_PATH => LD_LIBRARY_PATH url_rewriter.tags => a=href,area=href,frame=src,input=src,form=fakeentry => a=href,area=href,frame=src,input=src,form=fakeentry user_agent => no value => no value tokenizer Tokenizer Support => enabled xml XML Support => active XML Namespace Support => active libxml2 Version => 2.6.26 zip Zip => enabled Extension Version => $Id$ Zip version => 1.11.0 Libzip version => 0.10.1 zlib ZLib Support => enabled Stream Wrapper support => compress.zlib:// Stream Filter support => zlib.inflate, zlib.deflate Compiled Version => 1.2.3 Linked Version => 1.2.3 Directive => Local Value => Master Value zlib.output_compression => Off => Off zlib.output_compression_level => -1 => -1 zlib.output_handler => no value => no value Additional Modules Module Name readline Environment Variable => Value HOSTNAME => localhost.localdomain TERM => xterm-256color SHELL => /bin/bash HISTSIZE => 1000 SSH_CLIENT => 10.32.16.37 62308 22 SSH_TTY => /dev/pts/1 USER => root LS_COLORS => SSH_AUTH_SOCK => /tmp/ssh-RpQDiY3683/agent.3683 MAIL => /var/spool/mail/root PATH => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD => /usr/share/nginx/html LANG => en_US.UTF-8 SSH_ASKPASS => /usr/libexec/openssh/gnome-ssh-askpass SHLVL => 1 HOME => /root LOGNAME => root SSH_CONNECTION => 10.32.16.37 62308 10.4.2.14 22 LESSOPEN => |/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES => 1 _ => /usr/bin/php OLDPWD => /root/php-lib PHP Variables Variable => Value _SERVER["HOSTNAME"] => localhost.localdomain _SERVER["TERM"] => xterm-256color _SERVER["SHELL"] => /bin/bash _SERVER["HISTSIZE"] => 1000 _SERVER["SSH_CLIENT"] => 10.32.16.37 62308 22 _SERVER["SSH_TTY"] => /dev/pts/1 _SERVER["USER"] => root _SERVER["LS_COLORS"] => _SERVER["SSH_AUTH_SOCK"] => /tmp/ssh-RpQDiY3683/agent.3683 _SERVER["MAIL"] => /var/spool/mail/root _SERVER["PATH"] => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin _SERVER["PWD"] => /usr/share/nginx/html _SERVER["LANG"] => en_US.UTF-8 _SERVER["SSH_ASKPASS"] => /usr/libexec/openssh/gnome-ssh-askpass _SERVER["SHLVL"] => 1 _SERVER["HOME"] => /root _SERVER["LOGNAME"] => root _SERVER["SSH_CONNECTION"] => 10.32.16.37 62308 10.4.2.14 22 _SERVER["LESSOPEN"] => |/usr/bin/lesspipe.sh %s _SERVER["G_BROKEN_FILENAMES"] => 1 _SERVER["_"] => /usr/bin/php _SERVER["OLDPWD"] => /root/php-lib _SERVER["PHP_SELF"] => _SERVER["SCRIPT_NAME"] => _SERVER["SCRIPT_FILENAME"] => _SERVER["PATH_TRANSLATED"] => _SERVER["DOCUMENT_ROOT"] => _SERVER["REQUEST_TIME"] => 1351803847 _SERVER["argv"] => Array ( ) _SERVER["argc"] => 0 PHP License This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net. |
| Comment by Tim Smith [ 02/Nov/12 ] |
|
It doesn't work even when the extension is compiled to use fastlz compression.
I recompiled php-ext-couchbase from git with current libcouchbase code, and configured to include fastlz support. I set couchbase.compressor=fastlz in php.ini. And the couchbase.compression_threshold is at 2000, same as the memcached extension setting. Excerpt of phpinfo() for the couchbase extension: couchbase support enabled version 1.1.0-dp5 json support yes fastlz support yes zlib support yes Directive Local Value Master Value couchbase.compression_factor 1.3 1.3 couchbase.compression_threshold 2000 2000 couchbase.compressor fastlz fastlz couchbase.serializer php php The same test case fails in the same way: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7598212603105511377 bytes) in /usr/share/nginx/html/cb.php on line 35 |
| Comment by Tim Smith [ 02/Nov/12 ] |
|
By the way, in order to compile with fastlz support, the following patch is needed:
diff --git a/couchbase.c b/couchbase.c index 240ba3e..f4c14e5 100644 --- a/couchbase.c +++ b/couchbase.c @@ -41,6 +41,8 @@ #include <libcouchbase/couchbase.h> #include "php_couchbase.h" #ifdef HAVE_COMPRESSION_FASTLZ +# include "fastlz.h" +/* Any other code that uses fastlz_* should only include the header */ # include "fastlz.c" #endif #ifdef HAVE_COMPRESSION_ZLIB diff --git a/views.c b/views.c index 395cc2b..e818473 100644 --- a/views.c +++ b/views.c @@ -19,7 +19,7 @@ #include <libcouchbase/couchbase.h> #include "php_couchbase.h" #ifdef HAVE_COMPRESSION_FASTLZ -# include "fastlz.c" +# include "fastlz.h" #endif #ifdef HAVE_COMPRESSION_ZLIB # include "zlib.h" Otherwise linking couchbase.so fails because the fastlz functions are defined in more than one place. |
| Comment by Mark Nunberg [ 02/Nov/12 ] |
|
Fixes for this are in progress.
http://review.couchbase.org/#/c/20604/ (in progress) fixes some of the crazy allocation attempts you've seen. As for fastlz support, it shouldn't be too difficult to add it on. |
| Comment by Mark Nunberg [ 06/Nov/12 ] |
|
A binary is attached. It's not compiled against the exact same version of php, but the zend api versions remain the same. If the binary release doesn't work, I'd be happy to walk someone through building it from source (it's a very simple process -- much simpler than getting this binary built). |
| Comment by Mark Nunberg [ 06/Nov/12 ] |
| Note this is for the 1.1-dp php-ext branch. I've yet to backport this to the 1.0 branch |
| Comment by Matt Ingenthron [ 07/Nov/12 ] |
| Mark: Please determine if this issue is still valid and help me triage it into the appropriate release. I've assigned it to you for triage, not necessarily to fix it. |
| Comment by Mark Nunberg [ 07/Nov/12 ] |
|
Awaiting approval on http://review.couchbase.com/22340
The is fixed in the code. Still needs backport to 1.0.x Assigning back to you |
| Comment by Mark Nunberg [ 07/Nov/12 ] |
| http://review.couchbase.org/#/c/22340/ (1.1) |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
| Awaiting verification fix from customer. |
| Comment by Matt Ingenthron [ 14/Nov/12 ] |
| Trond: can you take care of backporting this to 1.0.x please? |
| Comment by Tim Smith [ 15/Nov/12 ] |
|
More detail. I was personally unable to get the build of the latest PHP code to work with the beta2 release. I was hitting the error that is reported on http://www.couchbase.com/issues/browse/CCBC-126 :
Warning: Couchbase::__construct() [couchbase.--construct]: failed to create IO instance in /usr/share/nginx/html/cb.php on line 18 Building from sources let me get past that and actually test the build that the customer was trying. And following from that was a need to deal with LD_LIBRARY_PATH and symlink hacks. A backport of the fastlz compression fix to 1.0.x, with an official release of that, would be best for this particular user's needs. Can we get an ETA on when that will be available? Thanks, Tim |
| Comment by Trond Norbye [ 16/Nov/12 ] |
| For 1.0.x: http://review.couchbase.org/#/c/22590/ |
| Comment by Tim Smith [ 16/Nov/12 ] |
|
I've confirmed it to work (using the current 1.0.x branch from github.com/couchbase/php-ext-couchbase).
I had to create a fake /usr/lib64/libvbucket.la to get it to compile: http://www.couchbase.com/issues/browse/CCBC-127 I noticed that compress.c has this redundant (unused) definition: 92 /* headers which claim an uncompressed size above this figure are bad */ 93 #define DECOMP_SANITY_LIMIT 0x40000000 And this inaccurate comment: 172 /** 173 * sanity check, don't allocate over a GB, we should make this number 174 * smaller though 175 */ Obviously minor cleanup stuff, nothing significant that I can spot. Would be great to get a 1.0.x package built and available for download with this (and other critical fixes, like Tim |
| Comment by Matt Ingenthron [ 16/Nov/12 ] |
| Packages are being uploaded to the site right now. Web page update to follow. Release notes will go up on Monday. |
[PCBC-137] view querying needs to be more straightforward; e.g. character strings of decimal digits are serialised over the REST API as integers in view requests Created: 25/Oct/12 Updated: 11/Dec/12 Resolved: 23/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Michael Robinson | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Given this code:
$key = "1"; $result = $cb->view("design", "view", array("key"=>$key)); The PHP library will serialize this to a REST request as follows: GET /bucket/_design/design/_view/view?key=1 This will be deserialized by couchbase as the integer value 1, not as the string value "1". Consequently, any key that is a string of decimal digits cannot be retrieved from a view with the PHP library. This workaround can be used: $key = "1"; $result = $cb->view("design", "view", array("key"=>'"'.$key.'"')); The library will serialize this to a REST request as follows: GET /bucket/_design/design/_view/view?key="1" And couchbase will deserialize this as the string value "1". |
| Comments |
| Comment by Matt Ingenthron [ 25/Oct/12 ] |
| Mark: I saw you mention this earlier. Can you provide an assessment on this? |
| Comment by Mark Nunberg [ 25/Oct/12 ] |
|
This is a more generalized bug or task of making php aware of the view parameters it passes.
Currently it only serializes the key-value pairs in the array as is. Having php know about where to place quotes would mean making the client aware abotu the variations in the view parameters, or in other words, implementing all of the view logic in the client library. For now the user should be aware of this, and if something clearly mandates "quotes" then it should be quoted already when passed to the array. While it's not the most elegant solution the fix to this is by far not surgical, and thus i recommend changing the name of this bug |
| Comment by Michael Robinson [ 25/Oct/12 ] |
|
Would logic equivalent to this not solve the problem?
if (is_string($params["key"])) { $paramString += 'key="'.$params["key"].'"'; } else { $paramString += 'key='.$params["key"]; } |
| Comment by Mark Nunberg [ 25/Oct/12 ] |
|
No, because there are some parameters which do need actual integers.
Maybe the server can tolerate numeric parameters even fi they are enclosed in quotes, but I am not sure about that. See http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-querying-rest-api.html - and for example, group_level Basically, the php client needs more logic to know the appropriate type for each parameter and perform the necessary coercion. i.e. numeric values for keys are not the same as numeric values for pagination |
| Comment by Michael Robinson [ 26/Oct/12 ] |
|
Ok, it seems there are two problems at issue:
Problem 1: As a general case, type coercions across all parameters in the REST query string are not being handled as intelligently as they could be by the PHP library. Problem 2: As a special case of problem 1, the PHP library will silently fail to retrieve records from a view if the key happens to be a string of decimal digits. Without addressing the technical or architectural challenges of problem 1, it seems that, with respect to problem 2, as a general principle, silently failing to retrieve valid records for which a valid request was submitted is generally recognized as undesirable behavior for a database system. This undesirable behavior could be rectified by the following (and as far as I can see, trivial) change to the serialization logic: If the parameter is in the set ("key", "startkey", "startkey_docid", "endkey", "endkey_docid"), and if the PHP type of the corresponding parameter value is "string", then serialize the parameter value in quotation marks in the REST query string, otherwise serialize the parameter value according to current implementation. Yes? |
| Comment by Matt Ingenthron [ 26/Oct/12 ] |
| That does seem to make sense to me Michael. That's roughly what we evolved to on the other clients (Java && .NET), but there things are a bit different because of the types. |
| Comment by Matt Ingenthron [ 12/Nov/12 ] |
| Michael: can you take the lead on documenting a reasonable view query API. You have been through this once before, so I think you'd be the best person here. Simply document it here in this issue and then let's schedule a quick design review. |
| Comment by Michael Nitschinger [ 13/Nov/12 ] |
|
Here is my proposal.
I've been thinking through and working around this while hacking on Basement (https://github.com/daschl/Basement) and also while extending the Java API. You may see similarities because of this (and you'll hopefully see why and how it makes sense). At the lowest level, I think we should provide two ways of passing in queries in there. 1) A plain array as it is now. This way users can work around possible bugs and also have the flexibility if they know what they're doing. We should clearly state though that they are "on their own" when going down this route. 2) A CouchbaseViewQuery object (sorry, since we don't support namespaces in the extension). This works nearly similar to the Java-one, with the main difference that we need to care about working out the appropriate result type on our own (since you can pass in everything as a variable). All further discussion (except noted) refers to the new object and how it should behave. The construct should either take no params or an array to be initialized with. If it gets an array, it doesn't set the params directly but calls each setter for the given key to make sure that all rules are properly enforced. Here is a simplified example. It assumes that all setter methods have the name as the param (like key() when setting/getting the key). If we want bean-style setters the method names need to be changed of course. class CouchbaseViewQuery { // holds the params to be exported private $params = array(); // iterate over the given object an call setters. public function __construct($params = array()) { foreach($params as $key => $value) { if($value !== null) { $this->{$key}($value); } } } public function reduce($reduce = null) { // getter/setter functionality in each method makes it condensed. if($reduce == null) { return $this->params['reduce']; } // do appropriate type checking for each param depending on whats // supported. if($reduce === 'true' || $reduce === true) { $this->params['reduce'] = true; } // return object to let chain setters. return $this; } } Depending on how much we want to change the underlying interface, this query object can have either a toArray() or toString() export method that handles either only exporting it to an array, a string or also handle JSON serialization or encoding (don't know what of this parts is handled by libcouchbase itself). Here is a possible usage example: $query = new CouchbaseViewQuery(); $query->setReduce(true); // equally to $query->setReduce('true'); then $cb->view('design', 'view', $query); Also, all checks and conversions can then be handled transparently and securely by their appropriate setter methods. PHP also provides is_string() and so on to further determine what is passed into the variable. Also, the export method is then in the position to do semantical checks like throw a warning/exception when reduce is false (or not set) and a group param is passed on. This could also be done in the setter but I'd like to see it done on exporting to reduce the coupling between setters. The query handling object could look similar to this: https://github.com/daschl/Basement/blob/master/README.md#working-with-views (of course the method signature for view querying is differently, but the Query object would be nearly the same). Let me know what you think guys, Michael |
| Comment by Michael Nitschinger [ 13/Nov/12 ] |
| For design review. |
[PCBC-136] PHP client needs to move to later libcouchbase2 API Created: 18/Oct/12 Updated: 23/Oct/12 Resolved: 22/Oct/12 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp4 |
| Fix Version/s: | 1.1.0-dp5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Matt Ingenthron | Assignee: | Sergey Avseyev |
| Resolution: | Fixed | Votes: | 2 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
With the current PHP extension and the newly updated libcouchbase, bug reporter sees:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/couchbase.so' - /usr/lib64/php/modules/couchbase.so: undefined symbol: lcb_set_view_complete_callback in Unknown on line 0 It looks like we changed this on September 26, so we'll need to update the PHP client. |
| Comments |
| Comment by Matt Ingenthron [ 18/Oct/12 ] |
| Sergey, since you'd made the change in libcouchbase, can you look at this? |
| Comment by Paul B [ 20/Oct/12 ] |
| Having the same issue. |
| Comment by Matt Ingenthron [ 21/Oct/12 ] |
| I think we'll try to get a new release out for this on the 22nd, sorry for the trouble. |
| Comment by Matt Ingenthron [ 21/Oct/12 ] |
| I believe Trond has a fix for this here: http://review.couchbase.org/#/c/21812/ |
| Comment by Paul B [ 23/Oct/12 ] |
|
Hi guys, ok so I update and now I am getting the following error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/couchbase.so' - /usr/lib64/php/modules/couchbase.so: undefined symbol: php_json_encode in Unknown on line 0 Thank you. |
| Comment by Paul B [ 23/Oct/12 ] |
|
Ah sorry, it was due to this issue --> http://www.couchbase.com/forums/thread/couchbaseso-undefined-symbol-phpjsonencode-unknown-line-0
All good now. Thank you!! |
[PCBC-135] Wrong parameter description for delete() Created: 08/Oct/12 Updated: 11/Dec/12 Resolved: 27/Nov/12 |
|
| Status: | Closed |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.0, 1.1.0-dp4 |
| Fix Version/s: | 1.0.5, 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Minor |
| Reporter: | Dan Andersen | Assignee: | Karen Zeller |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The docs API for the delete method says: ( http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-update.html#table-couchbase-sdk_php_delete )
$object->delete($key [, $expiry ]) But the expire should actually be cas, as in the source https://github.com/couchbase/php-ext-couchbase/blob/master/couchbase.c#L401 |
| Comments |
| Comment by Matt Ingenthron [ 08/Oct/12 ] |
| Please update this in both the 1.0 and 1.1 SDK docs. |
| Comment by Karen Zeller [ 27/Nov/12 ] |
|
Should be fixed with this change, I think: <argument inherit="cas" optional="yes"/> |
| Comment by Karen Zeller [ 27/Nov/12 ] |
|
should be the fix: <argument inherit="cas" optional="yes"/> |
[PCBC-134] Provide more information on connection failure Created: 08/Oct/12 Updated: 11/Feb/13 Resolved: 26/Oct/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.0.5, 1.1.0-dp4 |
| Fix Version/s: | 1.0.6, 1.1.0 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Dan Andersen | Assignee: | Michael Jackson |
| Resolution: | Fixed | Votes: | 1 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
When you connect via the new Couchbase(...) is not a direct way to check for whether the connection failed.
It is not possible to check getResultCode()/getResultMessage() since this provides a unintilized couchbase |
| Comments |
| Comment by Mark Nunberg [ 08/Oct/12 ] |
|
For this we'd probably need to change the ext code to return a valid couchbase object so that getResultCode can be called on it (to check for connection failures).
For the non-oo variant (couchbase_connect) behavior should remain the same (?) Additionally, all the code which now checks for the couchbase object to simply exist should be changed to check that the couchbase object is indeed connected (I believe lcb has a function for that, but if not we can set our own little flag in our php_couchbase_ctx structure). One workaround is to call set_error_handler and make it throw an ErrorException right before instantiation. Then the connection can be done in a try/catch block, with any message being found in $ex->getMessage(). I believe there may be ther workarounds as well |
| Comment by Michael Jackson [ 09/Oct/12 ] |
| patch set in progress: http://review.couchbase.org/#/c/21433/ |
| Comment by Michael Jackson [ 09/Oct/12 ] |
| As a side note, I have a 1.0.x backport of the changes above ready to roll once the master branch changes are approved/merged. |
| Comment by Michael Jackson [ 10/Oct/12 ] |
| master branch changeset is merged in. 1.0.x changeset is here: http://review.couchbase.org/#/c/21487/ |
| Comment by Michael Jackson [ 19/Oct/12 ] |
| (I believe all this needs for resolution is the 1.0.x changeset mentioned above to be merged into 1.0.x branch.) |
| Comment by Michael Jackson [ 26/Oct/12 ] |
| 1.0.x merged in just now, 1.1 has been in for a bit. Should be present in next released versions. |
[PCBC-133] connection options needs updating in 1.1 docs Created: 08/Oct/12 Updated: 18/Feb/13 Resolved: 18/Feb/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp4 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Bug | Priority: | Critical |
| Reporter: | Matt Ingenthron | Assignee: | MC Brown |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
For 1.0.5, we updated the connection options about redundant connections. We need to bring those changes over to the 1.1. documentation as well.
|
| Comments |
| Comment by Matt Ingenthron [ 08/Oct/12 ] |
|
Also, note the API docs says the API call to new Couchbase() is : new Couchbase($url, $username, $password [, $persistent ]) .... but it's actually, $url, $username,$password, $bucket, $persisten..
See: http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-connection.html |
| Comment by Karen Zeller [ 15/Feb/13 ] |
| MC is handling updates to the C library as well as PHP library in metadocs. |
| Comment by MC Brown [ 18/Feb/13 ] |
| I've updated the API reference, narrative, and default options to show the correct values and connection options. I've also added the information on redundant connections and examples |
[PCBC-132] Document testing procedures Created: 05/Oct/12 Updated: 11/Dec/12 Resolved: 12/Nov/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0 |
| Security Level: | Public |
| Type: | Task | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Mark Nunberg [ 06/Nov/12 ] |
| http://review.couchbase.org/22320 |
[PCBC-131] multi-touch test crashes/segfaults Created: 05/Oct/12 Updated: 05/Oct/12 Resolved: 05/Oct/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | None |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0-dp5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
NegativeExpiry/Touch segfaults. Simple as that.
function testTouch() { $this->assertExceptionRegexp( create_function('$oo', '$oo->touch("key", -1);'), array($this->getPersistOO()), self::$expiryRegexp ); } |
[PCBC-130] Remove mention of pecl-memcache and pecl-memcached from http://www.couchbase.com/develop Created: 14/Jun/12 Updated: 16/Apr/13 Resolved: 16/Apr/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | docs |
| Affects Version/s: | 1.1.0 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Perry Krug | Assignee: | Matt Ingenthron |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | customer | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Is this docs or client library?
Anyway, a customer somehow missed the big "PHP 1.0" link at the top of the page and thought that he had to use pecl-memcache*. let's remove those now that we have native PHP support. |
| Comments |
| Comment by Matt Ingenthron [ 15/Oct/12 ] |
|
The reason I did that is I wanted to communicate that we're compatible there, since pecl-memcache (not so much memcached, since we're compatible there) is so popular.
I think I'd rather leave it, but make it more clear some other way. Do you think an additional sentence or two would do it? |
| Comment by Matt Ingenthron [ 16/Apr/13 ] |
| With recent website changes, it got worse so I just removed them. Also, we're now in PECL, with plans to fully be in PECL soon. |
[PCBC-129] getStats() causes memory leaks against a 2.0 beta Couchbase server Created: 01/Oct/12 Updated: 08/Oct/12 Resolved: 08/Oct/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0-dp5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Minor |
| Reporter: | Michael Jackson | Assignee: | Michael Jackson |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
2.0.0 community edition (build-1723)
php 5.3.15 built with --enable-debug, --enable-maintainer-zts and --enable-gcov |
||
| Flagged: |
Release Note
|
| Description |
|
The getStats functionality (both OO and regular function) causes memory leak errors to be displayed when operating against a 2.0 beta server.
[Mon Oct 1 18:09:46 2012] Script: '/home/orion/couchbase/php-ext-couchbase/tests/new/phpt/ServerStats/Stats.php' /home/orion/couchbase/php-ext-couchbase/couchbase.c(1310) : Freeing 0x094A5068 (20 bytes), script=/home/orion/couchbase/php-ext-couchbase/tests/new/phpt/ServerStats/Stats.php Last leak repeated 2 times [Mon Oct 1 18:09:46 2012] Script: '/home/orion/couchbase/php-ext-couchbase/tests/new/phpt/ServerStats/Stats.php' /home/orion/couchbase/php-ext-couchbase/couchbase.c(1311) : Freeing 0x094A5154 (10 bytes), script=/home/orion/couchbase/php-ext-couchbase/tests/new/phpt/ServerStats/Stats.php Last leak repeated 2 times === Total 6 memory leaks detected === (Memory locations and paths would, of course, vary from the above.) The couchbase.c lines being referenced are: 1310 MAKE_STD_ZVAL(val); 1311 ZVAL_STRINGL(val, (char *)bytes, nbytes, 1); within php_couchbase_stat_callback. This only seems to occur when operating against a 2.0 beta Couchbase server. It does not occur when operating against a 1.8 server. In discussion in #libcouchbase, it was mentioned that this might be due to something like the server returning a zero-length data value (in the bytes variable, which is from resp->v.v0.bytes of lcb_server_stat_resp_t* resp). Setting sev to minor at a guess, since the total memory leak here is on the order of 100 bytes for a few hundred stats values retrieved. I can't see that this would be severe unless a user was calling getStats() a huge number of times in a single script invocation; so it's probably mostly an annoyance. |
| Comments |
| Comment by Michael Jackson [ 04/Oct/12 ] |
| http://review.couchbase.org/21350 contains a fix for this issue. |
| Comment by Michael Jackson [ 08/Oct/12 ] |
| Changeset merged to master |
[PCBC-128] Multi-touch causes inconsistent zend hash error Created: 01/Oct/12 Updated: 08/Oct/12 Resolved: 08/Oct/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0-dp5 |
| Security Level: | Public |
| Type: | Bug | Priority: | Major |
| Reporter: | Michael Jackson | Assignee: | Michael Jackson |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The multiple-keys version of the touch operation (e.g. touchMulti() method of a Couchbase instance) causes an error to be reported about a hash being inconsistent, e.g. /home/orion/couchbase/php-5.3.15/Zend/zend_hash.c(520) : ht=0xaef9c24 is inconsistent
(paths and memory locations would vary). The current return value scheme for multi-touch is that a hash is made in the initial php_couchbase_touch_impl function that maps all given keys to false, and then in the php_couchbase_touch_callback function as each key is seen, its value is updated to true. When the hash update block is commented out, this error is not reproduced, so it seems there is some issue within that code that causes this to happen. Notably it happens both with the raw key value (as retrieved from the response) and with effort taken to make sure that the key is nul-terminated (as in some other callback functions). |
| Comments |
| Comment by Michael Jackson [ 04/Oct/12 ] |
| http://review.couchbase.org/#/c/21349/1 contains the fix for this |
| Comment by Michael Jackson [ 08/Oct/12 ] |
| merged to master |
[PCBC-127] Make negative expiry times be E_RECOVERABLE_ERROR instead of E_ERROR Created: 01/Oct/12 Updated: 08/Oct/12 Resolved: 08/Oct/12 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5 |
| Fix Version/s: | 1.1.0-dp5 |
| Security Level: | Public |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Michael Jackson | Assignee: | Michael Jackson |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
The error raised by negative expiry times should be E_RECOVERABLE_ERROR instead of E_ERROR, based on discussion in #libcouchbase. Operationally they have the same effect (fatal error), but the former can be caught by user-defined error handler functions. That is handy for example in testing.
Per discussion with Mark, this should be a child of http://review.couchbase.org/#/c/21236/ when the changeset is developed. (This is a one-line change in the _check_expiry function, changing the error code given to php_error.) |
| Comments |
| Comment by Michael Jackson [ 03/Oct/12 ] |
| http://review.couchbase.org/#/c/21236/ has been updated with change mentioned above. |
| Comment by Michael Jackson [ 03/Oct/12 ] |
|
After further discussion, this was rolled into |
| Comment by Michael Jackson [ 04/Oct/12 ] |
| http://review.couchbase.org/#/c/21320/1 has this change |
| Comment by Michael Jackson [ 08/Oct/12 ] |
| pcbc-51 changeset merged to master. (51 is tentatively still open because I'm not sure if that needs to also be backported to 1.0.x) |
[PCBC-126] Tests: Make view helper script in PHP Created: 28/Sep/12 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Couchbase PHP client library |
| Component/s: | library |
| Affects Version/s: | 1.1.0-dp5, 1.1.0 |
| Fix Version/s: | 1.1.3 |
| Security Level: | Public |
| Type: | Task | Priority: | Minor |
| Reporter: | Mark Nunberg | Assignee: | Mark Nunberg |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||