Roundtrip: Development and Troubleshooting Tips

  • Use single thread processing when debugging parallel enabled roundtrip processes – this will allow you to set breakpoints in prolog, metadata, data or epilog tabs. Due to nature of how child threads are run you will not be able to debug any of the child threads as they run in their own session that is not available to Arc.

  • You may specify pLogOutput = 2 should you need to debug placement of elements to processing threads. When set, the server system logs will contain detailed information about elements in parallel dimension that have been assigned to each individual thread – this applies for both source and target dimensions.

  • Be careful to avoid thread competition for shared resources when implementing parallel enabled roundtrip processes, avoid using globally shared resources like files or subsets, avoid modifying metadata from child threads. You may use Arc debugger to list any shared objects that potentially could lead to thread contention.

  • We recommend checking Sessions in Arc in cases when testing newly developed parallel enabled process to make sure there are no locking issues between threads. Sessions gives you a great overview of how many threads are currently active and if there are any locking issues and lets you kill threads in case of thread contention.
    Please note: When contention occurs (usually IX type locks) the threads will attempt to rollback themselves, which in turn will result in endless loop of rollback and thread initialization events. You will need to manually kill all threads using Sessions to avoid further server issues.

  • If you need to load data from external data source that is in calendar time, you will need to provide mapping between calendar and fiscal time in your custom process. Easiest way is to define your mapping as non-conflicting alias in the time dimension you are using in the source or in the target T Year-Month dimension (depending on data granularity).