Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

null data crashing #32

Open
samjosephmark opened this issue Jul 11, 2013 · 0 comments
Open

null data crashing #32

samjosephmark opened this issue Jul 11, 2013 · 0 comments

Comments

@samjosephmark
Copy link

I have just updated to 0.1.4 using npm, using Node 0.10.13 and having the issue with both Sphinx 2.0.4 and now 2.0.8. I had been happily using 0.1.3 with Node 0.8.15 and Sphinx 2.0.4.

On performing a query I get the correct result back, however I then get a null response back shortly after.

This is my code snippet using async

async.waterfall([
    function(callback) { // connect to sphinx
        limestone.connect(config.sphinx.host + ":" + config.sphinx.port, callback);
    },
    function(callback) { // perform query
        limestone.query({
            query: params.keywords
          , maxmatches: params.limit
          , indexes: 'test1'
          , mode: 4 // Extended
        }, callback);
    },
    function(answer, callback) { // disconnect and convert results for output
        limestone.disconnect();
        util.log("Extended search for '" + params.keywords + "' yielded " +
        (answer ? answer.match_count: 0) + " results: ");
        if (!answer || !answer.match_count) return callback(null, []);

        var personIds = [];
        util.log('answer length:' + answer.matches.length);
        for (i = 0; i < answer.matches.length; i++) {
            personIds.push(answer.matches[i].doc);
        }
        util.log('personIds:' + personIds);
        orm.model('Person').getMappedPeople({
            personIds: personIds
          , canInvite: params.canInvite
          , order: 'lastName, firstName '
        }, callback);
    }
], next);

I also added a logging line on limestone.js at line 560
console.log('data:' + data);
This is log output

data:[0,0,1,25,0,0,0,221,0,0,0,0,0,0,0,3,0,0,0,4,110,97,109,101,0,0,0,9,102,105,114,115,116,110,97,109,101,0,0,0,8,108,97,115,116,110,97,109,101,0,0,0,4,0,0,0,5,105,115,112,114,111,0,0,0,1,0,0,0,16,103,108,111,98,97,108,116,114,97,99,107,99,111,117,110,116,0,0,0,1,0,0,0,13,102,111,108,108,111,119,101,114,99,111,117,110,116,0,0,0,1,0,0,0,14,102,111,108,108,111,119,105,110,103,99,111,117,110,116,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,38,0,0,6,155,0,0,0,0,0,0,0,1,0,0,0,36,0,0,0,66,0,0,0,0,0,0,0,65,0,0,6,155,0,0,0,0,0,0,0,2,0,0,0,21,0,0,0,25,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,4,97,108,101,120,0,0,0,2,0,0,0,2]
11 Jul 05:27:41 - Extended search for 'alex' yielded 2 results:
11 Jul 05:27:41 - answer length:2
11 Jul 05:27:41 - personIds:38,65
data:null

At the end you can see the data:null line which then crashes Node with the following error

home/ubuntu/releases/20130711011458/node_modules/limestone/limestone.js:591
var new_buffer = new Buffer(this.data.length + data.length);
^
TypeError: Cannot read property 'length' of null
at Object.response_output.append (/home/ubuntu/releases/20130711011458/node_modules/limestone/limestone.js:591$
at Socket.readResponseData (/home/ubuntu/releases/20130711011458/node_modules/limestone/limestone.js:563:26)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at Socket.Readable.read (_stream_readable.js:266:5)
at Socket.onSocketEnd (net.js:258:10)
at Socket.EventEmitter.emit (events.js:92:17)
at TCP.onread (net.js:552:10)

I have patched this locally by returning from the readResponseData() function if data is found to be null. Not completely sure what the impact of this is though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant