Skip to main content

Failure in mounting DSMCC Carousel due to DII update

2 replies [Last post]
abysubin
Offline
Joined: 2011-07-31

Hi,

Sometimes, I'm unable to mount the DSMCC Object Carousel.

Mounting of Object carousel is done using the 'attach()' call of ServiceDomain. During this operation, we are trying to load the DDBs which are present in the Module. But this operation fails with a message - 'Unable to load DDB 0 from invalid module 0001'.

On analysing the source code and logs, it is seen that while fetching/prefetching DDBs of module 0001 is in progress, a DII update has come up. On this DII, a new version of module 0001 is present (Original version was 231, and new version is 232). On procesing this DII update, the module with version 231 has been made as invalid and all the pending prefetch requests are cancelled. This cancellation in turn triggers for retry of the DDB readings from the beginning. But, while doing so, it sees that the module has become invalid and hence the loading is failed, which ultimately results in failure in attaching (mounting).

The logs are attached here with(DSMCC_ForumLog.txt). The fetching of DDB[0] can be seen in line number 733 of teh log, DII update coming up in line 912 , cancellation of prefetch requests in line 959 and the failure to read DDB during retry in line 1069.

After going through the code and logs, i feel like this is working as expected. Please confirm whether this is the intended behavior itself. Also, if so, how can a client application handle this situation of DII update coming up while the mounting (fetching/prefetching of DDBs in module) is in progress ?

AttachmentSize
DSMCC_ForumLog.txt156.5 KB

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
pmodem
Offline
Joined: 2008-12-17

RI is working as expected. This is one of those corner cases and is representative of a larger problem. In general, if the DII updates while walking a path, you can get incorrect information. For instance, a directory could say that the object representing the next path component is in one location, but if the object has moved in the new DII, it wouldn't be found. There's no retry, and no locking of the carousel. In this case, the object being searched for, namely the "/" directory, hasn't been fetched, and never is found due to timeout. Its not a trivial amount of work to implement a solution in the stack. But one thing the app could do is to re-attempt the mount.

pmodem
Offline
Joined: 2008-12-17

We are analyzing the log you provided. Will get back to you soon.