[bug]: Despite updating node to v0.17.4, sync loss persist and channels can't connect after restart.

Background
My node had the same loss sync issue that has just been fixed. Unfortunately, I wasn't aware of the v0.17.4 fix early enough. So, I used to restart the node to address the problem. However, the issue recurred, and despite restarting as usual, I realized the channels weren't connecting anymore. This led to force closures, resulting in a loss of 50% of the total channels.
I've been trying to figure out why, but I can't. I installed the new version, hoping it would fix the issue, but it hasn't.
Your environment

version of lnd - 0.17.4
which operating system - ubuntu 20.04
version of btcd, bitcoind, or other backend - bitcoind v24.99.0
any other relevant environment details - I am running a pruned node set to 1000

Steps to reproduce
Tell us how to reproduce this issue. Please provide stacktraces and links to code in question.
Expected behaviour
Expected node to stay synced to chain as long as backend stays synced and also channels to reconnect automatically on restart.
Actual behaviour
Node loss sync every now and then and can only reconnect after restart. On restart, channel refuses to reconnect and come online.
Here's the most recent log of the node after restarting.
lnd.log

Can you check your bitcoind data, how many peers are connected and what are the ping times ? Moreover how do you check that you are out of sync, lncli getinfo ?

Can you also switch of the Watchtower client for now to make sure we can analyse the problem in an isolated way. According to the logs it seems like the Watchtower updates don't happen anyway.

Can you check your bitcoind data, how many peers are connected and what are the ping times ? Moreover how do you check that you are out of sync, lncli getinfo ?

I am connected to 122 peers
Yes, I use lncli getinfo to check. And aside that, I use thunderhub as a node monitoring software, so whenever it's out of sync, it's always visible there.

Can you also switch of the Watchtower client for now to make sure we can analyse the problem in an isolated way. According to the logs it seems like the Watchtower updates don't happen anyway.

I'll do that now.

Disabled watchtower and restarted node

yes could you also set the entire log to debug for the subsytems before sharing ?

logs.txt
@ziggie1984 This is the new logs

Can you provide a goroutine dump when your system is out of sync: sudo curl -s  http://localhost:PORT_EDIT/debug/pprof/goroutine?debug=2
you need to set it in the config setting:
profile=PORT_EDIT

Can you provide a goroutine dump when your system is out of sync: sudo curl -s http://localhost:PORT_EDIT/debug/pprof/goroutine?debug=2
you need to set it in the config setting:
profile=PORT_EDIT

By config settings, do you mean lnd.config file?

exactly

Can you provide a goroutine dump when your system is out of sync: sudo curl -s http://localhost:PORT_EDIT/debug/pprof/goroutine?debug=2
you need to set it in the config setting:
profile=PORT_EDIT

I did this but nothing happened.
We've lost almost all the channels.
Just 4 remaining.
lnd.log

It looks like your bitcoind only has 3 peers and they are all slow to respond. Make sure you have enough fast outbound peers on your bitcoin node. If necessary, increase the allowed number and connect some peers manually.
Because you are running with such a low prune value, lnd needs to fetch a lot of blocks during rescans. It does that using bitcoind's peers. And if they don't give you the blocks or are too slow, lnd cannot sync.

It looks like your bitcoind only has 3 peers and they are all slow to respond. Make sure you have enough fast outbound peers on your bitcoin node. If necessary, increase the allowed number and connect some peers manually. Because you are running with such a low prune value, lnd needs to fetch a lot of blocks during rescans. It does that using bitcoind's peers. And if they don't give you the blocks or are too slow, lnd cannot sync.

Would you advise I increase the prune value too?

If you have the disk space then definitely. Though I think it won't take effect immediately as it will just stop deleting blocks when new one come in until the new prune value is reached. But the low prune value is what's causing the issue in the first place (meaning all blocks need to be fetched from p2p, making your node dependent on your peers).

Oh, I guess this setting also needs to be bumped in lnd: bitcoind.pruned-node-max-peers. Not sure what value to set it to, maybe the same as you have outbound peers configured in bitcoind?

If you have the disk space then definitely. Though I think it won't take effect immediately as it will just stop deleting blocks when new one come in until the new prune value is reached. But the low prune value is what's causing the issue in the first place (meaning all blocks need to be fetched from p2p, making your node dependent on your peers).

I will increase it to 3000.
I checked and bitcoind is connected to 123 peers.

bitcoind.pruned-node-max-peers

How do I do this actually pls?

what port number did you use for ?
profile=???
Did you do this then:
sudo curl -s  http://localhost:????/debug/pprof/goroutine?debug=2 > goroutine_dump.txt

what port number did you use for ?
profile=???
Did you do this then:
sudo curl -s http://localhost:????/debug/pprof/goroutine?debug=2 > goroutine_dump.txt

profile=10009
I used port 1009

That port is already occupied by the RPC server, so it likely failed to start the profiler.

That port is already occupied by the RPC server, so it likely failed to start the profiler.

So I will have to use an entirely different port then.

Yes.

Done. Here's what I got
goroutine.txt

I confirm... It looks like the sync loss still happens... Just noticed two channels force-closed a couple days ago with failing link: unable to complete dance with error: remote unresponsive errors... Usually I restarted my node once or twice a week, but this time it was running for three weeks without restart - and here's the result...

I confirm... It looks like the sync loss still happens... Just noticed two channels force-closed a couple days ago with failing link: unable to complete dance with error: remote unresponsive errors... Usually I restarted my node once or twice a week, but this time it was running for three weeks without restart - and here's the result...

Megasley is suffering from a startup issue, so could you be more specific about your case, when does it happen and can you provide the goroutine dump + logs when the out_of_sync happens ?

Megasley is suffering from a startup issue, so could you be more specific about your case, when does it happen and can you provide the goroutine dump + logs when the out_of_sync happens ?

I think I misread the title of the bug... I don't monitor my node closely and don't catch the issue when that happens… In the past I had issues with AfricaFreeRouting nodes force-closing often... Now the last two channels to their nodes are in the process of force-closing... I thought the issue was fixed... Sometimes I noticed that channel was offline, but only for me... I restarted my node, and it instantly was back online... I guess this time when I didn't notice it timed out and force-closed...
So, I'm sorry, but I'm not in the right situation for debugging it... All I know is that sometimes a node may go offline, I see failing link: unable to complete dance with error: remote unresponsive in the log around the time that happens, the remote node itself is online and reachable, but my node can't reestablish connection to it until I restart LND...
I only have WARN level logs, but there's nothing suspicious in them except that one type of error related to the force-closing channels...


incorrect amount in transaction_list

Tx: https://explorer.lbry.io/tx/e6849ad06d417d795138d7fc2a3b3c4c9e43ac8be4c128235c46d5022081e7a8
Amount should be 0.0000042 and fee of 0.0001172
  {
    "abandon_info": [],
    "claim_info": [],
    "confirmations": 0,
    "date": "            ----",
    "fee": 0.000113,
    "support_info": [],
    "timestamp": null,
    "txid": "e6849ad06d417d795138d7fc2a3b3c4c9e43ac8be4c128235c46d5022081e7a8",
    "update_info": [],
    "value": -0.0001172
  }
]

Here's another...probably something due to small amounts:
https://explorer.lbry.io/tx/e3ac25fa491a7b3fd6b5925c21ca4c75b634b2cd4886674aff915d5091e8080e
  {
    "abandon_info": [],
    "claim_info": [],
    "confirmations": 23,
    "date": "2018-05-14 14:55",
    "fee": 0.000113,
    "support_info": [],
    "timestamp":<PHONE_NUMBER>,
    "txid": "e3ac25fa491a7b3fd6b5925c21ca4c75b634b2cd4886674aff915d5091e8080e",
    "update_info": [],
    "value": -0.0001466
  }

@tzarebczan is this still a valid issue?


Update CI config

Stop using custom scripts to install tools
Update to the latest version of tools
Pass in non default profile to packer

This PR only deletes a file (adds nothing to travis.yml).  Is that intentional?

oops forgot to commit the CI file @brucehoff.  it's committed now.


ghz example is failing in qobj

Information

Qiskit Terra version:
Python version:
Operating system:

What is the current behavior?
Steps to reproduce the problem
What is the expected behavior?
>>> python examples/python/ghz.py

