Fix component loader

Fixes: NA
Summary/Motivation:
Cleanup up pyutilib.component.loader tests, and add new baselines for Python 3.7
Changes proposed in this PR:
See above
Legal Acknowledgement
By contributing to this software project, I agree to the following terms and conditions for my contribution:

I agree my contributions are submitted under the BSD license.
I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.

Coverage decreased (-1.2%) to 62.834% when pulling 13f6c8bbb2bf4f7485e21d5e81fb4ce6673fbc3c on fix_component_loader into cb78701c51e9ce2a74b7d7f54faadfe687c22dc3 on master.

Codecov Report

Merging #51 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #51   +/-   ##
=======================================
  Coverage   63.29%   63.29%
=======================================
  Files          87       87
  Lines        8688     8688
=======================================
  Hits         5499     5499
  Misses       3189     3189

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cc1a617...04d0786. Read the comment docs.

Codecov Report

Merging #51 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #51   +/-   ##
=======================================
  Coverage   63.29%   63.29%
=======================================
  Files          87       87
  Lines        8688     8688
=======================================
  Hits         5499     5499
  Misses       3189     3189

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cc1a617...04d0786. Read the comment docs.


Added synapseint.com - non stop emails

No description needed. Unless you want to see the emails over the past week...

typo in commit message, moved #53


Don't Report "Behind" Immediately Upon Seeing a New Block

There should be a 20s grace period, or something—if the block is that new, then the node is still reasonably "caught up". That is, if the blocktime of the new block is very recent, it's fine.
~Or we could keep it simple and only fail if the node is two blocks behind.~ We already do this?? Then why does this happen so often?
Related to #1327

This is one of the reasons why I think a 503 error is too brutal. There are several use cases where a functional API is interesting but the node is a few blocks behind.
The v2 API systematically returns a result (even with a 503 or 202 error) and it is the responsibility of API clients to systematically check the 3 headers (X-COUNTERPARTY-HEIGHT, X-BACKEND-HEIGHT and X-COUNTERPARTY-READY) and decide what to do depending on the use case.

ah I don't follow... a result is returned even with a 503? That's a good idea! But let's be sure to document that very clearly, because we have to make sure the clients know to do that check!
OTOH, IMO a 503 should ~never happen except when initially catching up or after a large reorganization (>=2 blocks). The node should parse each block in a small number of seconds, and it shouldn't report a 503 during that short window.

ah I don't follow... a result is returned even with a 503? That's a good idea! But let's be sure to document that very clearly, because we have to make sure the clients know to do that check!

yep! an error code does not mean no content!
of course this will even be in the introduction of the v2 API documentation!

OTOH, IMO a 503 should ~never happen except when initially catching up or after a large reorganization (>=2 blocks). The node should parse each block in a small number of seconds, and it shouldn't report a 503 during that short window.

sounds good!
let's just return an error code if X-COUNTERPARTY-HEIGHT >= X-BACKEND-HEIGHT - 1 instead of X-COUNTERPARTY-HEIGHT >= X-BACKEND-HEIGHT ?

@ouziel-slama sorry I was in the middle of editing my comment!
on second thought, I don't think that we should return data if we're going to return a 503... seems like the data should just be a message saying what the error is.

sounds good! let's just return an error code if X-COUNTERPARTY-HEIGHT < X-BACKEND-HEIGHT - 1 instead of X-COUNTERPARTY-HEIGHT < X-BACKEND-HEIGHT ?

Yes! That should be sufficient. But isn't that what's done in the v1 API? https://github.com/CounterpartyXCP/counterparty-core/blob/ae2ba6c8d28e952022529720fcd512d553f72337/counterparty-lib/counterpartylib/lib/api.py#L228

Maybe it makes sense to split API calls into those that can be returned while the node is behind and those that can't?? For instance, if you want the info on an old block, there's no reason that can't be a 200 even when the node is behind; on the other hand, I think it's not great to return an address's balances when they are out of date (even with an error code—that's a bit risky).

