Skip to content

Commit

Permalink
Cast key to string in hashCode function for KeyedPartitioner (#870)
Browse files Browse the repository at this point in the history
  • Loading branch information
sonihimanshu authored and hyperlink committed Feb 16, 2018
1 parent 1cdb189 commit b56571f
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions lib/partitioner.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
var util = require('util');
var _ = require('lodash');

var Partitioner = function () {};
var Partitioner = function () { };

var DefaultPartitioner = function () {};
var DefaultPartitioner = function () { };
util.inherits(DefaultPartitioner, Partitioner);

DefaultPartitioner.prototype.getPartition = function (partitions) {
Expand All @@ -23,27 +23,29 @@ util.inherits(CyclicPartitioner, Partitioner);

CyclicPartitioner.prototype.getPartition = function (partitions) {
if (_.isEmpty(partitions)) return 0;
return partitions[ this.c++ % partitions.length ];
return partitions[this.c++ % partitions.length];
};

var RandomPartitioner = function () {};
var RandomPartitioner = function () { };
util.inherits(RandomPartitioner, Partitioner);

RandomPartitioner.prototype.getPartition = function (partitions) {
return partitions[Math.floor(Math.random() * partitions.length)];
};

var KeyedPartitioner = function () {};
var KeyedPartitioner = function () { };
util.inherits(KeyedPartitioner, Partitioner);

// Taken from oid package (Dan Bornstein)
// Copyright The Obvious Corporation.
KeyedPartitioner.prototype.hashCode = function (string) {
var hash = 0;
var length = string.length;
if (string) {
var length = string.toString().length;

for (var i = 0; i < length; i++) {
hash = ((hash * 31) + string.charCodeAt(i)) & 0x7fffffff;
for (var i = 0; i < length; i++) {
hash = ((hash * 31) + string.charCodeAt(i)) & 0x7fffffff;
}
}

return (hash === 0) ? 1 : hash;
Expand Down

0 comments on commit b56571f

Please sign in to comment.