We have an issue when calling HistoricalReference (1 ident per call, but mulit-threaded)
2017-11-19 14:51:36,708 ERROR
RetrieveRicFromHistoricalReference - Account: 0
xxx.CalculationEngine.Logic.RetrieveRicFromHistoricalReferenceJob - Cannot
retrieve RIC for 301768793
ThomsonReuters.Dss.Api.TransportException:
An error occurred while sending the request. --->
System.Net.Http.HttpRequestException: An error occurred while sending the
request. ---> System.Net.WebException: The server committed a protocol
violation. Section=ResponseStatusLineSection=ResponseStatusLine
any help appreciated
/// <summary>
/// Equities the search.
/// </summary>
/// <param name="transaction">The transaction.</param>
/// <param name="identifier">The identifier.</param>
/// <param name="identifierType">Type of the identifier.</param>
/// <param name="exchange">The exchange.</param>
/// <param name="date">The date.</param>
/// <returns>The searched rics with status</returns>
private RicsWithStatus EquitySearch(Transaction transaction, string identifier, IdentifierType identifierType, string exchange, DateTime date, ExtractionsContext context)
{
// Setup the request...
var extractionResult = context.ExtractWithNotes(
new HistoricalReferenceExtractionRequest
{
IdentifierList = new InstrumentIdentifierList()
{
InstrumentIdentifiers = new[] { new InstrumentIdentifier { Identifier = identifier, IdentifierType = identifierType } },
UseUserPreferencesForValidationOptions = false,
ValidationOptions = new InstrumentValidationOptions
{
AllowHistoricalInstruments = true,
AllowOpenAccessInstruments = true
}
},
Condition = new HistoricalReferenceCondition
{
StartDate = date.ToUniversalTime(),
EndDate = date.ToUniversalTime()
},
ContentFieldNames = new[]
{
"ISIN", "RIC", "Market MIC", "Currency Code", "Exchange Code"
}
});
var contents = extractionResult.Contents;
var withRic = contents
.Select(x => x.DynamicProperties)
.Where(x => x.ContainsKey("RIC"))
.Where(x => !string.IsNullOrEmpty(x["RIC"] as string));
if (contents.Count == 0)
{
BusinessExceptionManager.AddError(Functionality.RICRETRIEVE, SubFunctionality.HISTORICALREFERENCE, BusinessObjectType.TRANSACTION, BusinessExceptionType.NO_RIC, null, transaction.Id);
return new RicsWithStatus
{
Status = "NH"
};
}
else if (withRic.Count() == 0)
{
BusinessExceptionManager.AddError(Functionality.RICRETRIEVE, SubFunctionality.HISTORICALREFERENCE, BusinessObjectType.TRANSACTION, BusinessExceptionType.NO_RIC, null, transaction.Id);
return new RicsWithStatus
{
Status = "NT"
};
}
else
{
return CreateRicWithStatus(transaction.TradeCurrency, exchange, withRic);
}
}