Import - Unknown protocol c3fs

Hi,

I recently upgraded to a 7.9 docker image, I set the default FileSystem to c3fs and I am trying to import a file with curl and I get the following error:

<cause>
  <cause>
    <message>unknown protocol: c3fs</message>
  </cause>
  <message>Badly formed URI "c3fs://data-load/Canonical...".</message>
    </cause>
  <message>Unable to write to file: c3fs://data-load/Canonical...</message>

Any idea of a configuration I could have forgot?

Hi Quentin,

This is a know issue with the 7.9 docker containers. A ticket has been logged and prioritized.

To work around the issue you will need to do the following:

var fsc = FileSourceCollection.get("CanonicalSmartBulb");
fsc.archiveUrlOverride = "c3fs:///data_load/CanonicalSmartBulb/archive/";
fsc.inboxUrlOverride = "c3fs:///data_load/CanonicalSmartBulb/inbox/";
fsc.upsert();

You can curl the file using the following command:
curl -v -H "Content-Type: text/csv;" -X PUT --data-binary @SmartBulb.csv http://localhost:8080/file/1/lightbulb/prod/data_load/CanonicalSmartBulb/inbox/SmartBulb.csv -u u:p

1 Like

@scottk

Does this work-around only work for the file API? I tried to use it with import and got the following error:

curl -v -H "Content-Type: text/csv;" -X PUT --data-binary @SmartBulb.csv http://localhost:8080/import/1/lightbulb/prod/data_load/CanonicalSmartBulb/inbox/SmartBulb.csv -u u:p
.
<message>Invalid type data_load!</message>

@kasden Try this:
curl -v -H “Content-Type: text/csv;” -X PUT --data-binary @SmartBulb.csv http://localhost:8080/import/1/lightbulb/prod/CanonicalSmartBulb/SmartBulb.csv -u u:p

Unfortunately that gives me the same type of error shown at the top of this thread:

<message>Badly formed URI "c3fs://data-load/CanonicalSmartBulb/inbox/SmartBulb.csv".</message>

Even when you run it after doing this?
var fsc = FileSourceCollection.get(“CanonicalSmartBulb”);
fsc.archiveUrlOverride = “c3fs:///data_load/CanonicalSmartBulb/archive/”;
fsc.inboxUrlOverride = “c3fs:///data_load/CanonicalSmartBulb/inbox/”;
fsc.upsert();