watson-developer-cloud / node-sdk

:comet: Node.js library to access IBM Watson services.
https://www.npmjs.com/package/ibm-watson
Apache License 2.0
1.48k stars 670 forks source link

[Discovery] Long Natural Language Query request returns 400 code if repeated #507

Closed evenfrost closed 6 years ago

evenfrost commented 6 years ago

When making at least two sequential requests with natural_language_query of ~1080 characters, second request fails with 400 Bad Request error with no additional info.

Steps to reproduce

Here's a minimal code to reproduce (also uploaded as a Gist):

const DiscoveryV1 = require('watson-developer-cloud/discovery/v1');

const discovery = new DiscoveryV1({
  username: USERNAME,
  password: PASSWORD,
  version_date: '2017-09-01',
});

const query = callback => {
  discovery.query({
    environment_id: ENVIRONMENT_ID,
    collection_id: COLLECTION_ID,
    natural_language_query: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas porro omnis, ab atque explicabo soluta maxime odio officiis laudantium ut, vero vitae rerum asperiores fuga ipsum blanditiis doloribus dolorum nobis. Saepe exercitationem rem quis reiciendis fugit alias recusandae porro, necessitatibus sint facere eligendi quo error, vero eaque! Cum quaerat temporibus et laudantium animi, rerum mollitia sint. Necessitatibus odit doloribus obcaecati neque, nulla? Itaque a voluptatibus dolores nihil eos ipsum perferendis, deleniti animi ad soluta id voluptatum molestias quia! Molestiae temporibus quod illum corrupti sed odit, harum dolore facilis voluptates aperiam iusto ipsum dolorum non, ipsa praesentium. Voluptatem quisquam sunt officiis dicta nulla hic illo, fuga vero incidunt vitae nisi eligendi aliquid quis minus eos! Molestiae sed itaque, pariatur officia illo fuga quibusdam est, neque laborum enim magni minima libero nisi dolorem deleniti amet architecto! Temporibus voluptas ipsa dolor hic? Provident delectus reprehenderit iste placeat, ea itaque rem optio quo ex',
  }, (err, response) => {
    if (err) {
      return console.log('err', err);
    }

    console.log('response', response);

    if (callback) {
      callback();
    }
  });
};

query(() => {
  query();
});

The code above makes two sequential requests to Discovery with long natural_language_query (should be about 1080 characters).

Expected behavior

Both requests return 200 response with results.

Actual behavior

Second request fails with 400 Bad Request error.

Node version

v8.5.0

SDK version

v2.39.0

nfriedly commented 6 years ago

I believe this is was addressed by Phil Anderson on the Discovery team, and turned out to not be an SDK issue, so I'm going to close it. Please re-open if I'm mistaken.

Reference: https://wdc-community.slack.com/archives/C0A239C04/p1506613185000457

evenfrost commented 6 years ago

Thanks, definitely should've first got response from Discovery dev team before opening the issue.