Traceback (most recent call last):
  File "examples/python/ghz.py", line 59, in <module>
    result = job.result()
  File "/anaconda3/lib/python3.6/site-packages/qiskit/providers/ibmq/ibmqjob.py", line 186, in result
    job_response = self._wait_for_result(timeout=timeout, wait=wait)
  File "/anaconda3/lib/python3.6/site-packages/qiskit/providers/ibmq/ibmqjob.py", line 190, in _wait_for_result
    self._wait_for_submission(timeout)
  File "/anaconda3/lib/python3.6/site-packages/qiskit/providers/ibmq/ibmqjob.py", line 391, in _wait_for_submission
    raise self._future_captured_exception
  File "/anaconda3/lib/python3.6/site-packages/qiskit/providers/ibmq/ibmqjob.py", line 330, in _submit_callback
    submit_info = self._api.run_job(self._qobj_payload, backend_name=backend_name)
  File "/anaconda3/lib/python3.6/site-packages/qiskit/providers/ibmq/api/ibmqconnector.py", line 144, in run_job
    job = self.req.post(url, data=json.dumps(data))
  File "/anaconda3/lib/python3.6/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/anaconda3/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/anaconda3/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/anaconda3/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'Zero' is not JSON serializable

Not sure what is causing this serialization error. @diego-plan9 can you take a look?

