Closed Eeemil closed 5 years ago
I have also been facing this issue. If it helps, mine is a private repo.
When I tried https://api.staticman.net/v2/connect/Eeemil/blog again ~18 hours later, it worked and I received an OK. For me, the issue is resolved but I'll wait for a developer to mark this as solved if this issue is affecting more people.
Perhaps there is a delay from inviting staticmanapp untill the invite can be accepted? If so, this should be documented on https://staticman.net/docs/
I think this is an intermittent server load problem, since I am still getting the invitation not found error.
I am facing the same problem
Mine was also automatically resolved in a day or so. I guess there's a waiting list.
I have the same problem. I sent the invitation 18 hours ago, and using the accept link, I've received the JSON message "Too many requests in this time frame", and a date for the next allowed request. I reloaded the page, and the "Invitation not found" message appeared.
Now, same steps happen: first a JSON message, "Too many requests...", and in second page load, "Invitation not found"... Still I don't have the invitation accepted.
It's been 7 days, and still invitation pending
or too many requests
.
If @eduardoboucas may check for the issue (he is the creator of staticman).
Same here :)
I have the same issue. It just returns "Invitation not found".
I also get "Invitation not found". Looks like I have to wait.
Me too... keep getting the same "Invitation not found"...
Same thing here also. Two test sites and the invitations are not found.
Same here, did anyone got it sorted?
No lucky at all. I tried multiple times by re-adding the staticmanapp, waiting even a couple of days, still got "Invitation not found". It looks the service is completely stop working... I don't know what we could do until someone to take look at the hosted service? It's not something wrong in code that we could fix by issuing a PR. It's the deployment env that we couldn't touch... :-(
Sorry, I’m AFK for a few days, but I’ll have a look when I get back on Sunday or Monday. The “Too many requests” is a message from the GitHub API indicating that we’re over the limit, I wonder if the “Invitation not found” is a similar thing, i.e. the user being added to too many repos.
Thank you Eduardo, boas ferias ;)
After 10 days, I got OK
response. Comments on my blog working now. đź‘Ť
no response from me either...
does anyone have any updates on this issue?
I got OK
two days ago. Perhaps this is an intermitent issue...
I never got OK
... More than a week of waiting...
Isn't there a possibility that this issue is affecting comment submissions as well?
If this issue is urgent, why don't consider setting up your own API instance? Provided you have a (free) Heroku account, the whole setup can be done under fifteen minutes.
Indeed, this is also the suggested solution in https://github.com/eduardoboucas/staticman/issues/222.
However, it is not explicitely described anywhere yet that to make sure all submitted comments on your site get processed, you should deploy your own. It reduces the appeal quite a bit, too. As far as I'm concerned, I would rather pay a small fee than have to deal with that.
However, it is not explicitely described anywhere yet.
The second link of my previous comment does describe the whole process of hosting it on a Heroku free dyno. If you follow it, you will have your own API instance built within a quarter of an hour.
"GitLab does not have collaborator invites, so this is currently not required for Staticman to collaborate on a project. The user can just add Staticman immediately." -- #219
Moreover, with #219, you may bypass this problem by using GitLab pages. In fact, users in #22 has reported an array of advantages of GitLab over GitHub, for example, native CD/CI support.
The screenshot below illustrates my demo GitLab Pages (Source). From the timestamp in each commit, it's clear that this site was built while @staticmanapp was "on holiday". How does this works? I've built my own API instance and GitHub/GitLab bot @staticmanlab.
"Not that I'm aware of. Could you create one?"
As a consequence of @eduardoboucas's request, I've really built one running on a free Heroku dyno to test the newly available #219 GitLab suuport. The associated Git* bots are both named @staticmanlab.
(Sorry, I wasn't talking about the deployment process, for which you've given an excellent and totally clear link, I was talking about the Staticman getting started: it doesn't mention these potential API limit problems yet.)
@maxime-michel I see your point. It's better to mention this limitation at the very beginning, so that users can choose between
This is more efficient as @staticmanapp will receive less invitations.
This still happened to me after waiting for five days. The response is still 'invitation not found'. Is there any workaround for this?
Thanks
@saifulmuhajir As depicted on Staticman's set, Staticman functions basically like a :truck: truck which POSTs HTML :page_facing_up: form data into your GitHub/GitLab repo :file_folder: (running on any GitHub/GitLab server).
When a bus is not working, passengers would be asked to take another one. Similarly, for a workaround, you can use my API instance (built at the request of @eduardoboucas for testing #219) or even build your own instance within Heroku's free tier.
@VincentTam thanks. I'll try those options.
@saifulmuhajir To bypass this invitation problem, why not try GitLab Pages? In GitLab, there's no such invitation mechanism---you just add the bot (say @staticmanlab) into the contributing members.
If you really love open source, migrating from the proprietary GitHub to open souce GitLab, which has native CD/CI support, will free you from the aforementioned GitHub API limit.
@VincentTam Apart from initial invitation, does GitLab suffers from bottleneck because of many users using same @staticmanapp and thus some of the comments not getting processed?
I meant to say what if everyone is using same GitLab app for staticman?
@Kulbhushan-Chand I don't know about that, but a quick search points me to a GitLab forum question " Does GitLab have an API rate limit". The last comment lists out several endpoints which control the traffic. Hope that helps.
The last question is precisely the problem. Now the :truck: is overloaded. One may either wait (for an indefinite time period) for a larger truck, or build his/her own one. Building the former costs surely a fortune, while building the later for a personal blog can be free.
It would be nice to have a breakdown of the usage. Does somebody really believe that there's enough Staticman-powered websites for the bot to hit 5k requests an hour? I have a feeling that if anything, it is a spam problem that we have.
@VincentTam Furthur exploring the link in the last comment that you mentioned, points thay GitLab indeed have api request limit
Also mentioned here
Which means it is a matter of time when enough people use someone's / their own's GitLab api and hit 600 req/min.
Looks like self hosted instance for your personal use only is the safe option, BUT that too only upto the limit that the number of users commenting on your self hosted staticman api should not collectively generates more than 600 req/min.
This is a matter of scalability indeed.
Maybe we'll end up building federated commenting (API) system where people can build their API servers (with their request limits) and join them with existing ones.
Also, if @Kulbhushan-Chand picture says 600 req/min/IP that's actually good enough for normal people because one IP should have less than 600 requests per minute.
@saifulmuhajir Rightly said -
for normal people it is good enough
but only if they have deployed their own personal api instance. If group of staticman users ends up using the same api, the limit will be easily achieved.
As mentioned by @VincentTam here about the steps of deployment, it is still not easy for majority of people.
If group of staticman users ends up using the same api, the limit will be easily achieved.
Wait, what? Let's say 50 people use the same deployment. 600 req/min / 50 sites = 12 requests per minute per site. That means at the end of the week, each site would have received a maximum of 12*60*24*7 = 120k comments.
The same math applied to GitHub means 50 sites each get a maximum of 16k comments per week.
On my most visited website (800-1000 daily visits), I get maximum 10 comments a week. I have Staticman running on 3 sites so in the end even that 'high figure' gets drowned into a very low average of 3. Am I missing something or is some spammer abusing the tool?
đź‘Ť Thanks for the math part. Honestly I didn't calculate the numbers when commenting.
Even 12 request per minute per site can be a bottleneck at the peak time of the site visit (only for some very interesting article/site). (Please note I don't have any research fact)
With the growing popularity of staticman, there can be more than 50 people using some specific api instance (this is what happening now with @staticmanapp on github).
I am sure with the use of reCaptcha with staticman, spamming is negligible.
50 was just an example to show we have an extremely large comments per minute / site ratio at our disposal. Yet people have been consistently unable to add Staticman as a collaborator for a month. In my opinion, either we have too many unmaintained sites that weren't set up with captchas and get spam, or somebody is deliberately bricking the instance.
If someone deliberately bricking it, the best way is -- hitting the api from different IPs concurrently to reach the limit per minute using https://api.staticman.net/v2/entry/{GITHUB USERNAME}/{GITHUB REPOSITORY}}
In any-case we need data/log (if available) of @staticmanapp to find out the cause.
Staticman's demo site Popcorn receives thousands of commits a day. Maybe that uses up the API quota.
Excellent catch, @VincentTam. I vote for adding a captcha or an Akismet key to that site.
@VincentTam Allow me to correct, by commits if you mean pull requests. Since there are only 30 commits out of which only few are caused by staticman comment entry.
However, there are > 3000 opened pull requests caused by staticman, but spanned over last two months. There are only 13 pull requests in the lat 24 hours.
I am sure this is not the cause for eating away of API quota.
I just spammed said form a little and noticed that while I still can't add Staticman to my repository, my comments got through just fine. What the hell is going on? If we're hitting the API limit, we would hit it for all cases.
@Kulbhushan-Chand @maxime-michel Thannks for doing the math. In fact, since the public (production and development and my own) API instances are powered by Heroku apps, they are subject to both Heroku and GitHub/GitLab's limits. From it's server response time to a GET request to /
, the first instance isn't run on the free dyno, whereas the other two are.
From a server-side point of view, the traffic from GET requests to /
and /favicon.ico
and POST requests with status 500 (possibly due to GitHub/GitLab repo owners who wish to test/use Staticman) are also considerable.
Since the documentation for Staticman v3 in #219 has not yet been integrated to the official site, it's possible that a user has forgotten to supply the Git service provider when firing a POST request to the /entry
endpoint, like
POST /entry/v3/user/repo/branch/property (wrong URL!)
he/she may keep trying until he/she hits status 427 "too many requests" or he/she gets tired of status 500 "internal server error".
For the case of the public production instance (still running v2), it has to handle requests with wrong endpoint path/request body from GitHub repo owners, who might fire (a multitude of invalid POST) requests over a short period of time.
Lacking knowledge in networking, while testing Staticman with a sample GitHub repo, I've tried sending POST requests from the famous RESTclient, but all of them failed with a status 500. Finally, I've given up those request clients and coded a HTML form. As a result, the project has been expanded to a minimal Jekyll+Staticman v3 GitHub Pages. Looking back, if I had kept trying RESTclient, I might have hit the bottleneck of my own API instance without building anything.
@VincentTam That seems to be working fine. I added few test commits to your link. Even @staticmanapp (GitHub app) is working fine on my personal-website.
However for another repo of mine, I am still waiting for OK
reponse from @staticmanapp for the last 20 days.
I'm also having the same issue when contacting the API - I'm getting "Invitation not found" although I submitted one a couple of hours earlier. So there's no solution yet except to host your own API?
@matdoering Switching to GitLab can bypass this. You may see my sample GitLab page powered by Staticman v3 and its source code for details.
@VincentTam Thanks for the advice! Since switching to GitLab wasn't an option for me, I instantiated my own version of the Staticman API. It was actually quite easy thanks to your great description in your blog post.
To share my experience, I just wrote a blog post about getting the Staticman API running and getting the commenting system working for Hugo.
I'm trying to add staticmanapp as a collaborator to my repository (https://github.com/Eeemil/blog), but whenever I've tried to go accept the invite by either https://api.staticman.net/v2/connect/Eeemil/blog or https://api.staticman.net/v2/connect/eeemil/blog (for trying case sensitivity) it just says "Invitation not found".