This would actually be ideal but too complex I think! IMHO you really have to leave the responsibility to the API client for this kind of thing. Only the client, when it makes the request, knows whether it is best to have an error code or not if the node is late.
hum.. perhaps the flag --api-not-ready-http-code must be in fact an optional header send by the client to indicate what error code he wants ? yeah IMHO that the simpler solution!

sounds good! let's just return an error code if X-COUNTERPARTY-HEIGHT < X-BACKEND-HEIGHT - 1 instead of X-COUNTERPARTY-HEIGHT < X-BACKEND-HEIGHT ?

Yes! That should be sufficient, but isn't that what's done in the v1 API?
https://github.com/CounterpartyXCP/counterparty-core/blob/ae2ba6c8d28e952022529720fcd512d553f72337/counterparty-lib/counterpartylib/lib/api.py#L228

oh I didn't know! :) I'm going to do the same on v2!

oh I didn't know! :) I'm going to do the same on v2!

Yeah I think there's an actual problem that's causing the frequent 503s, like with mempool parsing, or with it taking ~minutes to parse new blocks sometimes.
I don't love the idea of having a flag for the error code. I mean, if the client knows to set the flag, they can also just modify the client code to handle different HTTP codes differently. 🤷♀
Here's what I'm picturing:

We should always use the 503 error code to indicate that the node is behind; and we shouldn't return data, just an error message. (The client should be told to retry.)
We should make sure that (1) never happens unless the node is still catching up or there was just a big reorg.
We could whitelist some routes (e.g. the new version of /nodeinfo, /blocks/<block_hash>, /transactions/<tx_hash>) that will never report a 503 because their data is never out of date, if that's not too complicated.
We could have the --force flag disable the 503 entirely.

oh I didn't know! :) I'm going to do the same on v2!

Yeah I think there's an actual problem that's causing the frequent 503s, like with mempool parsing, or with it taking ~minutes to parse new blocks sometimes.
I don't love the idea of having a flag for the error code... I mean, if the client knows to set the flag, they can also just modify the client code to handle different HTTP codes differently. 🤷♀

yeah exactly! This is why my original idea is to always return a result even with an error code and let the client decide what to do. This is what seems to me to be the simplest and most flexible for the API client.

Here's what I'm picturing:

We should always use the 503 error code to indicate that the node is behind; and we shouldn't return data, just an error message. (The client should be told to retry.)
We should make sure that (1) never happens unless the node is still catching up or there was just a big reorg.
We could whitelist some routes (e.g. /nodeinfo, /blocks/<block_hash>, /transactions/<tx_hash>) that will never report a 503 because their data is never out of date, if that's not too complicated.
We could have the --force flag disable the 503 entirely.

yep it can work like that! I just wouldn't use --force but a specific flag. --force seems to me to be used for too many things..