It seems quite similar to the errors in Aer that caused two tests to be skipped during the Qobj PR (as IBMQProvider contains also code very similar to Aer's to deal with noise model, etc) - I'll check with @chriseclectic as they can probably be handled at the same time.

a few other examples also fail. it seems the failure happens when trying to run on devices, not Aer.

Seems we are being too lax when handling qobj.experiment.instructions.parameters, and is rippling up when using types that cannot be serialized by default - will issue a PR shortly!


⚠ Turnos 24x7 has degraded performance

In 08fd0c4, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 2482 ms

Resolved: Turnos 24x7 performance has improved in 8080b2a.


RabbitMQService not able to re-establish consumer after connection loss

Currently, the reconnection logic is only able to make sure a message is sent in an unstable network condition.
but the consumer is not guaranteed to be re-established after a connection error or close. it's important to make sure both publisher and consumer are reliable.

The Rascal should be able to handle this


Investigate feature flag and graphql timing issue

App is sending "application-page:front-u36-v1" or "chapter-slider:enabled" but the app is not showing these features.
Often happen on first launch after a long (1+ day) or on after an app update.

Update app
Open
Asked to login
Login
App sending application-page:front-u36-v1
App got the original application page instead of the feature flag version
Had to swipe down to refresh for frontpage to load correctly

@mulundapm Android or iOS? I cannot seem to reproduce myself

Happened on ios, havent verify on android. Testing again now on first launch after updating the app (often reproducible by this), but it doesnt seem like the issue is occurring.

Trying testing with bad network

#488


Reclassify three samples files generated from Zephir code

This pull request changes the language for three samples added in #1132.
I moved them from Zephir/ to C/ and PHP/.
The three files are generated from Zephir code but are actually C and PHP code.
I wonder if we could have written a test to detect this.
/cc @arfon @bkeepers

I wonder if we could have written a test to detect this. /cc @arfon @bkeepers

What about running all of the samples in the filenames directories through the classifier and warning if they don't match the parent directory language?

Samples in the filename directories already go through the detection process and through the classifier if they don't have a shebang and don't match any heuristic (as it was the case here). But since they are used to train the classifier, it almost always detect them as being written in the language they are classified.

:+1:
I can't think of a good way to test this.


Clean up SocketTestServerAsync.cs.

I missed this yesterday when doing cleanup work.

@CIPop @davidsh PTAL

Minor comments, otherwise LGTM

Agh, sorry--pulled the trigger too fast. Please keep reviewing, I'll address any comments with another PR.

LGTM


[WIP][RHCLOUD-20514] Endpoint tests4

update of tests for endpoint handlers PART IV.
(part I. #440, part II. #444, part III. #446)
for handler:

EndpointCreate()

rest of handlers will be covered in next PR
main goal here is to add better checks of created endpoint and to delete the created endpoint in the end of the test
JIRA: RHCLOUD-20514

this PR will be rebased after #446 merge

rebased and ready for review


Rewrite the release workflow and refactor existing GHA workflows

In this PR I've removed the old release workflow (including the release environment in tox.ini) and added a completely new Github Actions workflow for handling a release. As part of that, I refactored the existing workflow into multiple files, including reusable workflows test.yml and docs.yml which get called in multiple ways from the primary workflows.
Release step sequencing
The process I implemented here works as follows:

We start by making a Github release ("Github release" refers to the announcement page on Github that we make using this form), with a corresponding tag, in the Github web interface (or by using the Github API)
The workflow automatically runs and tests the code from a checkout of the main Git branch
It also tests the documentation from a checkout of the main Git branch
It builds the package for distribution
After getting a maintainer's approval through the Github UI (or API), it publishes the package to Test PyPI
Then after getting approval again, it publishes to PyPI

I'm not sure if that's the best way to sequence the steps involved in making a release, though. (Note I'm using "release" by itself to mean a tagged and published version, in contrast with "Github release") For one thing, the tests are not run against the actual distributable package, so there's a slight chance that a checkout of the repo would pass tests while the same tests run against the installable wheel would fail. (This is very unlikely, but it could happen if the package uses a hard-coded relative file or something like that.) This sequencing also carries the risk that the package might fail tests after creating the tag, and then we're faced with having a tagged release that doesn't work and can't be posted to PyPI, which kind of forces us to skip a version number.
There are some alternative sequences we could consider, such as this:

We start by making a Github release, with a corresponding tag, in the Github web interface (or by using the Github API)
The workflow automatically runs and builds the package for distribution
It tests the code from the package (not from the checkout)
It tests the documentation from a checkout of the main branch (because the documentation source isn't included in the wheel)
With approval, it publishes the package to Test PyPI
Again with approval, it publishes to PyPI

This would take care of the risk that tests pass against the checked-out source code but fail against the installed package. But it turns out to be somewhat tricky to set up tox to run tests against the installed package (although doable with some hacky workarounds in our case, at least for now).
Or we could do this:

Manually trigger a workflow
The workflow tests the code from a checkout of the main Git branch
It also tests the documentation from the main Git branch
It creates the tag to be used for the release
It builds the package for distribution
With approval, it publishes the package to Test PyPI
With approval, it publishes to PyPI
The workflow prompts us to create the Github release, or perhaps creates a draft Github release which we can then fill in with release notes and publish

That would take care of the risk of the tests failing when we've already created a tag, but it still has the problem where what we're testing is not exactly the same as what gets installed. And it's also awkward to have the semi-manual step of creating the Github release at the end, which basically needs Github Actions to prompt us to create a release but wait for us to actually fill in the release description. It would be nice to have the release notes prepared in advance.
I think the ideal sequence would be this:

We manually draft the Github release including the release notes and the name of the tag to be created, but don't make it public yet
The workflow runs and checks out the code in a local view
It creates the tag in that local view but doesn't push it up to Github
It builds the package for distribution
It tests the code from the package
It tests the documentation in the local view
Now that tests have passed, it pushes the tag from the local view to the Github repo
With approval, it publishes to Test PyPI
Then it publishes to PyPI
Finally it marks the previously drafted Github release as public

But it's fairly complicated to make all those steps happen in exactly that order, as well as to arrange for tests to be run against the built package. I decided to leave that as a future goal, and for now just commit something that we can use to make a release so that we're not blocked in making this package available to the public.

@sjlongland Feel free to take a look at this if you want. It's theoretically done (or, done enough for now), but given how complex these changes are, I'm going to want to wait a day or two and look over it with fresh eyes before I'm ready for it to be merged.

I think it's ready now :+1: (unless I missed something)
We won't be able to test the release workflow without actually creating a release, but it could be a pre-release that never gets pushed to PyPI.


Error

Hi igor725
Your latest version doesn't work for me
and gives me the error on the screenshot when launching a game.

Ok Igor
Got it
I put yes at the beginning
In any case, congratulations and thank you for the work you do.
Keep it up.

Thank you for using my launcher and kind words :)


Improve Calendar function for all reports

Notes from initial review with Bridget:

[ ] Remove 'Last 7 Days' date range
[ ] (If possible) Add a 'Today' button that allows users to set the end date to the current date
[ ] Add an 'All Time' date range that sets the start date to 1/1/95 and end date to today
[ ] Limit the years in the year dropdown to 1995 - current year
[ ] Ensure the Reset button resets the new date range component

@bchiaruttini the feedback items are complete and ready for review in dev.
Unfortunately there is no way to display a 'Today' button in the picker. On the plus side I was able to configure the two calendars to update independently, so when you are looking at long date ranges (e.g. All Time) it should be a lot more clear which start and end dates are selected.
Please take a look and let me know if you have any additional feedback.  In the meantime I'll work my way back through the rest of the reports.

@n-devr Looks great, the two calendars are definitely more intuitive now.  Two pieces of feedback:
1.) i'm guessing this is outside of your control, but it took me a long time to figure out that once you are in the drop down calendaring, and say for instance you want to first look at past 30 days, and then switch to YTD, you can only toggle between those if you click on the blank space in the line, and not where there is text. It's a small thing but as my instinct is to click on the title of the date range, it appeared that it was not working.  Can demonstrate tomorrow as needed!
and my only other thought on "today" is that sometimes calendars just have it highlighted based on the current date, versus having to select it via a button.  So if this is an option it would serve the same need, but definitely not necessary to custom build something like that.
But overall this is great so let's continue with getting these on all reports.

Also, #512 is small change to child listing report that perhaps we could push at same time to have this one wrapped up.

Not being able to click on the text for the predefined date ranges sounds like a bug to me - that shouldn't be the case and I just double-checked on my local and that is not the case for me.  We can try to debug when we meet, it may be a browser-specific issue.
Unfortunately there is no configuration option built in to the plugin to highlight today's date.  It may be something I could implement but I'd have to take the time to edit the underlying component itself, much like a Keystone change.
I'll take care of #512 along with the rest of the date range refactoring.

@bchiaruttini all of the date ranges updates are complete and ready for review in dev!


add ruby 2.2.x and 2.3.0 to Travis build matrix

By not including  the patch number, Travis will use the latest version of 2.1.x and 2.2.x.  Not sure why that doesn't work for 2.3.x (maybe because there is only one 2.3 release so far)

Thanks!

:+1: Thank you!


Support only node lts and latest

see https://github.com/node-formidable/node-formidable/issues/514

My idea was to be free to use whatever features available in lts without questioning whether it will still work in version 8 or 7.
I think that semver is about public API, not actual API so even if it technically still works on previous versions it is not guaranteed in the documentation anymore.
It is your call

For example right now I have a follow up PR that uses Buffer.alloc instead of the deprecated new Buffer, checking if it is compatible with every node version < 10 is additional work (Back to maintainer wanted)

I think that semver is about public API, not actual API

Probably. I'm not sure either. Sindre is doing it that way too, so yea.
But lets begin modernizing the codebase first and we can easily do that too. We can include more things in the v2. If we merge this, it will be some "empty/nothing" release, nothing significant or important for the users. And then later we after real breaking changes we will need to bump major one more time.

merged as 1.2.2 for now

Btw, just realized travis was a bit broken, because the repository move to org.
I added it through my account. We should fix the badge too.


pkg/env: add tests for ResolveLink and rename

Changing ResolveLink to Realpath as it sounds more like a readlink/realpath
operation (e.g. it works on directories and regular files).
Add unit tests.
Refusing to run on relative symlinks (add error).
Use filepath.Clean.

Codecov Report

Merging #64 into master will increase coverage by 1.27%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master     #64      +/-   ##
=========================================
+ Coverage   42.83%   44.1%   +1.27%
=========================================
  Files          12      12
  Lines         558     560       +2
=========================================
+ Hits          239     247       +8
+ Misses        274     267       -7
- Partials       45      46       +1

Impacted Files
Coverage Δ

pkg/environment/environment.go
45.71% <100%> (+21.47%)
:arrow_up:

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 4f7485c...a879916. Read the comment docs.

cc: @lbb

I think the tests are fine. One of the builds (/push) was failing reproducibly by failing to clone the branch (it was trying to clone the wrong repo I think).

thanks for review, merging. It seems like we should probably delete or unexport this method at some point. It's only used to determine the version of krew itself.


Adding X-Forwarded-Proto header to docs

Type: docs
The following has been addressed in the PR:

Addition to the reverse proxy wiki

Description:
The web ui code relies on src/lib/utils.js#L319 to figure out the correct protocol for serving the assets (js, css, etc). Since it relies on the "X-Forwarded-Proto" header, I have updated the documentation to reflect this. Without this header, you get a mixed-content page when you are on https as the assets end up being served over http.

Good catch !! Thanks !


No explanation of "SSL" in network timing breakdown

Page Affected: https://developers.google.com/web/tools/chrome-devtools/network/reference#timing-explanation
What needs to be done?
Perhaps the wording changed, but in the "Timing breakdown phases explained" section, there is not an explanation of the "SSL" section of the breakdown.  Is it the former "Proxy negotiation"?
Thank you.

Can you tell me your Chrome version (chrome://version) and provide a URL where I can reproduce your waterfall?

I observed the same issue, mine is Chrome Version 73.0.3683.103 (Official Build) (64-bit) ("Your browser is managed by your organization")


Updating the read the docs documentation.

Adding a page on the fundamental concepts underlying the image and
transformation classes. Also modified the sphinx conf.py to use the
math extension (support latex formulas as png).

Awesome! I am going to merge this and see how it renders. Then do any fixes in additional patched.

Should I create a new branch with the content and get rid of this branch? I don't think we want the svg files in the repository's history and I already committed them, so removing them won't make a difference.

Great! I'm going to quickly merge this into next, then master after checking the ReadTheDocs build.

The RTD build seems successful, there are a couple things things need fixed such as the "How do you determine the physical location of a pixel:" code block. But this topic is being merging into master, and new fixes can be based on maser.


python3Packages.pywebview: fix failing build

Description of changes
See https://hydra.nixos.org/build/238312884/nixlog/2
Introduced by #251878
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/2826

@ofborg build python311Packages.pywebview

Result of nixpkgs-review pr 263548 run on x86_64-linux 1

2 packages failed to build:

python310Packages.pywebview
python310Packages.pywebview.dist

4 packages built:

jellyfin-mpv-shim
jellyfin-mpv-shim.dist
python311Packages.pywebview
python311Packages.pywebview.dist

@ofborg build python310Packages.pywebview


[FLINK-11051][table] Add streaming window FlatAggregate to Table API

What is the purpose of the change
Goal
This PR supports (streaming, window) flatAggregate on Table API.
Background
FLINK-10977 add streaming non-window flatAggregate on TableAPI. The behavior of table aggregates is most like GroupReduceFunction did, which computed for a group of elements, and output a group of elements. The TableAggregateFunction can be applied on Table/GroupedTable.
Motivation
For group window cases, it would be nice if we can also support flatAggregate. This means we can perform flatAggregate on Tumble/Slide/Session Windows. The API looks like:
table.window(Tumble.over("5.minutes").on("rowtime").as("w")) // define window
    .groupBy("a, w") // group by key and window
    .flatAggregate("tableAggFunc(b) as (x, y)")

Solution
This PR adds flatAggregate API on WindowGroupedTable and adds window table aggregate logical node for the plan optimization. For the runtime code, window table aggregate reused most of the code with window aggregate and non-window table aggregate.
The difference between window aggregate and window table aggregate is, for window table aggregate, the runtime aggregate function(org.apache.flink.table.runtime.aggregate.AggregateAggFunction) returns both accumulator and function to the window function and emit value in it while for window aggregate, the runtime aggregate function returns the final results to the window function. This is because we can't emit results in the runtime aggregate function for table aggregate as there is no collector to be used.
Brief change log

494d356 Add flatAggregate API on WindowGroupedTable. Add java and scala API. In this commit, the implementation has not been implemented.
9990a47 Resolve expression and build LogicalWindowTableAggregate. TableAggregate is added to make it different from Aggregate. The two kinds of RelNode contain different semantics. For Aggregate, it represents a relational operator that eliminates duplicates and computes totals while for TableAggregate, it can output 0 or more records for a group.
3b2e2bb Add Plan support for window table aggregate. Logical&Physical nodes and rules are added in the commit.
e1a3ed4 Add runtime support for window table aggregate. This commit reuses the code of window aggregate and adds support for window table aggregate.
031a6e7 Add docs for window table aggregate. Also rename Table Aggregate to FlatAggregate as it is more consistent with the API for users.

Verifying this change
This change added tests and can be verified as follows:

Added plan test(GroupWindowTableAggregateTest) to verify plan
Add IT case(GroupWindowTableAggregateITCase) to verify code gen and runtime logic
Add GropuWindowTableAggregateStringExpressionTest to test java.

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (yes)
If yes, how is the feature documented? (docs)

@flinkbot approve consensus

@flinkbot attention @aljoscha @twalthr @dawidwys

@sunjincheng121 Thank you very much for your suggestions and meticulous review. I have addressed all your comments and updated the PR. Would be great if you can take another look. Thank you.
Best, Hequn

@sunjincheng121 Hi, thanks a lot for your review and suggestions. I have updated the PR according to your comments. Could you kindly take another look. Thank you.
Best, Hequn

LGTM. +1 to merged

@flinkbot approve all


Old() - Seems to have an issue with retrieving array values

name: Bug report
about: Help us improve the framework by reporting bugs!

Describe the bug
My input field is named as "locations[]".  When the form failed validation - I tried to retrieve it as $locations = old('locations'); Which throws up an error - strpos() expects parameter 1 to be string, array given - BASEPATH/Common.php at line 786
The line 786 is in old() method in System/Common.php is
		// If the result was serialized array or string, then unserialize it for use... 		if (strpos($value, 'a:') === 0 || strpos($value, 's:') === 0) 		{ 			$value = unserialize($value); 		}
Here are the full methods from all the files which I think are related to this issue.
You can see the $value is being parsed through $request->getOldInput($key); in this old() method. There isn't any where I can see the arrays in POST data being serialised as I looked into WithInput() method too.
	function old(string $key, $default = null, $escape = 'html')
	{
		$request = Services::request();

		$value = $request->getOldInput($key);

		// Return the default value if nothing
		// found in the old input.
		if (is_null($value))
		{
			return $default;
		}

		// If the result was serialized array or string, then unserialize it for use...
		if (strpos($value, 'a:') === 0 || strpos($value, 's:') === 0)
		{
			$value = unserialize($value);
		}

		return $escape === false ? $value : esc($value, $escape);
	}

** File system/HTTP/IncomingRequest.php **
	public function getOldInput(string $key)
	{
		// If the session hasn't been started, or no
		// data was previously saved, we're done.
		if (empty($_SESSION['_ci_old_input']))
		{
			return;
		}

		// Check for the value in the POST array first.
		if (isset($_SESSION['_ci_old_input']['post'][$key]))
		{
			return $_SESSION['_ci_old_input']['post'][$key];
		}

		// Next check in the GET array.
		if (isset($_SESSION['_ci_old_input']['get'][$key]))
		{
			return $_SESSION['_ci_old_input']['get'][$key];
		}

		helper('array');

		// Check for an array value in POST.
		if (isset($_SESSION['_ci_old_input']['post']))
		{
			$value = dot_array_search($key, $_SESSION['_ci_old_input']['post']);
			if (! is_null($value))
			{
				return $value;
			}
		}

		// Check for an array value in GET.
		if (isset($_SESSION['_ci_old_input']['get']))
		{
			$value = dot_array_search($key, $_SESSION['_ci_old_input']['get']);
			if (! is_null($value))
			{
				return $value;
			}
		}
	}

** File System/HTTP/RedirectResponse.php **
	public function withInput()
	{
		$session = $this->ensureSession();

		$input = [
			'get'  => $_GET ?? [],
			'post' => $_POST ?? [],
		];

		$session->setFlashdata('_ci_old_input', $input);

		// If the validator has any errors, transmit those back
		// so they can be displayed when the validation is
		// handled within a method different than displaying the form.
		$validator = Services::validation();
		if (! empty($validator->getErrors()))
		{
			$session->setFlashdata('_ci_validation_errors', serialize($validator->getErrors()));
		}

		return $this;
	}

CodeIgniter 4 version
4.0.0-alpha.2 Released
Affected module(s)
System/Common.php, System/HTTP/IncomingRequest.php, System/HTTP/RedirectResponse.php
Expected behavior, and steps to reproduce if appropriate
It should return full array.

@daljit3 Can you provide an example of a redirect that ends up with a blank page?
All the unit tests pass, so this is not something I would expect.

@jim-parry Thanks for getting back to me quickly. Please take a look at this method below. Yesterday, all the code was working fine until I found the bug above. Today, I saw your email that it has been fixed. I did git pull so that I can check if it was fixed. I tried to login to my site on my local but it gave me a blank page after submitting my login credentials. I manually changed the url to home page and I could see that it did log me in. I tried to logout where all I have is the code below and it just gives me a blank page without redirecting.
    public function logout()
    {
        session()->destroy();

        setFlashAlertSuccess('You have logged out successfully!');
        redirect()->to('/');
        //redirect("/");
        exit;
    }

When doing redirects, you should always return the redirect, like so:
return redirect()->to('/');

I also tried return redirect()->to("/"); as well but no luck.

@lonnieezell yes I am aware of that but unfortunately that never seemed to have worked for me. That's why I ended up having to use exit; after all of my redirects. I have up to date code as I use a cloned copy of your CI4 from Github on local and I do git pull everyday.

@daljit3 Gotcha. It was designed so that you have to do a return, but sounds like there's an issue there. I know they've made some changes to redirects in the last couple of days trying to clean things up, and I've been slammed with the day job for the past bit so I'm not 100% in the loop on the changes here. I'll let @jim-parry continue on with this one.

Yes - I can confirm there is an issue with redirects. I just downloaded a new copy of CI4-develop and I could see wecome message to confirm everything working. Then I made these modifications below to the Home controller. If I try mylocalsite/home/daljit it just shows a blank page.
 namespace App\Controllers;

use CodeIgniter\Controller;

class Home extends Controller
{
	public function index()
	{
		return view('welcome_message');
	}

	//--------------------------------------------------------------------
    public function daljit()
    {
        return redirect()->to("/home/hello");
    }

    public function hello()
    {
        echo "Hello!";
    }
}

I will revert the changes I made to "fix old()" and start from there.

Done, and I will comment further on the other bug report.

Solution confirmed, phew


Add missing clothes to uniform printer

About the PR
Various clothes have been added to the uniform printer such as jumpsuits, jumpskirts, mantles and winter coats. The only exception is color jumpsuits since they are obtainable through a vending machine. The most notable addition is Mystagogue's set of clothes.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

add: Missing clothes (jumpsuits, jumpskirts, mantles, winter coats) to the uniform printer

give me a moment

I'd like these issues addressed in a future PR.

i got most of them real quick, the migrations thing I'll look at later


Update web3j in acceptance tests to ~4.8.6

PR description
Updated acceptance tests to use latest version of web3j
Changelog

[ ] I thought about the changelog and included a changelog update if required.

@antonydenyer I hit the update button and there are some compile errors :/


cannot find Symbol by address xxx on chain, hydro protocol

I have hydro protocol running locally and i wanted to add an ERC20 token. I received the error below:
"cannot find Symbol by address 0x115170eb12107c377046eaed6e0d7179505ce6d1 on chain"
May you help give me information on how to resolve the above. Thank you.

Why is it there is no help with this?

Why is it there is no help with this?


Quick question: run brew info without searching deleted formula?

Is there a way to to tell brew info <name> not to search for deleted formula, or a fast alternative method of finding out if a package is currently available?
brew info <name> takes a long time on my machine if name doesn't exist:
$ time brew info<EMAIL_ADDRESS>Error: No available formula with the name<EMAIL_ADDRESS>==> Searching for a previously deleted formula...
Error: No previously deleted formula found.

real	0m28.795s
user	0m26.850s
sys	0m0.857s

It almost immediately gets to Error: No available formula with the name<EMAIL_ADDRESS>and it seems to be the search that takes up the time.
This is a problem for me because I have Ansible playbooks that create formulas for versions of packages using a template if it doesn't find the versioned formula, and Ansible's homebrew module uses brew info under the hood.
I poked around the brew info docs and the source a bit but I didn't see anything.
Is there any way to tell brew that I don't want it to dig through everything? Is there an approach I (and Ansible) should be using to figure out if a package is currently available?
Thanks, Neil.

From the issue template:

Please note we will close your issue without comment if you delete, do not read or do not fill out the issue checklist below and provide ALL the requested information. If you do not read fill out the issue template repeatedly you will be blocked from every submitting issues to Homebrew again.

If you add the necessary information this issue may be reopened.

Gee wiz guys it's a user interface question... is there somewhere else those should go?
Please always follow these steps:

[X] Confirmed this is a problem with running a brew command and not brew installing or the post-install behaviour of one or more formulae? If it's a formulae-specific problem please file this issue at the relevant tap e.g. for Homebrew/homebrew-core https://github.com/Homebrew/homebrew-core/issues/new
[X] Ran brew update and retried your prior step?
[X] Ran brew doctor, fixed all issues and retried your prior step?
[X] Ran brew config and brew doctor and included their output with your issue?

$ brew config
HOMEBREW_VERSION: 1.3.2-73-gdbc4a38
ORIGIN: https://github.com/Homebrew/brew.git
HEAD: dbc4a385b9d421b1738c86b4d0ca7cc1b49b3782
Last commit: 13 hours ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 33d08243ea4dd69f1969deb0234781373fcac1c3
Core tap last commit: 52 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: octa-core 64-bit haswell
Homebrew Ruby: 2.0.0-p648
Clang: 8.1 build 802
Git: 2.13.1 => /usr/local/bin/git
Perl: /usr/local/bin/perl => /usr/local/Cellar/perl/5.24.0_1/bin/perl
Python: /usr/local/opt/python/libexec/bin/python => /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /Users/nrser/.rbenv/shims/ruby => /Users/nrser/.rbenv/versions/2.3.3/bin/ruby
Java: 1.8.0_102, 1.8.0_66
macOS: 10.12.6-x86_64
Xcode: N/A
CLT: <IP_ADDRESS>.1.1492020469
X11: N/A

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: Broken symlinks were found. Remove them with `brew prune`:
  /usr/local/bin/docker-credential-osxkeychain
  /usr/local/lib/node_modules/nrser
  /usr/local/lib/node_modules/nrser-dropbox
  /usr/local/share/doc/ghc

Warning: Some installed formula are missing dependencies.
You should `brew install` the missing dependencies:
  brew install llvm@4 <EMAIL_ADDRESS>
Run `brew missing` for more details.

Warning: Some keg-only formula are linked into the Cellar.
Linking a keg-only formula, such as gettext, into the cellar with
`brew link <formula>` will cause other formulae to detect them during
the `./configure` step. This may cause problems when compiling those
other formulae.

Binaries provided by keg-only formulae may override system binaries
with other strange results.

You may wish to `brew unlink` these brews:
  readline

Gee wiz guys it's a user interface question... is there somewhere else those should go?

I don't think it's too much to ask for you to provide us with the information we actually ask for when you're asking volunteers for help at the weekend.

Josephs-MacBook-Pro:Homebrew joe$ time brew formula<EMAIL_ADDRESS>Error: No available formula with the name<EMAIL_ADDRESS>
real	0m0.501s
user	0m0.349s
sys	0m0.146s

@ilovezfs any idea why your version didn't do the
==> Searching for a previously deleted formula...
Error: No previously deleted formula found.

'cause that's the part that seem to take 30s. The portion of work your version seems to have done is fast on my box too.

That's what I was wondering about, if it's possible to get it to skip that.

@nrser I used the brew formula command instead of the brew info command as a workaround.

Oh, sweet, missed that.

@ilovezfs is that command internal/private? I don't see it in man brew's commands section. Use case is automation so API stability is kinda a thing.

It's in there
       formula formula
              Display the path where formula is located.

Ah there's separate "Developer commands" down there under everything else. Cool, thanks.
Assuming that's the preferred way to test for formula availability, or at least there's not problem with stuff depending on it? If the Ansible peeps are down with the change it will possibly result in some larger amount of people relying on it then at the moment.
And sorry I deleted the check list in the OP, I'll make sure to hit that stuff in the future.


@craigspaeth change marketo embedded form styling for last row 3 fields

          1 Warning

  :warning:
  Please include a PR summary

  Generated by :no_entry_sign: danger


Athena Database Connector

This is the first pull request for the Athena Database Connector #261.  A couple of notes:

I broke the Athena database connector into two files.  The first is the Athena Connector similar to the other Falcon DB Connectors which defines the standard interfaces (connect, query, tables, schema, etc).  The second file just handles the connection to Athena using the AWS SDK.  I broke this into a separate file as it made unit testing easier and also if at some point a standard NodeJS library for Athena becomes available it would be easier to replaces this.

I was not able to create an integration test for this connector as I don't have access to a Plot.ly instance of Athena.

This is my first major PR on this project so I welcome any and all comments or suggestions.

@shannonlal

I have been working my way through you comments and wanted to discuss the polling strategy. I think we should have one approach. It should either poll on a fixed interval (i.e. Polling Interval is 2000 ms and it tries every 2 seconds ) or based on a query timeout which has a fixed number of retries ( 2 minute timeout and tries every 24 seconds). I don't have a preference. Which way would you like to proceed?

The first option sounds better (more responsive from the user point of view). The second option would be an unexpected side-effect from the timeout setting.

@n-riesco Ok thanks for feed back.  I have fixed most of the issues and have add documentation on how to create a DB and Table in Athena.  I have also included a sample CSV from one of the plot.ly Postgres database.  I just have left to implement the original AWS Driver Unit Test and the new query timeout changes.  I should have the done over the next couple of days.

@n-riesco I looked at using nock but I don't think that will work.  Nock stubs out the http calls and in the example for data.world they are making http requests.  For the AWS library the calls for http or https are buried deep inside the AWS-SDK so stubbing out the http would require a lot of work.  What I could do is stub out the calls to the AWS Athena Client.  So that when the driver makes a call to AWS Athena Client (startQueryExecution, getQueryExecution, etc) I could mock the Athena Client code and make sure that the AWS Athena Driver handles the different response conditions.

@shannonlal

I looked at using nock but I don't think that will work. Nock stubs out the http calls and in the example for data.world they are making http requests. For the AWS library the calls for http or https are buried deep inside the AWS-SDK so stubbing out the http would require a lot of work.

Don't worry about it now. If you give us a link with the instructions to setup the Athena test service, I'll get someone from Plotly to set it up, and then you can update the specs accordingly

@n-riesco I checked in a bunch fixes based on your comments.  The Redshift tests are failing but I noticed that you already have a PR out for that.  I have included a document on how to create an Athena DB and table with sample data.  As a note, the documentation and online tutorials for this through the console are really good so I kept my instructions simple and in MD format.  I think the only thing I am missing is the Athena Integration tests

@shannonlal Could you move connection-configuration/athena/SETUP_ATHENA.md into test/athena/SETUP_ATHENA.md please? We have similar instructions for other test DB servers under test/docker.
On Monday, I'll get someone to have a look at SETUP_ATHENA.md and let you know when the Athena test service is setup.

@n-riesco Thanks in advance for all your comments on the code review.  It is extensive, but hopefully we are working towards building something very stable.  I assume there will be other cases that come up when other users start working with Athena so you can shoot them my way.

@shannonlal

I assume there will be other cases that come up when other users start working with Athena so you can shoot them my way.

I'd welcome help with maintaining Falcon. If you're up for it, I'll add you to the list of maintainers and have you granted merge rights.
As a maintainer, you'd be able to review other people's PRs and merge them (if they come from contributors that don't have merge rights).
With the experience you already have, you could perfectly review PRs that contribute new connectors and tests.
Please, let me know if you'd like that.

@n-riesco Sounds great.  Love to help out.  Do you have a road map or a list of issues that are higher priorities?  There are a couple of things on Elastic Search that I would like to clean up.  Specifically look at that port issue #316, #317 and maybe update the UI so that you can define Elastic Search queries (currently we are just querying all results based on the Index and Type).

@shannonlal I mean to address #316 and #317 in #343 (which is top on my list of things to do).
At the moment, I'm working on getting the Elasticsearch test server into a docker container. I'm hoping to finish that on Monday (provided I don't get sidetracked by anything else :( ).
Did you see my question here?

@shannonlal if you feel like taking over #343, I'm OK with that.

@n-riesco Do you want to merge these changes in now or should I wait until I get the test Athena account setup to finish off the Integration testing.  Either way doesn't bother me.  If you want to merge now, you can just create another issue for Athena Integration tests and assign it to me.

@shannonlal No, not really, I don't want to merge new functionality without testing.
I'm really sorry it's taking us so long to setup the test Athena service.

@n-riesco No worries.  I just wanted to make sure that you weren't waiting on me to get this PR merged.

@n-riesco  Just as an FYI I am based out of Montreal.  So if the Plot.ly folks want I can swing by their office in the mile end and walk them through creating the table in Athena if this will help move this along.  Just a thought.

@shannonlal I'm forwarding your message. Again, sorry about the delay.

Hey @shannonlal - thanks for the offer. I just invited the hotmail address in your bio to Plotly's slack if you want to coordinate there. You're welcome by the office anytime!

@n-riesco I just pulled in the latest changes from the master branch into this PR.  I am looking at the comments we discussed about this morning

@shannonlal OK, I'll be online here and on slack. Please, ping me, if anything needs clarification.

@n-riesco .  I just wanted to summarize your PR comments into one location.  Can you let me know if the following changes to this PR make sense:

get rid of createAthenaClient: https://github.com/shannonlal/falcon-sql-client/blob/90842418006c35bd9b28f5c6ea2d84637a9887bf/backend/persistent/datastores/drivers/athena.js#L15-L30

create AWS.Athena inside connect

things would be easier if the connection object and the config used in new AWS.Athena(config) were the same

get rid of these checks https://github.com/shannonlal/falcon-sql-client/blob/90842418006c35bd9b28f5c6ea2d84637a9887bf/backend/persistent/datastores/athena.js#L29-L51 (AWS.Athena(config) already checks for those missing properties).

For the datastore.athena.test.js add unit tests for the following methods:connect, tables, schemas, and query

Does this make sense?

@shannonlal :+1:

:dancer:

I'm getting the following error.
HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: varchar type is specified without length: varchar (Service: null; Status Code: 0; Error Code: null; Request ID: null)
What is the solution for this?

Can you provide a little bit more information on how you got the error and someone else can reproduce.  Also, are you able to submit any queries?
Shannon
Sent from my iPhone
On Feb 2, 2020, at 8:22 AM, Srikanth Gadicherla<EMAIL_ADDRESS>wrote:

I'm getting the following error.
HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: varchar type is specified without length: varchar (Service: null; Status Code: 0; Error Code: null; Request ID: null)
What is the solution for this?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHubhttps://github.com/plotly/falcon/pull/352?email_source=notifications&email_token=AASYB23YGICE2TRSSX3JTU3RA3CITA5CNFSM4ENDY66KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKRWWAI#issuecomment-581135105, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AASYB25PSA24XRAZZJCO5BTRA3CITANCNFSM4ENDY66A.

Hi,
I get this error when I try to connect the Athena database. I have attached
the screenshot. Kindly help me out.
best regards,
Srikanth Gadicherla
MSc Machine Learning
On Sun, Feb 2, 2020 at 3:25 PM Shannon Lal<EMAIL_ADDRESS>wrote:

Can you provide a little bit more information on how you got the error and
someone else can reproduce. Also, are you able to submit any queries?
Shannon
Sent from my iPhone
On Feb 2, 2020, at 8:22 AM, Srikanth Gadicherla<EMAIL_ADDRESS>wrote:

I'm getting the following error.
HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: varchar
type is specified without length: varchar (Service: null; Status Code: 0;
Error Code: null; Request ID: null)
What is the solution for this?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub<
https://github.com/plotly/falcon/pull/352?email_source=notifications&email_token=AASYB23YGICE2TRSSX3JTU3RA3CITA5CNFSM4ENDY66KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKRWWAI#issuecomment-581135105>,
or unsubscribe<
https://github.com/notifications/unsubscribe-auth/AASYB25PSA24XRAZZJCO5BTRA3CITANCNFSM4ENDY66A>.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/plotly/falcon/pull/352?email_source=notifications&email_token=AD5TT3P2SOH3MLTAE33SPHLRA3CTBA5CNFSM4ENDY66KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKRWYBA#issuecomment-581135364,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD5TT3PJ2KTWPV4P5FEAYQLRA3CTBANCNFSM4ENDY66A
.

Hi, i have the same problem: HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: varchar type is specified without length: varchar (Service: null; Status Code: 0; Error Code: null; Request ID: null)
from glue i created a crawler for a table in Aurora MySQL with a column varchar(50), into the crawler has been set like string and an error appear running an athena query:
HIVE_METASTORE_ERROR: unable to create input format
so i changed the data type varchar into the crawler but i can't specify the length.
There are any news?

I tried with a simple Aurora table within a single field of type int, the error is the previous first:
HIVE_UNKNOWN_ERROR: Unable to create input format
running the crawler it found the new table and from Athena it appear running show tables.
Maybe the problem can be in the empty "Edit table details"??
Thanks

link to resolve the error "unable to create input format" in Athena: https://aws.amazon.com/premiumsupport/knowledge-center/athena-unable-to-create-input-format/


 I think this is at least somewhat related to the theme I'm using, which can be found here. This problem typically, although not exclusively happens when the chat window is sized such that there is no scrollbar.
I tried changing this code, changing the 30 and 40 both to 60, which has stopped the chat window from loading such that it is impossible to scroll, but I still have the problem that scrolling up does not always load the scrollback.
Resizing my browser window vertically consistently "fixes" the issue, and clicking on a different channel then back on the original channel occasionally fixes it.
My screen is 1920x1080, although browser chrome takes up some of that space.
To Reproduce
Steps to reproduce the behavior:

Install theme linked above
Click on a channel
Attempt to scroll up
Scrollback does not load

Expected behavior
Scrollback loads.
Screenshots

(note that there is no scrollbar in the image)
Environment:

OS: NixOS Linux
Browser: Firefox 84.0.2
Version: v5.11

Oh, something important to add: I have the "Enable compact message display" setting enabled.

Oh, something important to add: I have the "Enable compact message display" setting enabled.

This will be part of the 5.23 release.


Drill acts like it's out of power after one use specifically on dedicated servers

I personally haven't tested this much as I'm not the server op for my friend group's server, but using the drill to break any block, regardless of its current CF causes it to act like it's out of power and refuse to break any more unless I shift it in my inventory, presumably refreshing its CF and making it think it's active again.
Even stranger, watching someone else use the drill shows the block almost breaking as if the server's reporting it is correctly breaking the block.
I tried to replicate this in a singleplayer world both with and without LAN active but couldn't, even with crafting/creativing in the same color drill.
This was happening on the latest released version, <IP_ADDRESS> running on NeoForge 1.20.1.
Our mod list is: https://hastebin.skyra.pw/oxururiniq.md

Try with forge 1.20.1 instead. NeoForge is no longer supported for 1.20.1, and every 1.20.1 NeoForge mod works on forge anyways

I'll go test it out.

I can confirm I also experience this in a dedicated server that I host on 1.20.1. It only works for one use, then I have to remove it from the offending slot to get another use. It's a shame since I really like this mod.


Permission error using Postgres16.1

Problem
Getting permission error in Postgres when running 'nautobot-server migrate' on new installation of nautobot.
Environment

Nautobot version (Docker tag too if applicable): 2.1.1
Python version: 3.11.5
Database platform, version: Postgres 16.1
Middleware(s):

Steps to Reproduce

Install Nautobot System Dependencies
Use Postgres 16.1
Run 'nautobot-server migrate'

I'm getting a permission error below:
$ nautobot-server migrate
Operations to perform:
Apply all migrations: admin, auth, circuits, contenttypes, database, dcim, django_celery_beat, django_celery_results, extras, ipam, sessions, social_django, taggit, tenancy, users, virtualization
Running migrations:
Traceback (most recent call last):
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.InsufficientPrivilege: permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigserial NOT NULL PR...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/migrations/recorder.py", line 68, in ensure_schema
editor.create_model(self.Migration)
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/base/schema.py", line 345, in create_model
self.execute(sql, params or None)
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/base/schema.py", line 145, in execute
cursor.execute(sql, params)
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/utils.py", line 79, in _execute
with self.db.wrap_database_errors:
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/utils.py", line 90, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.ProgrammingError: permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigserial NOT NULL PR...
^
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/nautobot/bin/nautobot-server", line 8, in
sys.exit(main())
^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/nautobot/core/cli/init.py", line 52, in main
run_app(
File "/opt/nautobot/lib64/python3.11/site-packages/nautobot/core/runner/runner.py", line 297, in run_app
management.execute_from_command_line([runner_name, command, *command_args])
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/init.py", line 419, in execute_from_command_line
utility.execute()
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/init.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/base.py", line 398, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/base.py", line 89, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/django/core/management/commands/migrate.py", line 244, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/migrations/executor.py", line 91, in migrate
self.recorder.ensure_schema()
File "/opt/nautobot/lib64/python3.11/site-packages/django/db/migrations/recorder.py", line 70, in ensure_schema
raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigserial NOT NULL PR...
^
)
Workaround
As workaround thanks to Jeffrey, added these extra commands in Postgres:
GRANT USAGE ON SCHEMA public TO nautobot;
ALTER DATABASE nautobot OWNER TO nautobot;
Reference: https://stackoverflow.com/questions/67276391/why-am-i-getting-a-permission-denied-error-for-schema-public-on-pgadmin-4

Huh, I thought we'd addressed this in #4730 already for Postgres 15. I guess Postgres 16 changes the requirements a bit further?

Testing results
Postgres 14
Using original schema (no GRANT CREATE ON SCHEMA public TO nautobot;)
postgres=# CREATE DATABASE nautobot;
CREATE DATABASE
postgres=# CREATE USER nautobot WITH PASSWORD 'secret';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
GRANT
postgres=# \q

Migrations ran successfully
Postgres 15
Add GRANT CREATE ON SCHEMA public TO nautobot; while connected to postgres database
postgres=# CREATE DATABASE nautobot;
CREATE DATABASE
postgres=# CREATE USER nautobot WITH PASSWORD 'secret';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
GRANT
postgres=# GRANT CREATE ON SCHEMA public TO nautobot;
GRANT
postgres=# \q

Migrations fail:
    raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigserial NOT NULL PR...

Add GRANT CREATE ON SCHEMA public TO nautobot; while connected to nautobot database
postgres=# \c nautobot
You are now connected to database "nautobot" as user "postgres".
nautobot=# GRANT CREATE ON SCHEMA public TO nautobot;
GRANT

Migrations ran successfully. Also confirmed that the GRANT CREATE ON SCHEMA public TO nautobot; on the postgres database was not required.
Postgres 16
Schema from Postgres 15 used
postgres=# CREATE DATABASE nautobot;
CREATE DATABASE
postgres=# CREATE USER nautobot WITH PASSWORD 'secret';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
GRANT
postgres=# \c nautobot
You are now connected to database "nautobot" as user "postgres".
nautobot=# GRANT CREATE ON SCHEMA public TO nautobot;
GRANT
nautobot=# \q

Migrations ran successfully. This confirms that #5175 will fix this issue.


Fix autodetection of current RKE2

Previously based on the kube-system/rke2 ConfigMap, but in current RKE2 the above ConfigMap no longer exists.  We leave that code in place in case there are variants where it is useful, but check also for the RKE2 DNS service - which is especially relevant because one of the main uses of the RKE2 autodetection is to set DNS config.
Description

For PR author

[ ] Tests for change.
[ ] If changing pkg/apis/, run make gen-files
[ ] If changing versions, run make gen-versions

For PR reviewers
A note for code reviewers - all pull requests must have the following:

[ ] Milestone set according to targeted release.
[ ] Appropriate labels:

kind/bug if this is a bugfix.
kind/enhancement if this is a a new feature.
enterprise if this PR applies to Calico Enterprise only.

Testing with this image, I now see
{"level":"info","ts":"2024-02-13T17:56:58Z","logger":"setup","msg":"Checking type of cluster","provider":"RKE2"}

in the operator logs.


Ftatarli argentina holidays

This PR completes and thus, closes #419

[x] Tests with a significant number of years to be tested for your calendar.
[x] Docstrings for the Calendar class and specific methods.
[x] Use the workalendar.registry_tools.iso_register decorator to register your new calendar using ISO codes (optional).
[x] Calendar country / label added to the README.rst file.
[x] Changelog amended with a mention like: "Added <country> by @pseudo (#)". Note Please do NOT change the version number here. It's the project maintainers' duty.

@ftatarli can you please have a look at this branch? I've added a few improvements.

Good catch @brunobord. Thank you for your support !!


Quagga.stop not working

Hi Eric could you please help why quagga.stop() not stopping the camera  ,it starts fine  but after start we can't stop it ,need your prompt support

When I've encountered this it's always been some code outside of Quagga that is doing something that prevents the browser from detaching the camera.  What is your code doing when you stop?

I think you resolved this issue in quagga 2 ,I am using quagga 1 what do
you  think If I move to quagga 2 ,will it resolved
Plz reply I am fully dependent on your views
On Fri, Dec 22, 2023, 9:52 PM Eric Blade @.***> wrote:

When I've encountered this it's always been some code outside of Quagga
that is doing something that prevents the browser from detaching the
camera. What is your code doing when you stop?
—
Reply to this email directly, view it on GitHub
https://github.com/ericblade/quagga2/issues/529#issuecomment-1867891287,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMACQUTR4RQDEHYDO76A24DYKW3DHAVCNFSM6AAAAABA7P3Q26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRXHA4TCMRYG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

I don't know, you could try it, it's a drop-in replacement.  If you show your code, that might help figure out what you're doing

When I personally had this issue, it was calling stop in React unmount, but then the component was being immediately remounted again then unmounted, due to some weird animation interaction.  Difficult to say what yours is doing without seeing code.  The other example you commented on, the stop call is never even being hit, because their code just errors.

Ok, thanks for the reply.
import React, { useEffect } from "react";
import Quagga from "quagga"; it in
import config from "./../../config.json";
const Scanner = (props) => {
const { onDetected } = props;
useEffect(() => {
Quagga.init(config, (err) => {

  if (err) {

    console.log(err, "error msg");

  }

  Quagga.start();

  return () => {

    Quagga.stop();

  };

});

//detecting boxes on stream

Quagga.onProcessed((result) => {

  var drawingCtx = Quagga.canvas.ctx.overlay,

    drawingCanvas = Quagga.canvas.dom.overlay;

  if (result) {

    if (result.boxes) {

      drawingCtx.clearRect(

        0,

        0,

        Number(drawingCanvas.getAttribute("width")),

        Number(drawingCanvas.getAttribute("height"))

      );

      result.boxes

        .filter(function (box) {

          return box !== result.box;

        })

        .forEach(function (box) {

          Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, {

            color: "green",

            lineWidth: 2,

          });

        });

    }

    if (result.box) {

      Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 },

drawingCtx, {
        color: "#00F",

        lineWidth: 2,

      });

    }

    if (result.codeResult && result.codeResult.code) {

      Quagga.ImageDebug.drawPath(

        result.line,

        { x: "x", y: "y" },

        drawingCtx,

        { color: "red", lineWidth: 3 }

      );

    }

  }

});

Quagga.onDetected(detected);

}, []);
const detected = (result) => {
onDetected(result.codeResult.code);

};
return (
// If you do not specify a target,

// QuaggaJS would look for an element that matches

// the CSS selector #interactive.viewport

);
};
export default Scanner;
This is scanner component
Calling like that
{IsScannerVIsible && }
On Fri, Dec 22, 2023, 10:08 PM Eric Blade @.***> wrote:

When I personally had this issue, it was calling stop in React unmount,
but then the component was being immediately remounted again then
unmounted, due to some weird animation interaction. Difficult to say what
yours is doing without seeing code. The other example you commented on, the
stop call is never even being hit, because their code just errors.
—
Reply to this email directly, view it on GitHub
https://github.com/ericblade/quagga2/issues/529#issuecomment-1867905642,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMACQUWYQTA4I2KKCNM6NA3YKW5BVAVCNFSM6AAAAABA7P3Q26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRXHEYDKNRUGI
.
You are receiving this because you authored the thread.Message ID:
@.***>

If you re-format your code so it's indented properly
import React, { useEffect } from "react";

import Quagga from "quagga";

import config from "./../../config.json";

const Scanner = (props) => {
  const { onDetected } = props;

  useEffect(() => {
    Quagga.init(config, (err) => {
      if (err) {
        console.log(err, "error msg");
      }

      Quagga.start();

      return () => {
        Quagga.stop();
      };
    });

    //detecting boxes on stream

    Quagga.onProcessed((result) => {
      var drawingCtx = Quagga.canvas.ctx.overlay,
        drawingCanvas = Quagga.canvas.dom.overlay;

      if (result) {
        if (result.boxes) {
          drawingCtx.clearRect(
            0,

            0,

            Number(drawingCanvas.getAttribute("width")),

            Number(drawingCanvas.getAttribute("height")),
          );

          result.boxes

            .filter(function (box) {
              return box !== result.box;
            })

            .forEach(function (box) {
              Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, {
                color: "green",

                lineWidth: 2,
              });
            });
        }

        if (result.box) {
          Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, {
            color: "#00F",

            lineWidth: 2,
          });
        }

        if (result.codeResult && result.codeResult.code) {
          Quagga.ImageDebug.drawPath(
            result.line,

            { x: "x", y: "y" },

            drawingCtx,

            { color: "red", lineWidth: 3 },
          );
        }
      }
    });

    Quagga.onDetected(detected);
  }, []);

  const detected = (result) => {
    onDetected(result.codeResult.code);
  };

  return (
    // If you do not specify a target,

    // QuaggaJS would look for an element that matches

    // the CSS selector #interactive.viewport

  );
};

export default Scanner;

You can see on line 18, you are returning the closure that calls Quagga.stop() from Quagga.init() but you need to be returning it from useEffect().  Probably that whole remainder of that block is in the wrong scope, too.
Your Quagga.stop is never being hit.
You should work to improve your code formatting, so errors like that are more visible when looking at it.  Also, if you used a debugger breakpointed at the stop() call, you would see that it was never being hit .. or just using a console.log() before it.

Thank you so much bro
I made my mistake your code is working fine ,strict mode was on ,It hits
twice  in local that was the reason,
Thank you so much for you reply ,I really appreciate it
On Sat, Dec 23, 2023, 9:51 PM Eric Blade @.***> wrote:

If you re-format your code so it's indented properly
import React, { useEffect } from "react";
import Quagga from "quagga";
import config from "./../../config.json";
const Scanner = (props) => {
const { onDetected } = props;
useEffect(() => {
Quagga.init(config, (err) => {
if (err) {
console.log(err, "error msg");
}
  Quagga.start();

  return () => {
    Quagga.stop();
  };
});

//detecting boxes on stream

Quagga.onProcessed((result) => {
  var drawingCtx = Quagga.canvas.ctx.overlay,
    drawingCanvas = Quagga.canvas.dom.overlay;

  if (result) {
    if (result.boxes) {
      drawingCtx.clearRect(
        0,

        0,

        Number(drawingCanvas.getAttribute("width")),

        Number(drawingCanvas.getAttribute("height")),
      );

      result.boxes

        .filter(function (box) {
          return box !== result.box;
        })

        .forEach(function (box) {
          Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, {
            color: "green",

            lineWidth: 2,
          });
        });
    }

    if (result.box) {
      Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, {
        color: "#00F",

        lineWidth: 2,
      });
    }

    if (result.codeResult && result.codeResult.code) {
      Quagga.ImageDebug.drawPath(
        result.line,

        { x: "x", y: "y" },

        drawingCtx,

        { color: "red", lineWidth: 3 },
      );
    }
  }
});

Quagga.onDetected(detected);

}, []);
const detected = (result) => {
onDetected(result.codeResult.code);
};
return (
// If you do not specify a target,
// QuaggaJS would look for an element that matches

// the CSS selector #interactive.viewport

);
};
export default Scanner;
You can see on line 18, you are returning the closure that calls
Quagga.stop() from Quagga.init() but you need to be returning it from
useEffect(). Probably that whole remainder of that block is in the wrong
scope, too.
Your Quagga.stop is never being hit.
You should work to improve your code formatting, so errors like that are
more visible when looking at it. Also, if you used a debugger breakpointed
at the stop() call, you would see that it was never being hit .. or just
using a console.log() before it.
—
Reply to this email directly, view it on GitHub
https://github.com/ericblade/quagga2/issues/529#issuecomment-1868329992,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMACQUXOI6JQUCC2QXA2QSDYK4DYFAVCNFSM6AAAAABA7P3Q26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRYGMZDSOJZGI
.
You are receiving this because you authored the thread.Message ID:
@.***>


