Forum Discussion
MarkBird
2 years agoContributor III
Connector Rule - Object reference not set to an instance of an object
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: -------------...
- 2 years ago
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"
RobbSalzmann
2 years agoValued Contributor II
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.
MarkBird
2 years agoContributor III
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?)
- RobbSalzmann2 years agoValued Contributor II
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.
- MarkBird2 years agoContributor III
Hi Rob
Below is my main function:
Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Transformer, ByVal args As ConnectorArgs) As Object Try Select Case args.ActionType Case Is = ConnectorActionTypes.GetFieldList 'Return Field Name List if using Field List Method to get field list in GetFieldList Return Me.GetFieldList(si, globals, api, columnNames) Case Is = ConnectorActionTypes.GetData 'Get Data. Return Me.GetData(si, api) Case Is = ConnectorActionTypes.GetDrillBackTypes 'Return the list of Drill Types (Options) to present to the end user Return Me.GetDrillBackTypeList(si, globals, api, args) Case Is = ConnectorActionTypes.GetDrillBack 'Process the specific Drill-Back type Return Me.GetDrillBack(si, globals, api, args, connectionName, columnNamesDrillBack, accountTypePL, accountTypeBS, accountTypeSignFlip) End Select Return Nothing Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End FunctionAnd Below is the GetData function:
Private Function GetData(ByVal si As SessionInfo, ByVal api As Transformer) As DataTable Dim errorlog As String = "" Try 'Set variables. Dim wfTime As String = BRApi.Finance.Time.GetNameFromId(si, api.WorkflowUnitPk.TimeKey) Dim oTime As TimeMemberSubComponents = BRApi.Finance.Time.GetSubComponentsFromName(si, wfTime) Dim wfMonth As Integer = oTime.Month Dim wfMonthDesc As String = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}(wfMonth-1) Dim wfYear As Integer = oTime.year Dim dt As DataTable = Nothing 'Get assigned entities. Dim assignedEntitiesWF As List(Of WorkflowProfileEntityInfo) = BRApi.Workflow.Metadata.GetProfileEntities(si, api.WorkflowProfile.ProfileKey) Dim assignedEntities As String() = assignedEntitiesWF.Where(Function(m) m.EntityName.StartsWith("D_") = False).Select(Function(m) m.EntityName).ToArray() 'Get SQL query. Dim sSQL As String = Me.GetSQL(si, api, wfYear, wfMonth, wfMonthDesc, assignedEntities, accountTypePL, accountTypeBS, accountTypeSignFlip) '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) Return dt Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function
Related Content
- 9 months ago
- 2 months ago