OK so, if the server is not ready the API v2 returns a 503 error except for /blocks/*, /transactions/*, /backend/* and /.
Also a server is not ready if ledger.CURRENT_BLOCK_INDEX >= BACKEND_HEIGHT - 1
This means that the server may be a block late (parsing time).. this should be enough as a grace period.. @adamkrellenstein
if ok for you we can close I think.

Yep!

Right now, on testnet, there is almost a block by second and the docker compose test fails because counterparty-server cannot be "ready".. there is little chance of this happening on mainnet.. but if we want to handle this kind of case on testnet we probably also need to check the block_time as you suggest! @adamkrellenstein

Yep, sounds right! We should check both.

Done here https://github.com/CounterpartyXCP/counterparty-core/pull/1754


PostgreSQL: GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY  and GENERATED ALWAYS AS ( generation_expr ) support

Support for ColumnDef -> ColumnOptions
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ]
GENERATED ALWAYS AS ( generation_expr ) STORED

Test cases are available at sqlparser_postgres.rs
and several clippy issues were fixed.
https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check
https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
This is continuation of https://github.com/sqlparser-rs/sqlparser-rs/pull/681

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
373 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.007%) to 86.125%

Files with Coverage Reduction
New Missed Lines
%

src/dialect/hive.rs
1
92.86%

tests/sqlparser_postgres.rs
35
97.46%

src/ast/ddl.rs
39
82.72%

src/parser.rs
298
82.92%

Totals

Change from base Build<PHONE_NUMBER>:
-0.007%

Covered Lines:
13575

Relevant Lines:
15762

💛  - Coveralls


Image captions not displayed without JS

Captions should be displayed without JS as they aren't JS specific.

My thoughts on this is we should probably not have all the JS that runs on the current CaptionedImagebut rather only use run it when we need.
This would help with rendering concerns as well as any performance hits we're taking for re-drawing the images with JS.


AddProductEquality and ScaleObjectiveBy removed from C++ API in 9.2

Hey, congrats on the latest release. When updating the Ruby library, I noticed AddProductEquality and ScaleObjectiveBy were removed from ortools/sat/cp_model.h, but I didn't see it listed under breaking changes in the release notes. I imagine this was intentional, but would be good to include them (and their alternatives if available) in the release notes.

AddProductEquality has been deprecated for quite some time.
ScaleObjectiveBy was removed because we now accept floating point coefficients in the objective.
I will add that to the breaking change.
Thanks

Great, super helpful. Thanks!


Deadeye feat cannot turn off

Please inspect this, as the title says, once turned on, the -5+10 state cannot be turned off
bugreport.sav.zip
In this save the feature is already on, and there is not an option off
Thank you.

Yes there is one. Check the hero portrait on bottom left and click the Deadeye icon there.

THANKS!


:bug:x.x.o(Item): Fix refresh

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (b20ebe8) 100.00% compared to head (e8b9930) 100.00%.
Report is 388 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##              main     #2845   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            8         8
  Lines          334       324   -10
  Branches        20        20
=========================================
- Hits           334       324   -10

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Missing CSS styles - Please help a novice!

Hello,
I've successfully installed Huginn on Ubuntu Server 14.04.5 on Odroid XU4 following the installation guide but no css is loading. I already checked previous solved and similar problems but didn't find a solution. Do you have one? Thank you!
production.log shows no error message
huginn_error.log shows only "old" errors / no error messages in new logins / javascript and stylesheets folder doesn't exist:

2016/12/04 16:08:20 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:21 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:21 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:22 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:22 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:23 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:23 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:27 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:27 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:28 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:28 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:08:30 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:08:30 [error] 1622#0: *109 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:09:28 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:09:28 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:09:29 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:09:29 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:09:29 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:09:29 [error] 979#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:32:54 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:32:54 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:32:55 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:32:55 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:32:56 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:32:56 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:32:56 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/", host: "<IP_ADDRESS>"
2016/12/04 16:32:56 [error] 974#0: *1 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>"
2016/12/04 16:57:45 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:45 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:46 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:46 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:52 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:52 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:54 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:54 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:55 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:55 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:55 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:55 [error] 1535#0: *79 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:56 [error] 1535#0: *77 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 16:57:56 [error] 1535#0: *77 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 17:00:03 [error] 1547#0: *94 open() "/home/huginn/huginn/public/stylesheets/application.css" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /stylesheets/application.css HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/04 17:00:03 [error] 1547#0: *96 open() "/home/huginn/huginn/public/javascripts/application.js" failed (2: No such file or directory), client: <IP_ADDRESS>, server: _, request: "GET /javascripts/application.js HTTP/1.1", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/11 14:46:07 [error] 983#0: *29 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET /images/odin.jpg HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/images/odin.jpg", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"
2016/12/11 14:46:07 [error] 983#0: *29 connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET /images/odin.jpg HTTP/1.1", upstream: "http://unix:/home/huginn/huginn/tmp/sockets/unicorn.socket:/502.html", host: "<IP_ADDRESS>", referrer: "http://<IP_ADDRESS>/"

unicorn.log:

I, [2016-12-11T06:17:26.767098 #854]  INFO -- : unlinking existing >socket=/home/huginn/huginn/tmp/sockets/unicorn.socket
I, [2016-12-11T06:17:26.768053 #854]  INFO -- : listening on >addr=/home/huginn/huginn/tmp/sockets/unicorn.socket fd=10
I, [2016-12-11T06:17:26.804459 #854]  INFO -- : master process ready
I, [2016-12-11T06:17:26.805185 #1259]  INFO -- : worker=0 ready
I, [2016-12-11T06:17:26.815160 #1262]  INFO -- : worker=1 ready
<IP_ADDRESS> - - [11/Dec/2016:06:19:47 -0800] "GET / HTTP/1.0" 200 - 0.3206
<IP_ADDRESS> - - [11/Dec/2016:06:19:47 -0800] "GET /404 HTTP/1.0" 404 728 0.0117
<IP_ADDRESS> - - [11/Dec/2016:06:19:47 -0800] "GET /404 HTTP/1.0" 404 728 0.1299
<IP_ADDRESS> - - [11/Dec/2016:06:19:47 -0800] "GET /404 HTTP/1.0" 404 728 0.0075
::1 - - [11/Dec/2016:06:35:36 -0800] "GET / HTTP/1.0" 200 - 0.2105
<IP_ADDRESS> - - [11/Dec/2016:06:36:16 -0800] "GET / HTTP/1.0" 200 - 0.0705
I, [2016-12-11T06:36:55.309063 #854]  INFO -- : reaped #<Process::Status: pid 1259 exit 0> >worker=0
I, [2016-12-11T06:36:55.309555 #854]  INFO -- : reaped #<Process::Status: pid 1262 exit 0> >worker=1
I, [2016-12-11T06:36:55.309843 #854]  INFO -- : master complete
I, [2016-12-11T14:37:28.134655 #846]  INFO -- : Refreshing Gem list
I, [2016-12-11T06:37:44.013404 #846]  INFO -- : unlinking existing >socket=/home/huginn/huginn/tmp/sockets/unicorn.socket
I, [2016-12-11T06:37:44.014387 #846]  INFO -- : listening on addr=/home/huginn/huginn/tmp/sockets/unicorn.socket fd=10
I, [2016-12-11T06:37:44.050347 #846]  INFO -- : master process ready
I, [2016-12-11T06:37:44.051583 #1256]  INFO -- : worker=0 ready
I, [2016-12-11T06:37:44.058420 #1259]  INFO -- : worker=1 ready
<IP_ADDRESS> - - [11/Dec/2016:06:38:03 -0800] "GET / HTTP/1.0" 200 - 0.2337
<IP_ADDRESS> - - [11/Dec/2016:06:38:04 -0800] "GET /404 HTTP/1.0" 404 728 0.0134
<IP_ADDRESS> - - [11/Dec/2016:06:38:04 -0800] "GET /404 HTTP/1.0" 404 728 0.1027
<IP_ADDRESS> - - [11/Dec/2016:06:38:04 -0800] "GET /404 HTTP/1.0" 404 728 0.0061
<IP_ADDRESS> - - [11/Dec/2016:06:38:06 -0800] "GET / HTTP/1.0" 200 - 0.1550
<IP_ADDRESS> - - [11/Dec/2016:06:38:06 -0800] "GET /404 HTTP/1.0" 404 728 0.0052
<IP_ADDRESS> - - [11/Dec/2016:06:38:06 -0800] "GET /404 HTTP/1.0" 404 728 0.0111
<IP_ADDRESS> - - [11/Dec/2016:06:38:06 -0800] "GET /404 HTTP/1.0" 404 728 0.0053
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET / HTTP/1.0" 200 - 0.0260
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0106
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0112
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0106
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET / HTTP/1.0" 200 - 0.0292
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0109
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0101
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0096
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET / HTTP/1.0" 200 - 0.0298
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0097
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0098
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0102
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET / HTTP/1.0" 200 - 0.0246
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0097
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0108
<IP_ADDRESS> - - [11/Dec/2016:06:38:07 -0800] "GET /404 HTTP/1.0" 404 728 0.0098
::1 - - [11/Dec/2016:06:38:17 -0800] "GET / HTTP/1.0" 200 - 0.0955
I, [2016-12-11T06:40:35.359306 #846]  INFO -- : reaped #<Process::Status: pid 1256 exit 0> worker=0
I, [2016-12-11T06:40:35.360073 #846]  INFO -- : reaped #<Process::Status: pid 1259 exit 0> worker=1
I, [2016-12-11T06:40:35.360521 #846]  INFO -- : master complete
I, [2016-12-11T14:45:59.898997 #1818]  INFO -- : Refreshing Gem list
I, [2016-12-11T06:46:15.216072 #1818]  INFO -- : unlinking existing socket=/home/huginn/huginn/tmp/sockets/unicorn.socket
I, [2016-12-11T06:46:15.216913 #1818]  INFO -- : listening on addr=/home/huginn/huginn/tmp/sockets/unicorn.socket fd=10
I, [2016-12-11T06:46:15.262614 #1818]  INFO -- : master process ready
I, [2016-12-11T06:46:15.264497 #1868]  INFO -- : worker=0 ready
I, [2016-12-11T06:46:15.272777 #1871]  INFO -- : worker=1 ready
<IP_ADDRESS> - - [11/Dec/2016:06:46:21 -0800] "GET / HTTP/1.0" 200 - 0.2417
<IP_ADDRESS> - - [11/Dec/2016:06:46:21 -0800] "GET /404 HTTP/1.0" 404 728 0.0442
<IP_ADDRESS> - - [11/Dec/2016:06:46:21 -0800] "GET /404 HTTP/1.0" 404 728 0.1427
<IP_ADDRESS> - - [11/Dec/2016:06:46:21 -0800] "GET /404 HTTP/1.0" 404 728 0.0074
I, [2016-12-11T06:51:26.787318 #1818]  INFO -- : reaped #<Process::Status: pid 1868 exit 0> worker=0
I, [2016-12-11T06:51:26.787712 #1818]  INFO -- : reaped #<Process::Status: pid 1871 exit 0> worker=1
I, [2016-12-11T06:51:26.787978 #1818]  INFO -- : master complete
I, [2016-12-11T14:51:57.852015 #846]  INFO -- : Refreshing Gem list
I, [2016-12-11T06:52:14.618950 #846]  INFO -- : unlinking existing socket=/home/huginn/huginn/tmp/sockets/unicorn.socket
I, [2016-12-11T06:52:14.619932 #846]  INFO -- : listening on addr=/home/huginn/huginn/tmp/sockets/unicorn.socket fd=10
I, [2016-12-11T06:52:14.656339 #846]  INFO -- : master process ready
I, [2016-12-11T06:52:14.657304 #1252]  INFO -- : worker=0 ready
I, [2016-12-11T06:52:14.664298 #1255]  INFO -- : worker=1 ready
<IP_ADDRESS> - - [11/Dec/2016:06:52:57 -0800] "GET / HTTP/1.0" 200 - 0.2668
<IP_ADDRESS> - - [11/Dec/2016:06:52:57 -0800] "GET /404 HTTP/1.0" 404 728 0.0107
<IP_ADDRESS> - - [11/Dec/2016:06:52:57 -0800] "GET /404 HTTP/1.0" 404 728 0.1553
<IP_ADDRESS> - - [11/Dec/2016:06:52:57 -0800] "GET /404 HTTP/1.0" 404 728 0.0106

*.env:

APP_SECRET_TOKEN=....
DOMAIN=localhost:80
PORT=80

DATABASE_ADAPTER=mysql2
DATABASE_ENCODING=utf8mb4
DATABASE_RECONNECT=true
DATABASE_NAME=huginn_production
DATABASE_POOL=20
DATABASE_USERNAME=huginn
DATABASE_PASSWORD="...."

RAILS_ENV=production

FORCE_SSL=false

INVITATION_CODE=try-huginn

SKIP_INVITATION_CODE=false

REQUIRE_CONFIRMED_EMAIL=false

ALLOW_UNCONFIRMED_ACCESS_FOR=2.days

CONFIRM_WITHIN=3.days

MIN_PASSWORD_LENGTH=8

RESET_PASSWORD_WITHIN=6.hours
MAX_FAILED_LOGIN_ATTEMPTS login attempts. Set to 'none' to allow unlimited failed login attempts.
LOCK_STRATEGY=failed_attempts

MAX_FAILED_LOGIN_ATTEMPTS=10

UNLOCK_STRATEGY=both

LOCK_STRATEGY is 'failed_attempts'
UNLOCK_AFTER=1.hour

REMEMBER_FOR=4.weeks

IMPORT_DEFAULT_SCENARIO_FOR_ALL_USERS=true

AGENT_LOG_LENGTH=200
FARADAY_HTTP_BACKEND=typhoeus

DEFAULT_HTTP_USER_AGENT="Huginn - https://github.com/cantino/huginn"

ALLOW_JSONPATH_EVAL=false

ENABLE_INSECURE_AGENTS=false

ENABLE_SECOND_PRECISION_SCHEDULE=false

SCHEDULER_FREQUENCY=0.3

EVENT_EXPIRATION_CHECK=6h

TIMEZONE="Pacific Time (US & Canada)"

FAILED_JOBS_TO_KEEP=100

DELAYED_JOB_MAX_RUNTIME=2

DELAYED_JOB_SLEEP_DELAY=10

Procfile:

#PRODUCTION
web: bundle exec unicorn -c config/unicorn.rb
jobs: bundle exec rails runner bin/threaded.rb

/etc/nginx/sites-enabled/huginn:

Huginn
upstream huginn {
server unix:/home/huginn/huginn/tmp/sockets/unicorn.socket fail_timeout=0;
}

server {
listen 80 default; #default_server;
listen [::]:80 ipv6only=on; ## default_server;
server_name _; ##YOUR_SERVER_FQDN;  ## Replace this with something like huginn.example.com
server_tokens off; ## Don't show the nginx version number, a security best practice
root /home/huginn/huginn/public;

client_max_body_size 20m;

access_log  /var/log/nginx/huginn_access.log;
error_log   /var/log/nginx/huginn_error.log;

location / {
try_files $uri $uri/index.html $uri.html @huginn;
}

location @huginn {
proxy_read_timeout      300;
proxy_connect_timeout   300;
proxy_redirect          off;

proxy_set_header    Host                $http_host;
proxy_set_header    X-Real-IP           $remote_addr;
proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header    X-Forwarded-Proto   $scheme;
proxy_set_header    X-Frame-Options     SAMEORIGIN;

proxy_pass http://huginn;
}

location ~ ^/(assets)/ {
root /home/huginn/huginn/public;
gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
}

error_page 502 /502.html;
}

Hi @LeonLuchs,
it looks like the application is not running in the production envrionment, please check your .env file and make sure there is no leading space in the RAILS_ENV=production line. If you made a change you need to re-export the configuration with sudo bundle exec rake production:export.

Hi @dsander,
Thank you. I've checked the .env file (no leading space, everything seems to be fine) and re-exported it but unfortunately it didn't work. So I did a reinstall of the system to check if something went wrong during installation. No warning or error. But the missing css still remains. What else can I do to fix the problem?

That is odd, do you still get the same error messages in the nginx huginn_error.log as before?
I assume the asset precompilation (sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production) ran without errors?

Hi @dsander,
huginn_error.log shows no error. But there is an error message in the asset precompilation: /home/huginn/huginn/vendor/bundle/ruby/2.3.0/gems/therubyracer-0.12.2/lib/v8/function.rb:13: [BUG] Segmentation fault at 0x22be30 ruby 2.3.1p112 (2016-04-26 revision 54768) [armv7l-linux-eabihf]. Does it mean that the error appeared during the ruby-installation? And how to solve this problem?

It's either a bug in the therubyracer gem or (more likely) in libv8 on this system. You can try to force rails to use nodejs for the asset precompilation: sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production EXECJS_RUNTIME=Node

Thank you, @dsander! It works after reboot.


build failed

when i clone the project to me desktop and run npm install
then,I run npm run build , the following error :
SyntaxError: src/utils/getPhrasePropTypes.js: Unexpected token (6:6)
  4 |   return Object.keys(defaultPhrases)
  5 |     .reduce((phrases, key) => ({
> 6 |       ...phrases,
    |       ^
  7 |       [key]: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.node]),
  8 |     }), {});

How to fix it

Did you figure it out?

Same issue here.


InsertCommand doesnt work well with Completed & Overdue tabs

Assuming Ongoing, Completed & Overdue tabs each got at least 1 task,
the command to insert a deadline to the 1st task in completed or overdue tab
will insert the deadline to the 1st task in the ongoing tab instead.
Fyi, the edit works perfectly fine within each tab

Tabs feature is removed. This issue is no longer relevant.


:recycle: Enabled validation of nicknames, job titles, links, and images on the ProfileCard screen.

Issue

close #418

Overview (Required)

Added an input check function to the Edit screen
Added VRT for the added input check function
Added Fake implementation that was missing to implement VRT

Movie (Optional)

Before
After

The issue is that this implementation could potentially conflict with this PR. Do you have any thoughts on this?
https://github.com/DroidKaigi/conference-app-2024/pull/459

@takahirom

Do you have any thoughts on this?
I see... 🤔
I was not aware of the content of that PR. 🙏
Since I should not have the authority to decide how to respond, I will leave it to you. 🫡
However, if I were to state this as an opinion, I think it would be a smooth response if I could rewind the #112 task on my end.　💪 (This is just an opinion)

Well, we already have the PR, and we need to value the issue assignee to protect the opportunity for the contributor. Of course, we can't always protect it, though. So I think I might need to prioritize the other PR first. This might lead to a conflict. Sorry in advance.
https://github.com/DroidKaigi/conference-app-2024/pull/459

@takahirom
Conflicts have been resolved. 👍
In addition to resolving the conflict, we have made the display more similar to the requirements shown in Figma. 🫡

As you might know, I recommend small PRs because they can be merged quickly


Fix a race condition result in userspace was blocked infinitely

Fix a race condition result in userspace was blocked infinitely
The currently kernel/userspace command handling logic is:
while (1) {

	while (tcmulib_get_next_command()) {
		// handle
	}

	if (complete) {
		read(fd); // ack that userspace received event
		write(fd); // ack that userspace complete the event
	}
}

But there is a window between finish the searching for next command
tcmulib_get_next_command() and mark the command as received (read(fd) in
tcmulib_processing_complete()), because we handle the command first then ack it
later. We won't know if there are commands sent from kernel space
after tcmulib_get_next_command() return false but before we read(fd) to ack the
event, then we would ack the receiving of new commands by mistake. Then polling
the uio fd would be blocked until (if lucky enough) next command arrives, or
blocking forever.
To make the process right, we need to always read(fd) to ack the event before
starting process the commands.  This patch introduces
tcmulib_processing_start(), which would ack the receiving of command before
tcmulib_get_next_command(). Though it may process more commands than acked, it
won't be a problem since we would just let loop runs one more time to ack them.
When hanging happened, iostat -xk 1 would report something like this, notice
avgqu-sz(these are commands we lost during the window), and %util(which would be
always 100%).
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz
avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00
160.00    0.00    0.00    0.00   0.00 100.00

Thanks, and nice write-up!