Release API plugin

Description of changes

Auto-Populate owner field if user is authorized via static auth checks
Cpk preprocess sort keys
Remove dictionary references from our scripts
Support credentials for lambda client
Remove gqlSchemaPath in cli-inputs.json

Issue #, if available

Description of how you validated changes
Checklist

[x] PR description included
[x] yarn test passes
[x] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)
[ ] New AWS SDK calls or CloudFormation actions have been added to relevant test and service IAM policies

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

:exclamation: No coverage uploaded for pull request base (release@a8df6c0). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             release     #661   +/-   ##
==========================================
  Coverage           ?   63.15%
==========================================
  Files              ?      278
  Lines              ?    18126
  Branches           ?     4375
==========================================
  Hits               ?    11447
  Misses             ?     6092
  Partials           ?      587

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Add guided JSON completion

Look at https://github.com/normal-computing/outlines#efficient-json-generation-following-a-pydantic-model

@VictorOdede can you put the pull request that closes this ticket here?

@VictorOdede can you put the pull request that closes this ticket here?

Closed by https://github.com/anarchy-ai/LLM-VM/pull/154


Add section title to top of left nav/sidebar to help orient user

Add section title/doc instance name to top of left nav/sidebar for the following sections:

Client SDK
Dev concepts
Community
Vision

