177 Commits

Author SHA1 Message Date
michael-grunder
9c4de060e6 Fix rehashing memory leaks
The pattern to move a key for various types (strings, sets, zsets,
hashes, etc) used a simple pattern:

1.  Construct the call in order to get all of the keys from the source
2.  Make a pass through call to the source node to get a response
3.  Use the response to make a pass through call to the destination node

The issue, however, was that we were using the same return value variable
for both source and destination nodes, so we would leak the response from
the source node.

Conflicts:
	redis_array_impl.c
2015-05-05 15:13:39 -07:00
michael-grunder
887eff0a9a Fix memory leaks in RedisArray (backport from develop) 2015-05-05 15:13:39 -07:00
michael-grunder
f0f341e90d Remove unused variable 2015-01-30 11:08:07 -08:00
michael-grunder
6dcc950054 Fix rehashing memory leaks
The pattern to move a key for various types (strings, sets, zsets,
hashes, etc) used a simple pattern:

1.  Construct the call in order to get all of the keys from the source
2.  Make a pass through call to the source node to get a response
3.  Use the response to make a pass through call to the destination node

The issue, however, was that we were using the same return value variable
for both source and destination nodes, so we would leak the response from
the source node.
2015-01-29 15:57:17 -08:00
michael-grunder
f37574e959 Fix some simple leaks in RedisArray
* Make sure we always free our allocated key when extracting
* Don't copy z_fun and z_dist twice and only free one
* Free outer array for z_zadd_args
2015-01-29 15:17:18 -08:00
Michael Maclean
9f6edf8ada Iterate over hosts hash table in a safer way 2015-01-28 16:03:24 +00:00
Michael Maclean
a308b81068 Replace calls to zend_hash_quick_find with NULL arguments 2015-01-28 16:03:05 +00:00
michael-grunder
66cdeb6b59 Allow integer connect_timeout in RedisArray
Addresses #520
2014-10-20 12:20:57 -07:00
Anatol Belski
cdd4557f01 fix unreferenced variable warnings 2014-07-01 16:59:41 +02:00
Anatol Belski
4d2533706a Merge remote-tracking branch 'vostok4/master'
Conflicts:
	CREDITS
	README.markdown
	config.w32
	library.c
	library.h
	package.xml
	redis.c
	redis_array.c
	redis_array.h
	redis_array_impl.c
	redis_array_impl.h
	tests/TestRedis.php
2014-07-01 16:45:09 +02:00
Anatol Belski
6c377eee18 added redis array stuff to win part done some fixes to it 2014-07-01 12:19:01 +02:00
vostok4
9c12c40a66 Merge nicolasff:b9a16b5ad5 in, fixing for Win32
Now we should be up to master with upstream for an easier merge.
2014-04-09 11:14:45 +02:00
michael-grunder
c81a95413d Merge branch 'hotfix/ra_autorehash' into develop
Conflicts:
	redis_array.c
2014-03-11 09:14:26 -07:00
michael-grunder
f72a3177a3 Fix autorehashing in RedisArray
This commit fixes auto rehashing in RedisArray as well as fixes
a couple of memory leaks found along the way

Addresses #442 and #294
2014-03-10 13:18:19 -07:00
michael-grunder
6194d45dcc Merge branch 'hotfix/ra_type_check' into develop 2014-03-09 11:06:58 -07:00
michael-grunder
0bf1971951 Data type check on redis array host info
RedisArray will segfault if you pass something other than strings
into your array of hosts.  This is invalid input (needs strings here)
but it shouldn't crash php.
2014-03-09 11:05:45 -07:00
michael-grunder
893c15af67 Cleanup merge 2014-02-23 12:24:16 -08:00
Mike
e3403e9588 fix for parsing ini value from string (atol should have been atof) 2014-02-23 11:51:14 -08:00
Mike
6f5e47cec3 add support for 'connect_timeout' option for redis arrays
Conflicts:
	redis_array.c
	redis_array_impl.c
	redis_array_impl.h
2014-02-23 11:50:34 -08:00
Nicolas Van Eenaeme
0fd41c2aef Fixed ra->pconnect parameter in ra_make_array
This parameter was ignored and caused pconnect not to work
2013-11-13 11:46:38 -08:00
vostok4
978fbcf6fc Further fixes for building on VC9 Win32, C89 compliance
Include win32/php_stdint.h on Win32 (fixes compilation on VC9)
Change C++ comments to C89 style (to adhere to PHP project)
2013-10-18 14:37:06 +02:00
vostok4
b7e8b3b64e Fix compilation errors on Win32 with VC11
This brings the W32 compilation fixes done by @char101 up to date and
allows building of php_redis.dll with VC11 on Win32 (allows for a php5.5
version).
2013-10-10 13:07:01 +02:00
michael-grunder
eb0bbbafa0 Rollback the automatic resharding distributor
I accidentally pulled this when getting some of the pull requests
integrated (git flow style) for this release.  I like the idea
for sure, but I think it needs more detailed documentation and
further testing.

At the very least, I need to understand it :)
2013-08-31 19:20:34 -07:00
michael-grunder
f97c8433d5 Integrating mobli's lazy connect and retry interval 2013-08-11 11:31:23 -07:00
michael-grunder
8443769dc3 Merge remote-tracking branch 'mobli/develop' into feature/mobli_ra_changes
Conflicts:
	redis_array.c
	redis_array_impl.c
	redis_array_impl.h
