Maciej Jakubczyk
Maciej Jakubczyk

Reputation: 137

Timeout during indexing view in Azure Search despite settings

I'm using Azure Search Indexer to index a view from Azure SQL DB.

I've created Data Source (view) and set such settings in connection string (...)Trusted_Connection=False;Encrypt=True;Connection Timeout=1200;" },

The indexer still returns timeouts and I see from Azure SQL DB logs, that Indexer's query gets cancelled after 30 seconds:

The same statement takes ~2 minutes when run through SQL Server Mgmt Studio and gets completed.

I wonder if there may be any other settings (server or DB) that overwrite my connection timeout preferences? If yes, then why there is no timeout when I query my DB using SSMS and there is timeout when Indexer tries to index the view?

Upvotes: 4

Views: 4706

Answers (4)

Bjart Berge
Bjart Berge

Reputation: 1

Timeout can be changed if you select "Indexer Definition (JSON)" and insert "queryTimeout": "hh:mm:ss" in the configuration attribute.

The value must be on the hh:mm:ss format and less than 24 hours.
The default is 5 minutes. For 10 minutes use:

"configuration": {
      "queryTimeout": "00:10:00"
    }

Upvotes: 0

Markus
Markus

Reputation: 4149

Now there is a setting on the indexer. With it you can configure the queryTimeout. I think it is in minutes. My indexer runs now longer then 20 minutes without error.

    "startTime": "2016-01-01T00:00:00Z"
  },
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "base64EncodeKeys": false,
    "configuration": {
      "queryTimeout": "360"
    }
  },
  "fieldMappings": [
    {

Update: At the moment it can not be set over the azure portal. You can set it via the REST Api:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=[api-version]  
Content-Type: application/json  
api-key: [admin key]  

Upvotes: 2

Diceyus
Diceyus

Reputation: 779

Use the REST API link https://[SERVICE].search.windows.net/indexers/[Indexer]?api-version=2016-09-01 to get the Indexer definition and then use a POST to the same address to update it.

Ref MSDN

Upvotes: 0

Bruce Johnston
Bruce Johnston

Reputation: 8634

The timeout that cancels the operation is the command timeout, not the connection timeout. The default command timeout used to be 30 seconds, and currently there is no way to change it. We have increased the default command timeout to a much larger value (5 minutes) to mitigate this in the short term. Longer term, we will add the ability to specify a command timeout in the data source definition.

Upvotes: 4

Related Questions