This will help orient the user on the site. For example, I select Documentation > Development concepts from the top nav/nav bar. I land on the Introduction to XMTP page, however there is no indication that I am in the Development concepts section of the site. We need to be able to show this information to the user.

Here is a ROUGH wireframe of what I'm talking about:

Alternatively, it looks like Docusaurus is very close to adding the ability to add the doc instance title to the breadcrumb! https://github.com/facebook/docusaurus/issues/6953
Do we think it is enough to provide this in the breadcrumb and therefore we don't need to add this title to the left nav/sidevbar? Or do we want to provide both?

J-Ha to map out current and planned IA of the site to see if both kebab and hamburger menus will be useful for mobile use.

Also need to think about how to display this info on mobile. Maybe not necessary?

Obsolete


Publish as ag-grid on npm?

I'm not sure if you are aiming for ag-grid or angular-grid, but I noticed that ag-grid is open on npm. Would you want to publish it there for consistency with bower (See #49), the github repo, and new website?

the first ag-grid release will be happening today (i am in the middle of a name change). it will be pushed then. sorry for the confusion, once i get this release out of the way, all confusion should be gone as it's ag-grid everywhere and bye bye angular-grid.
btw, website is also changing, will be ag-grid in the next few hours!

2.0.0 is now released and published to npm.
can you please verify?

