Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: DEPRECATED Action signature #79

Closed
pyvotal-cguers opened this issue May 15, 2016 · 16 comments
Closed

Error: DEPRECATED Action signature #79

pyvotal-cguers opened this issue May 15, 2016 · 16 comments

Comments

@pyvotal-cguers
Copy link

I am trying to setup goofys in a docker container along with a Python app that will call goofys to mount an S3 bucket. However, I keep on getting an error which I cannot fix.

For testing, I am calling goofys from the command line and I am getting the following error (to make sure it works before calling it from the Python app).

# goofys my_bucket /mnt/s3
ERROR unknown Action error: Unable to connect to local syslog daemon. See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

However, when I install syslog-ng and run it again, I get

# goofys my_bucket /mnt/s3
DEPRECATED Action signature.  Must be `cli.ActionFunc`.  This is an error in the application.  Please contact the distributor of this application if this is not you.  See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

I've tried this using the following as a base images, all with similar results:

  • golang:1.6.2-alpine (golfing on alpine)
  • Python 2.7.11
  • Ubuntu 14.04

Any thoughts or suggestions?

@pyvotal-cguers
Copy link
Author

Given this error says "This is an error in the application... Please contact the distributor of this application" I am mentioning @kahing

@lkuza2
Copy link

lkuza2 commented May 15, 2016

I believe this breaks the "-o" as well. Really need this fixed please :)

@kahing
Copy link
Owner

kahing commented May 17, 2016

could you provide a test case (either a Dockerfile or a goofys command) that exhibits this problem?

@pyvotal-cguers
Copy link
Author

@kahing Here is a Dockerfile using Ubuntu 14.04 as a starting image

FROM ubuntu:14.04

# installing Python too, for my app that will work with S3 bucket mounted with goofys
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y python python-dev python-pip gcc musl-dev git libffi-dev libssl-dev curl
RUN pip install pyopenssl boto3

# Go language & Goofys
RUN curl -O https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
RUN tar -xvf go1.6.linux-amd64.tar.gz
RUN mv go /usr/local
ENV PATH $PATH:/usr/local/go/bin:/root/.go/bin
RUN mkdir -p /root/.go
ENV GOPATH /root/.go/
ENV GOROOT /usr/local/go
RUN go get github.com/kahing/goofys
RUN go install github.com/kahing/goofys

# copy credentials & ensure mount folder is there
RUN mkdir -p /root/.aws /mnt/s3
COPY creds/aws.credentials /root/.aws/credentials
RUN chmod 700 /root/.aws

# create script to start syslog (required by goofys)
RUN echo "service rsyslog start" > /root/rungoofys.sh
RUN echo "goofys my-bucket /mnt/sr" >> /root/rungoofys.sh
RUN chmod +x /root/rungoofys.sh

ENTRYPOINT ["sh"]
CMD ["/root/rungoofys.sh"]

# docker build -t ubuntu-goofys .
# docker run --rm ubuntu-goofys
# Returns:
# DEPRECATED Action signature.  Must be `cli.ActionFunc`.  This is an error in the application.  Please contact the distributor of this application if this is not you.  See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

@pyvotal-cguers
Copy link
Author

@kahing Here is another Dockerfile using golang+alpine as a starting point. In this case, the error is a bit different, but I still cannot get it to work.

FROM golang:1.6.2-alpine

# installing Python too, for my app that will work with S3 bucket mounted with goofys
RUN apk update && apk add python-dev libffi-dev openssl-dev py-pip gcc ca-certificates openssl musl-dev git fuse
RUN pip install --upgrade pip
RUN pip install PyOpenSSL boto3

# Goofys
RUN go get github.com/kahing/goofys
RUN go install github.com/kahing/goofys

# add syslog-ng (syslog required by Goofys)
RUN apk add syslog-ng
RUN echo "@version: 3.7" > /etc/syslog-ng/syslog-ng.conf
RUN echo "source s_local {internal();network(transport("udp"));unix-dgram("/dev/log");};" >> /etc/syslog-ng/syslog-ng.conf
RUN echo "destination d_local {file("/var/log/messages");};" >> /etc/syslog-ng/syslog-ng.conf
RUN echo "log {source(s_local);destination(d_local);};" >> /etc/syslog-ng/syslog-ng.conf

# copy credentials & ensure mount folder is there
RUN mkdir -p /root/.aws /mnt/s3
COPY creds/aws.credentials /root/.aws/credentials
RUN chmod 700 /root/.aws

# create script to start syslog (required by goofys)
RUN echo "syslog-ng" > /root/rungoofys.sh
RUN echo "goofys my-bucket /mnt/s3" >> /root/rungoofys.sh
RUN chmod +x /root/rungoofys.sh

ENTRYPOINT ["sh"]
CMD ["/root/rungoofys.sh"]

# docker build -t alpine-go-goofys .
# docker run --rm alpine-go-goofys
# Returns:
# [2016-05-17T14:03:36.794580] Error opening control socket, bind() failed; socket='/run/syslog-ng.ctl', error='Address in use (98)'
# DEPRECATED Action signature.  Must be `cli.ActionFunc`.  This is an error in the application.  Please contact the distributor of this application if this is not you.  See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

@flashmaestro
Copy link

I got same message!
command : goofys -o allow_others wishtrend /var/www/html/img
message : DEPRECATED Action signature. Must be cli.ActionFunc. This is an error in the application. Please contact the distributor of this application if this is not you. See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

after that mounted s3 bucket.
But, I can't access with web browser...
I think there is no effect -o allow_other flag...

Please fix it...

