Skip to main content
July 19, 2023
Solved

Connector Rule - Object reference not set to an instance of an object

  • July 19, 2023
  • 3 replies
  • 1 view

Hi 

I always seem to get an "Object reference not set to an instance of an object" in the error log when I execute data loads that use connector rules.

The full error message is:

 

----------------------------------------
Exception Type: Unknown
Message: Object reference not set to an instance of an object.

Stack Trace:
at OneStream.Shared.Engine.XFTelemetryHelper.GetTaskActivityArgsInfo(SessionInfo si, TaskActivityArgs taskActivityArgs) in C:\agent\_work\411\s\Source\Shared\Engine\SharedEngineBase\UserActivity\XFTelemetryHelper.cs:line 55

 

The strange thing is that the data load is always successful... Does anyone know how to get rid of this error message?

Thanks,

Mark

 

 

Best answer by MarkBird

I tried a log write in the catch of my Main function and it didn't write anything, so I'll raise a support ticket.

Appreciate your efforts in trying to help me find the issue though!

Mark


Hey Rob

FYI, I reached out to support and they confirmed that it is a bug in the current version of OneStream that we are using (we're on 7.0.1).

"Hi Mark,

I believe this is a bug that has been fixed in version 7.4. It is caused by the Telemetry Service which provides us with logs. This error does not mean anything is breaking, it is just a false flag. Upgrading is the only way to get rid of this error but if possible, would come with extra benefits like access to Smart Integration Connector (SIC), our new connector service. OneStream is moving to Smart Integration Connector (SIC) for all future integrations and will be a requirement for 8.0 so would be good to have the option of slowly migrating.

Thanks, Max"

3 replies

July 19, 2023

Something your code references or returns is null.  That's what the error message means.  If you post the code you're running maybe we can help you find the bug.

 

MarkBirdAuthor
July 19, 2023

Hi Rob

I have tried the following two scripts:

api.Parser.ProcessSQLQuery(si, DbProviderType.OLEDB, connectionName, True , sSQL, False, api.ProcessInfo)
'Get data from source.
Using dbC As DbConnInfo = BRApi.Database.CreateExternalDbConnInfo(si, connectionName)
	dt = BRApi.Database.ExecuteSql(dbC, sSQL, True)
End Using

'Execute the data load
api.Parser.ProcessDataTable(si, dt, False, api.ProcessInfo)

Both work, but both seem to produce the same message in the error log (on a side note, do you know which is the best one to use from a performance point of view?)

 

July 19, 2023

This is a fragment, it leaves out most possibilities to help you.  The problem is likely somewhere in the declarations/assignments, or in your return.

July 19, 2023


RobbSalzmann_1-1689772763554.png

Are these declared as instance variables? (declared as part of the class declaration).  If so, consider preceding them with underscores for clarity.   


RobbSalzmann_3-1689773069089.png

 

 

 

 

MarkBirdAuthor
July 19, 2023

When I use that function, I get the following error:


MarkBird_0-1689773043987.png

Those are declared as constants

#Region "Constants and Enumerations"

		Dim connectionName As String = "OneStream BI Blend"		
		
		Dim columnNames As String() = {"Account", "AccountType", "Amount", "Credit", "Debit", "Department", "Entity", "Flow", "IC", "Location", "PLCategory", "SourceID", "UD1_ProfitCentre", "UD2_Category", "UD3_Projects", "UD4_DataAudit"}
		
		Dim columnNamesDrillBack As String() = {"Entity", "EntityDesc", "Period", "Account", "AccountDesc", "AccountType", "Debit", "Credit", "Amount", "Debit", "Credit", "Amount", "PLCategory", "Division", "Department", "DepartmentDesc", "Location", "LocationDesc", "PropertyLocation", "PropertyLocationDesc", "ProjectCode", "ProjectCodeDesc"}
		
		Dim accountTypePL As String() = {"COGS", "DeferExpense", "Expense", "Income", "OthExpense", "OthIncome"}
		Dim accountTypeBS As String() = {"AcctPay", "AcctRec", "Bank", "Equity", "FixedAsset", "OthAsset", "OthCurrAsset", "OthCurrLiab", "NonPosting"}
	
		Dim accountTypeSignFlip As String() = {"Income", "OthIncome", "AcctPay", "Equity", "OthCurrLiab"}
		
#End Region

 

MarkBirdAuthor
July 19, 2023

Changing it to the following worked though:

MonthName(wfMonth, True)

 

July 19, 2023

Subscript, "Array Index, all the same thing.

At this point, I would experiment with writing the values of the variables to the log in your Catch block.

This will require you to declare your variables before the try (you should do this anyway). 

I would also chain your exception throwing and only write to the log from Main.  This will give you more of a stacktrace to work with.  

MarkBirdAuthor
July 19, 2023

When you say chain your exception throwing, is that not what I'm doing here?

Catch ex As Exception
	Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
End Try

 

MarkBirdAuthor
July 19, 2023

I tried a log write in the catch of my Main function and it didn't write anything, so I'll raise a support ticket.

Appreciate your efforts in trying to help me find the issue though!

Mark