may be http://www.angulargrid.com/forum/ link to http://www.ag-grid.com/forum/ in website too?

yes i noticed something odd here, so i've the forum on www.angulargrid.com only now (or at least, all the links point to here, even if coming from ag-grid.com)

@ceolter, not sure i should raise new issue, but I can't get rowClass (with function params) work with 2.0 version with angular 1.x. its warn to use getRowClass, but getRowClass don't have params and tried getRowClassFunc, but can't get it work somehow. still reading into source.


fix: baidu_ip lookups require 'geocoder/lookups/baidu'

What's the reason for this? Are you getting an error?

Yes, get following error
NameError: uninitialized constant Geocoder::Lookup::Baidu
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/lookups/baidu_ip.rb:5:in `<module:Lookup>'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/lookups/baidu_ip.rb:4:in `<top (required)>'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/lookup.rb:101:in `spawn'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/lookup.rb:88:in `get'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/query.rb:40:in `lookup'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder/query.rb:11:in `execute'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/bundler/gems/geocoder-22cc267cf5fe/lib/geocoder.rb:22:in `search'
	from (irb):1
	from /Users/Cain/.rvm/gems/ruby-2.3.1/gems/railties-4.2.6/lib/rails/commands/console.rb:110:in `start'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in `start'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:68:in `console'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
	from /Users/Cain/.rvm/gems/ruby-2.3.1/gems/railties-4.2.6/lib/rails/commands.rb:17:in `<top (required)>'
	from bin/rails:4:in `require'
	from bin/rails:4:in `<main>'