@lkuza2
Copy link

lkuza2 commented May 18, 2016

I just tested and found that "-o allow_other" does work as expected. The error might purely be informational. Also, completely off topic, i added this project as a package for Arch Linux in the AUR https://aur.archlinux.org/packages/goofys/

@flashmaestro what do you mean by you can't access with web browser?

@flashmaestro
Copy link

@lkuza2
I use s3 bucket mounted on ec2 instance.
And ec2 instance is web server.
If -o allow_other doesn work, User can not see images in s3 bucket with web browser screen...
I think -o allow_other option doesn't work... at my instance...
If I use command with -o allow_other, then there is no mount position.

How to I fix this issue?

@kahing
Copy link
Owner

kahing commented May 18, 2016

Looks like DEPRECATED Action signature. Must becli.ActionFunc. This is an error in the application. Please contact the distributor of this application if this is not you. See https://github.com/codegangsta/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature happens because that package updated its API but goofys is not updated to reflect that. Go's package management sucks so I've been building with an older version of codegangsta/cli so I wasn't aware.

That said, like @lkuza2 suggests that's just a warning message and should not affect goofys' functionality, and I just verified that -o allow_other does work for me.

$ sudo ./goofys -f -o allow_other landsat-pds /tmp/mnt
2016/05/17 22:50:54.913074 main.INFO File system has been successfully mounted.
$ ls /tmp/mnt
index.html  L8  landsat-pds_stats  robots.txt  run_info.json  runs  scene_list.gz  tarq  tarq_corrupt  test
$ sudo ./goofys -f landsat-pds /tmp/mnt
2016/05/17 22:51:30.944398 main.INFO File system has been successfully mounted.
$ ls /tmp/mnt
ls: cannot access /tmp/mnt: Permission denied

@kahing kahing closed this as completed in f1e084f May 18, 2016
@kahing
Copy link
Owner

kahing commented May 18, 2016

@pyvotal-cguers are you sure syslog in your docker image is functional? I got rid of the warning message, feel free to reopen this if it's still a problem.

@flashmaestro please provide a sequence of commands to reproduce your issue. If users cannot see your images through the web browser, it could be a http server configuration issue and not goofys.

@lkuza2
Copy link

lkuza2 commented May 18, 2016

I can confirm the "warning" issue is fixed and -o allow_other works as expected,


[x@xxxxxxxxx ~]$ sudo mkdir /opt/tmp

[x@xxxxxxxxxx ~]$ sudo goofys -o allow_other standard-cloud /opt/tmp/

[x@x ~]$ cd /opt/tmp/

[x@x tmp]$ ls

seafs3ql_data_10  seafs3ql_data_7           seafs3ql_passphrase_bak2
seafs3ql_data_11  seafs3ql_metadata         seafs3ql_passphrase_bak3
seafs3ql_data_12  seafs3ql_metadata_bak_0   seafs3ql_seq_no_1
seafs3ql_data_2   seafs3ql_metadata_new     seafs3ql_seq_no_2
seafs3ql_data_5   seafs3ql_passphrase       seafs3ql_seq_no_3
seafs3ql_data_6   seafs3ql_passphrase_bak1

[x@x tmp]$ cd ~

[x@x ~]$ sudo fusermount -u /opt/tmp/

@kahing
Copy link
Owner

kahing commented May 18, 2016

$ ./goofys -f standard-cloud  /tmp/mnt
2016/05/17 23:08:11.749451 s3.INFO Switching from region 'us-west-2' to 'us-east-1'
2016/05/17 23:08:12.144381 main.ERROR Unable to access 'standard-cloud': permission denied
2016/05/17 23:08:12.144567 main.FATAL Mounting file system: Mount: initialization failed

Sigh. I can has your s3ql passphrase?

More serious question, why are you using s3ql and goofys? ;-)

@lkuza2
Copy link

lkuza2 commented May 18, 2016

Haha, you are going to need my AWS access key AND secret key first, then you are going to need my s3ql encryption key ;) Won't matter because the data on there is client side encrypted again lol.

I tried using goofys, i really did, but i couldnt get it to work with my use case. I tried having Seafile use a mounted S3 goofys filey system, but the files kept getting corrupted. No such corruption occurs with s3ql :(

@flashmaestro
Copy link

@kahing @lkuza2
Thx you guys!! I ran goofys command with -f option.
And get these messages.

2016/05/18 12:03:45.138569 s3.INFO Switching from region 'us-west-2' to 'ap-northeast-2'
2016/05/18 12:03:45.171951 main.FATAL Mounting file system: Mount: mount: running fusermount: exit status 1

stderr:

fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

That is why I can't use allow_other.
So sorry It just my fault.
I change fuse option, and get allow_other option.
Thanks again!.

@kahing
Copy link
Owner

kahing commented May 19, 2016

@lkuza2 ah, well goofys isn't a general purpose filesystem so it's not surprising that it doesn't work with something like seafile. That said goofys should detect cases that it doesn't handle and fail instead of corrupting files. If you have some steps that I can reproduce easily I am happy to look into making goofys behave better.

@lkuza2
Copy link

lkuza2 commented May 21, 2016

@kahing Hmm, well all i did was on my Arch Linux box was install Seafile. After, that i used goofys to mount my AWS drive. I then configured seafile to use this AWS mount as its data directory. In the data directory it stores user files, but also its main SQLite data base and PIDs. For one, the system couldn't find the PIDs even though they were being written. After getting around that problem, i found that simply running the Seafile server, the SQLite file becomes quickly corrupted, and Seafile refuses to run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants