Error mounting volumes when launching ADS

BAmos
BAmos Member

Hiya,

We have recently tried to update our ADS image to the latest version (2.14.1) and are now unable to start the container. We are getting the error "Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/home/administrant/docker-compose/ApertureDataStudio/server.properties" to rootfs at "/opt/ApertureDataStudio/server.properties": mount /home/administrant/docker-compose/ApertureDataStudio/server.properties:/opt/ApertureDataStudio/server.properties (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type"

I have looked at the source folder and the destination folder, in both cases server.properties is a file, and the experian user is the owner with rw permissions.

We have tried removing these files from the system and replacing them using the setup.sh file but this has not affected the issue.

Please can you advise on the possible causes of this error and how we can resolve it.

Answers

  • Tanj Jagpal
    Tanj Jagpal Administrator
  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hi @BAmos, sorry to hear the upgrade is not going well. Hopefully get can get this sorted out quickly.

    Typically this is caused when you create the container with a mapped file missing from the host - docker will create a directory in the container which remains until the container is removed, and causes the issue observed if the file is then created in the host.

    If this sounds like it could be the case, please remove the container and recreate it.

    Let me know how you get on.

    Regards,

    Ian

  • BAmos
    BAmos Member

    Hi Ian,

    Thank you very much for your help. I've removed the container and recreated it and the services are now all starting up and running. When trying to log in though it looks like all of our passwords have reset (including Administrator). I'm trying to follow the process for resetting this outlined here: https://docs.experianaperture.io/data-quality/aperture-data-studio-v2/monitor-data-and-troubleshoot/troubleshoot/#reset-administrator-password but am encountering the following error on this command.

    Command: experian@95ecd0a29594:~$ java -jar servicerunner-2.14.1.jar STARTUP RESETADMINPASSWORD
    Error: 15:41:43.768 [main] FATAL com.experian.datastudio.common.exceptions.KillSwitch - A fatal error occurred and the system has been terminated: FAILED_TO_START - 109
    Full log preceding the error is in the attached.

    I'll keep trying to figure this out but please let me know if you have any guidance for this process.

    Many thanks,

    Ben

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hi Ben, upgrading will not reset any passwords. In my experience, this is usually caused when the repository is mapped incorrectly so it has created a new repo with the default password.

    It appears that you have two very similar locations on your host machine. My guess is you're pointing to the wrong one. Can you check the mappings are correct and they are pointing to the location used previously?

    Thanks,

    Ian

  • BAmos
    BAmos Member

    Hi Ian, are these the mapping for the volumes in the .yml file?

    If not please can you let me know what the mappings are and where to find them please?

    Thanks,

    Ben

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hi Ben, yes the mappings are those defined in the .yml file.

    Regards,

    Ian

  • BAmos
    BAmos Member

    Hi Ian,

    Here's the yml file that I believe is launching the application. There is also another below which I believe we made as a back up before running the update which is also below. As far as I can tell these are all mapping the same way. Is there anything in here that looks different to you?

    As a note, our engineer who originally set up our instillation has moved on and I'm running this for the first time so there may be some obvious things that I am missing.

    Current:

    Backup:

    Many thanks,

    Ben

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hi Ben,

    Ah ok. The most important file in the mapped directory structure is the repository.db file. This lives in the data/repository folder.

    Perhaps you could look in both locations to see if these files are different, and if so, use the mappings for the latest/biggest one.

    Regards,

    Ian

  • BAmos
    BAmos Member

    Hi Ian,

    I've had a look at the repository folder in both locations, here's a screen shot of it:

    From what I can tell it is only the "repository.db" file that's important here, the others being our backups that we make before updates.

    I had a look in the .yml file and couldn't see any lines that map these files. Is that instruction held elsewhere to check?

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hiya, the other files are important (minus the pre-upgrade ones which are kept just in case of problems during upgrade - so worth keeping for now). They are mapped into the container via the parent /ApertureDataStudio directory.

    The /home/administrant directory you were mapping to appears to contain much smaller files (I would guess they are new 'empty' ones), whereas the other directory (in /opt) is much more healthy looking and appears a better candidate, so probably best to repoint all your mounted files/volumes to here instead.

    Regards,

    Ian

  • BAmos
    BAmos Member

    Hi Ian,

    I've tried copying the repository.db file from the op/ location into the docker-compose/ location and have restarted the container. It's launching the applications still, but now I can't access the web UI (although the find duplicates workbench is still accessible). I've looked at the datastudio.log file and the ERROR lines are:


    "2024-06-07 16:02:00,912 ERROR c.e.d.s.ServiceRunner [Thread-0] Catching
    java.lang.NullPointerException: Cannot invoke "com.experian.datastudio.licensing.LicenseChecker.shutdown()" because "this.licenseChecker" is null
    at com.experian.datastudio.servicerunner.subsystem.EventManagementSubsystem.shutdown(EventManagementSubsystem.java:199) ~[servicerunner-2.14.1.jar:2.14.1.169-478903]
    at com.experian.datastudio.servicerunner.ServiceRunner$ShutdownHook.stopEverything(ServiceRunner.java:686) ~[servicerunner-2.14.1.jar:2.14.1.169-478903]
    at com.experian.datastudio.servicerunner.ServiceRunner$ShutdownHook.run(ServiceRunner.java:667) ~[servicerunner-2.14.1.jar:2.14.1.169-478903]
    2024-06-07 16:02:00,912 FATAL c.e.d.s.ServiceRunner [Thread-0] Fatal error encountered: Cannot invoke "com.experian.datastudio.licensing.LicenseChecker.shutdown()" because "this.licenseChecker" is null"

    and

    "2024-06-07 16:03:41,483 ERROR c.e.d.d.ExternalDirectoryWatcher [ExternalDirectoryWatcher-fba4ed90-d4c8-401c-8c54-0a3716f4b801 2089123471] Error fetching file for external system: crdaaperturedatastudio (AZURE) [Environment=Production] [externalSystemUuid=fba4ed90-d4c8-401c-8c54-0a3716f4b801]
    java.io.IOException: java.lang.IllegalArgumentException: Invalid connection string.
    at com.experian.datastudio.common.utility.IOUtils.toIOException(IOUtils.java:25) ~[common-2.14.1.jar:?]
    at com.experian.datastudio.datasource.connection.cloudssystem.AzureConnection.createStorageAccount(AzureConnection.java:290) ~[datasource-0.1.0.jar:?]
    at com.experian.datastudio.datasource.connection.cloudssystem.AzureConnection.getStorageAccount(AzureConnection.java:69) ~[datasource-0.1.0.jar:?]
    at com.experian.datastudio.datasource.connection.cloudssystem.AzureConnection.getClient(AzureConnection.java:318) ~[datasource-0.1.0.jar:?]
    at com.experian.datastudio.datasource.connection.cloudssystem.AzureConnection.getSystemSources(AzureConnection.java:195) ~[datasource-0.1.0.jar:?]
    at com.experian.datastudio.datasource.ExternalDirectoryWatcher.fetch(ExternalDirectoryWatcher.java:157) ~[pserver-2.14.1.jar:?]
    at com.experian.datastudio.datasource.ExternalDirectoryWatcher.poll(ExternalDirectoryWatcher.java:143) ~[pserver-2.14.1.jar:?]
    at com.experian.datastudio.datasource.ExternalDirectoryWatcher.runImpl(ExternalDirectoryWatcher.java:112) ~[pserver-2.14.1.jar:?]
    at com.experian.datastudio.common.metrics.MonitoredThread.run0(MonitoredThread.java:56) ~[common-2.14.1.jar:?]
    at com.experian.datastudio.common.metrics.MonitoredThread.run(MonitoredThread.java:40) ~[common-2.14.1.jar:?]
    Caused by: java.lang.IllegalArgumentException: Invalid connection string.
    at com.microsoft.azure.storage.CloudStorageAccount.parse(CloudStorageAccount.java:275) ~[azure-storage-8.6.0.jar:?]
    at com.experian.datastudio.datasource.connection.cloudssystem.AzureConnection.createStorageAccount(AzureConnection.java:288) ~[datasource-0.1.0.jar:?]
    ... 8 more"
    Note, this last one repeats multiple times.

    I'm assuming that the first one is the route cause of this issue, and will be to do with file mapping still.
    What would you suggest to do next?

    Many thanks, and hope you have a great weekend.
    Ben

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    Hi @BAmos, my feeling is that the /opt location is the correct location to be mapping your docker volumes to, rather than copying individual files into the partial/new repository in the …/docker-compose directory.

    The first error is to do with the license - not sure what the problem is there, but the license file is probably missing from the mapped volumes. The second error is because the external connection's keys are unable to be decrypted as the required files are not present in that directory.

    The /opt files are the good ones by the looks of it. The ones in …/docker-compose are not.

    If I were you, I'd just change the mappings in the docker-compose.yml to /opt and see if it all starts properly.

    Regards and have a great weekend too,

    Ian

  • BAmos
    BAmos Member

    Thanks Ian, really appreciate your help on this. Will let you know how it goes.

  • BAmos
    BAmos Member

    No luck unfortunately, this is how I I've rewritten the .yml file for reference. I'll pick this all back up again on Monday morning.

  • Ian Hayden
    Ian Hayden Experian Super Contributor

    @BAmos Hi Ben, it would probably be quicker to resolve this in a call. Could you email me directly at ian.hayden@experian.com and we can set something up for later today.

    Regards,

    Ian