Same as #101


Print one . character per test instead of one line

./miri bless -- --quiet now prints a dot per test, along with the regular Rust unit tests that listen to this flag

:umbrella: The latest upstream changes (presumably #2373) made this pull request unmergeable. Please resolve the merge conflicts.

@rustbot author

@bors r+

:pushpin: Commit ecacc56843ae0bd1ba264a9abf95c31ee66a9f8b has been approved by oli-obk
It is now in the queue for this repository.

:hourglass: Testing commit ecacc56843ae0bd1ba264a9abf95c31ee66a9f8b with merge 3800933ff00dec0086e379856eb4adac8f890a47...

:sunny: Test successful - checks-actions
Approved by: oli-obk
Pushing 3800933ff00dec0086e379856eb4adac8f890a47 to master...


Implement CI with Github Actions

Set up Continuous Integration using GitHub Actions or Travis CI.
A simple pipeline is a good starting point. THIS is a good article.

TODO. We will probably start doing this once we have a work prototype of the app in Dev. Then set up CI/CD when we find our deployment system.


Gcode::number using f32 is confusing

For most of Gcode commands, the number after the comma is not used after I checked the spec.
I read in other issues that you have chosen f32 by simplicity, but it is kind of weird to compare on a f32 for this field. Especially when you know how strange floats can behave, for example getting sometimes 2.99999999 instead of 3. This makes programmer have to check Gcode like this:
if line.number() < 2.5 and line.number() > 1.5 {
    ...
}

Floats are fine for coordinates when we can tolerate float approximations, but for exact values we should be cautious. It is know dangerous to compare floats like this:
if line.number() == 2.0 {
    ...
}

I propose to convert number() to u8 and introduce minor_number() that is u8 too if you find this appropriate.

Have you seen Gcode::major_number() and Gcode::minor_number()?
That said, I think you're right that Gcode::number() is unintuitive. It should really be deprecated/removed seeing as you almost never want to treat the 1.1 in G1.1 as a float anyway... The underlying number field should be changed to (u8, Option<u8>) to avoid those sticky rounding errors.


use train as gem name. Thanks @halo

Special thanks to @halo who was so kind to hand over his gem name!

Huge kudos @halo !! :tada:


Fix tests

This fixes the unit tests to be compatible with latest versions of recurly. (https://github.com/Captricity/mocurly/issues/10)
In the process, I learned that this is not compatible with httpretty>0.8.10, so restrict that for now. See https://github.com/Captricity/mocurly/issues/13 for more info.
Finally, updated the tox files to include additional environments that we don't currently support, but can work towards supporting.

Merging