2013-08-11 11:29:29 -07:00
michael-grunder
16185f2e37 Re-add UNIX socket support to RedisArray
Merging the logic from ra-performance branch into feature/ra-performance
2013-08-11 09:01:49 -07:00
michael-grunder
dcbeae7599 Persistent connections with RedisArray
Re-integrating the now old ra-performance branch into a git-flow
branch.  I could have merged it but this was easier with so few
changes
2013-08-11 08:54:59 -07:00
Emmanuel Merali
0ff393bdca Fix poor performance on initial use
Fix poor performance on initial use of easy reshard distributor
mechanism.
2013-07-22 05:29:35 +03:00
Emmanuel Merali
958e062800 Changed distributor to accepts strings
Changed distributor to accept strings as well as longs so that
definitions parsed from parse_ini_files may be used as is
2013-07-22 04:50:11 +03:00
Emmanuel Merali
2f795ed0b4 FIx C99 compliance
FIx C99 compliance
2013-05-26 01:25:27 +03:00
Emmanuel Merali
f4acf122ea Easy resharding distributor
An integrated distributor for easy resharding.
Works on the principle of redistributing keys from 1 shard to 2 shards
evenly.
2013-05-22 06:12:44 +03:00
michael-grunder
3e6d5b60d6 Cutting a release for 2.2.3. Added myself as a maintainer
in the header files
2013-04-28 11:09:58 -07:00
michael-grunder
11a1195d8e Merge branch 'hotfix/php5.2_warnings' into develop 2013-03-20 09:08:56 -07:00
michael-grunder
8596eac45e Use another NULL for zend_is_callable_ex
Given that PHP 5.2.X and PHP 5.3.X use a different signature
for zend_is_callable_ex, and we're not using the error return
(PHP 5.3.X) anyway, just pass in NULL.

Addresses issue #318
2013-03-20 09:00:57 -07:00
Emmanuel Merali
acd3245456 Added lazy_connect option to RedisArray
Added an option to let each RedisArray connection connect lazily to
their respective server. This is useful then working with a redis
cluster composed of many shards which are not necessarily in use all at
once.
2013-02-25 00:38:47 +02:00
Emmanuel Merali
6d3c9990a5 Merged changes from @mobli
New select DB command to RedisArray - Added retry delay on reconnect

Added the possibility to delay each reconnection attempt, including a
random factor to prevent several or many concurrent connections from
trying to reconnect at the same time.
Added the select command to RedisArray to select a DB on every
connections in one instruction.
Also, fixed a compiler warning:
redis_array_impl.c:1115:15: warning: incompatible pointer types
assigning to 'zval **' (aka 'struct _zval_struct **') from 'zval
**(*)[2]' [-Wincompatible-pointer-types]

Conflicts:
	common.h
2013-02-22 09:35:22 -08:00
Emmanuel Merali
d4c7f64131 New select DB command to RedisArray - Added retry delay on reconnect
Added the possibility to delay each reconnection attempt, including a
random factor to prevent several or many concurrent connections from
trying to reconnect at the same time.
Added the select command to RedisArray to select a DB on every
connections in one instruction.
Also, fixed a compiler warning:
redis_array_impl.c:1115:15: warning: incompatible pointer types
assigning to 'zval **' (aka 'struct _zval_struct **') from 'zval
**(*)[2]' [-Wincompatible-pointer-types]
2013-01-29 11:47:36 +02:00
Emmanuel Merali
9ba000c54c Revert "Retry delay - selectDB on array"
This reverts commit 3fb643211e.
2013-01-29 11:40:06 +02:00
Emmanuel Merali
3fb643211e Retry delay - selectDB on array
Added the possibility to delay each reconnection attempt, including a
random factor to prevent several or many concurrent connections from
trying to reconnect at the same time.
Added the select command to RedisArray to select a DB on every
connections in one instruction.
2013-01-21 18:10:16 +02:00
Nicolas Favre-Felix
6dc3ad6cb3 Fix RedisArray::_rehash to support closures
* Add "f" parameter in _rehash()
* Call object with new method
* Add rehash test with closure
2012-09-10 00:29:44 +01:00
Remi Collet
9319f637ef fix unused-variable warnings (2) 2012-08-29 16:43:19 +02:00
michael-grunder
8af15d7c8b Added EXISTS as a read-only command, which sorts issue #206 2012-06-23 09:08:47 -07:00
Nicolas Favre-Felix
32e8d4143c More fixes for PHP 5.4 2012-03-12 07:05:30 +00:00
Nicolas Favre-Felix
a5e53f1bbc Fixed compilation issues with Clang.
(GitHub issue #116).
2012-01-30 21:13:06 +00:00
Nicolas Favre-Felix
edf8aee8fd Fixed missing parameter in ZTS maintainer mode.
Fixes GitHub issue #128 (Thanks @sztanpet!)
2012-01-30 19:40:13 +00:00
Emmanuel Merali
07bb4d6a08 Performance improvements for expire on rehash
Improves the performance of rehashing either with auto-rehash or with
the _rehash method by pipelining the call to TYPE and TTL and using
SETEX instead of SET and EXPIRE for string keys.
2011-12-25 17:19:16 +02:00
Emmanuel Merali
c7f5eebad7 Added key expiry on rehash
Added a call to expire when migrating a key that has an TTL other than
-1
2011-12-22 17:37:26 +02:00
Nicolas Favre-Felix
31663d433f Make sure to avoid overflows on 32-bits. 2011-12-19 23:11:13 +00:00
Nicolas Favre-Felix
8f5783cb4c Reordered arguments to ra_index_multi(). 2011-12-11 22:15:58 +00:00
Emmanuel Merali
2f58629e0c External key distributor
Added possibility to specify a user land key distributor function.
2011-12-11 19:19:24 +02:00