From acbd29948a66c908350418968f1042e8845a3e51 Mon Sep 17 00:00:00 2001 From: Sean Date: Fri, 11 Apr 2025 00:41:53 -0400 Subject: [PATCH] Fix event handling for CompanyProfile --- MarketData/MarketData/Services/MainService.cs | 13 +++++++++++-- .../MarketDataLib/DataAccess/ETFHoldingsDA.cs | 3 ++- .../Helper/CompanyProfileMarketDataHelper.cs | 17 ++++++++++++----- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/MarketData/MarketData/Services/MainService.cs b/MarketData/MarketData/Services/MainService.cs index 89997f0..6637012 100755 --- a/MarketData/MarketData/Services/MainService.cs +++ b/MarketData/MarketData/Services/MainService.cs @@ -30,6 +30,7 @@ namespace MarketData.Services MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEANALYSTRATINGS"); MDTrace.WriteLine(LogLevel.DEBUG,"UPDATESECFILINGSWATCHLIST /WATCHLIST:"); MDTrace.WriteLine(LogLevel.DEBUG,"UPDATECOMPANYPROFILES"); + MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEGDPPERCAPITA"); MDTrace.WriteLine(LogLevel.DEBUG,"ECHO {param1} {param2} {param(n)"); MDTrace.WriteLine(LogLevel.DEBUG,"MGSHSESSION /SESSIONFILE:"); MDTrace.WriteLine(LogLevel.DEBUG,"MGSHRUNBACKTEST /USEHEDGING: /HEDGEINITIALCASH: /USESTOPLIMITS: /KEEPSLOTPOSITIONS: /STARTDATE: /MAXPOSITIONS: /INITIALCASH: /HOLDINGPERIOD: /{ENDDATE}: /SESSIONFILE: "); @@ -57,6 +58,7 @@ namespace MarketData.Services tasks.Add("UPDATEANALYSTRATINGS",TaskUpdateAnalystRatings); tasks.Add("UPDATESECFILINGSWATCHLIST",TaskUpdateSECFilingsWatchList); tasks.Add("UPDATECOMPANYPROFILES",TaskUpdateCompanyProfiles); + tasks.Add("UPDATEGDPPERCAPITA",TaskUpdateGDPPerCapita); tasks.Add("MGSHSESSION",TaskMGSHSession); tasks.Add("MGSHRUNBACKTEST",TaskMGSHRunBacktest); tasks.Add("MGSHRUNDAILY",TaskMGSHRunDaily); @@ -117,6 +119,13 @@ namespace MarketData.Services // ********************************************************************************************************************************************************** // ********************************************************* T A S K S ************************************************************************************* // ********************************************************************************************************************************************************** + + public async Task TaskUpdateGDPPerCapita(CommandArgs commandArgs) + { + LoadGDPPerCapita(); + await Task.FromResult(true); + } + public async Task TaskUpdateCompanyProfiles(CommandArgs commandArgs) { UpdateCompanyProfiles(); @@ -128,8 +137,8 @@ namespace MarketData.Services if(!commandArgs.Has("WATCHLIST")){Console.WriteLine("UPDATESECFILINGSWATCHLIST REQUIRES WATCHLIST");return;} String watchListName = commandArgs.Coalesce("WATCHLIST"); List symbols = WatchListDA.GetWatchList(watchListName); - SECFilingMarketDataHelper secFilingMarketDataHelper=new SECFilingMarketDataHelper(); - secFilingMarketDataHelper.UpdateSECFilings(symbols); + SECFilingMarketDataHelper secFilingMarketDataHelper=new SECFilingMarketDataHelper(); + secFilingMarketDataHelper.UpdateSECFilings(symbols); await Task.FromResult(true); } diff --git a/MarketData/MarketDataLib/DataAccess/ETFHoldingsDA.cs b/MarketData/MarketDataLib/DataAccess/ETFHoldingsDA.cs index e7ab2c7..eff190c 100755 --- a/MarketData/MarketDataLib/DataAccess/ETFHoldingsDA.cs +++ b/MarketData/MarketDataLib/DataAccess/ETFHoldingsDA.cs @@ -145,7 +145,8 @@ namespace MarketData.DataAccess } catch (Exception exception) { - MDTrace.WriteLine(LogLevel.DEBUG,exception); + MDTrace.WriteLine(LogLevel.DEBUG,$"Exception: {exception.ToString()}"); + if(null!=strQuery)MDTrace.WriteLine(LogLevel.DEBUG,$"Query was {strQuery}"); return false; } finally diff --git a/MarketData/MarketDataLib/Helper/CompanyProfileMarketDataHelper.cs b/MarketData/MarketDataLib/Helper/CompanyProfileMarketDataHelper.cs index 811daf7..178b79f 100755 --- a/MarketData/MarketDataLib/Helper/CompanyProfileMarketDataHelper.cs +++ b/MarketData/MarketDataLib/Helper/CompanyProfileMarketDataHelper.cs @@ -56,6 +56,7 @@ namespace MarketData.Helper { ManualResetEvent[] availableEvents=GetAvailableEvents(resetEvents); ManualResetEvent[] busyEvents=GetBusyEvents(resetEvents); + MDTrace.WriteLine(LogLevel.DEBUG,$"Available:{availableEvents.Length} Busy:{busyEvents.Length}"); if (null == PeekQueueItem() && 0==busyEvents.Length) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Queue contains {0} items, busy events {1}, all done.",0,busyEvents.Length)); @@ -67,7 +68,7 @@ namespace MarketData.Helper if (null != queueItem) { availableEvents[index].Reset(); - CompanyProfileThreadHelper companyProfileThreadHelper = new CompanyProfileThreadHelper(queueItem,resetEvents[index]); + CompanyProfileThreadHelper companyProfileThreadHelper = new CompanyProfileThreadHelper(queueItem,availableEvents[index]); ThreadPool.QueueUserWorkItem(ThreadPoolCallback, companyProfileThreadHelper); try { Thread.Sleep(SLEEP_TIME_MS); }catch (Exception) { ;} } @@ -99,10 +100,16 @@ namespace MarketData.Helper public void ThreadPoolCallback(Object companyProfileThreadHelperContext) { CompanyProfileThreadHelper companyProfileThreadHelper = (CompanyProfileThreadHelper)companyProfileThreadHelperContext; - MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[UpdateCompanyProfile] Thread {0} started for {1}...", Thread.CurrentThread.ManagedThreadId, companyProfileThreadHelper.CompanyProfile.Symbol)); - LoadCompanyProfileEx(companyProfileThreadHelper.CompanyProfile); - MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[UpdateCompanyProfile] Thread {0} ended for {1}", Thread.CurrentThread.ManagedThreadId, companyProfileThreadHelper.CompanyProfile.Symbol)); - companyProfileThreadHelper.ResetEvent.Set(); + try + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[UpdateCompanyProfile] Thread {0} started for {1}...", Thread.CurrentThread.ManagedThreadId, companyProfileThreadHelper.CompanyProfile.Symbol)); + LoadCompanyProfileEx(companyProfileThreadHelper.CompanyProfile); + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[UpdateCompanyProfile] Thread {0} ended for {1}", Thread.CurrentThread.ManagedThreadId, companyProfileThreadHelper.CompanyProfile.Symbol)); + } + finally + { + companyProfileThreadHelper.ResetEvent.Set(); + } } private static void LoadCompanyProfileEx(CompanyProfile companyProfile)