feat: db and collection name tags in traces

DB and collection name in traces

Codecov Report

Merging #402 (7d9ba48) into main (da1ccdf) will decrease coverage by 0.17%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main     #402      +/-   ##
==========================================
- Coverage   28.09%   27.92%   -0.18%
==========================================
  Files          71       71
  Lines        7616     7664      +48
==========================================
  Hits         2140     2140
- Misses       5242     5290      +48
  Partials      234      234

Impacted Files
Coverage Δ

server/metrics/requests.go
51.51% <0.00%> (-10.68%)
:arrow_down:

server/metrics/tracing.go
0.00% <0.00%> (ø)

server/middleware/tracing.go
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

This needed a refactoring on metrics. Changes related to that:

Everything is gated on tracing.enabled, if it's enabled, there are traces and metrics, if not, they are not. We can make it more granular in the future if needed.
Child traces always have a superset of it's parent trace's tags.
Metric tags and trace span tags are now from the same source and they are consistent.
Tags always include the namespace, the db name and the collection name.


Delta cannot be found by ScaleUpdateDetails after update 2.8

Steps to Reproduce

Execute flutter run on the code sample
...
...

Expected results:
Actual results:

Code sample

Logs

Hi @jahnli, this change is intended. Kindly see https://github.com/flutter/flutter/pull/85718#discussion_r662581303
You should use focalPointDelta instead.
Closing as this is an intended change.


Patch for https://github.com/mitchellh/vagrant-aws/issues/250

This patch adds an extra configuration parameter for https://github.com/mitchellh/vagrant-aws/issues/250 which occurs when using the non-default VPC reliably for our deployments.
The default behaviour remains as is, but adding the additional flag prevents the de-register which allows the destroy phase to succeed.

:+1:

Aside from the awkward casing, this is looking good.

I've added a commit to resolve the case handling


Error Message when clicking the Pathfinder plugin.

Does anyone know how to get around this?

https://github.com/center-for-threat-informed-defense/caldera_pathfinder/issues/64


Rebuild aur packages only when there are new changes

Hello,
I want to ask, if there is such combination of parameters of pacaur that aur package is rebuild only when is needed? (when there is some new changes, commits in repository)
I tried the combination pacaur -Syu --noconfirm --noedit --devel --needed but it's not rebuilt the package, where there is new change in repository.
And without --needed parameter pacaur -Syu --noconfirm --noedit --devel, all aur packages are rebuilt

If PKGBUILDs are correctly written, then --devel --needed is what you re looking for.


bulkCopyToSqlDB Table Needs to Already Exist?

Does the destination table in the bulk copy need to exist prior to the operation?
org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 238.0 failed 4 times, most recent failure: Lost task 3.3 in stage 238.0 (TID 2269, <IP_ADDRESS>, executor 0): com.microsoft.sqlserver.jdbc.SQLServerException: Unable to retrieve column metadata.
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.getDestinationMetadata(SQLServerBulkCopy.java:1777)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.writeToServer(SQLServerBulkCopy.java:1676)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.writeToServer(SQLServerBulkCopy.java:669)
at com.microsoft.azure.sqldb.spark.connect.DataFrameFunctions.com$microsoft$azure$sqldb$spark$connect$DataFrameFunctions$$bulkCopy(DataFrameFunctions.scala:127)
at com.microsoft.azure.sqldb.spark.connect.DataFrameFunctions$$anonfun$bulkCopyToSqlDB$1.apply(DataFrameFunctions.scala:72)
at com.microsoft.azure.sqldb.spark.connect.DataFrameFunctions$$anonfun$bulkCopyToSqlDB$1.apply(DataFrameFunctions.scala:72)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:951)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:951)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2284)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2284)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
at org.apache.spark.scheduler.Task.doRunTask(Task.scala:139)
at org.apache.spark.scheduler.Task.run(Task.scala:112)
at org.apache.spark.executor.Executor$TaskRunner$$anonfun$13.apply(Executor.scala:497)
at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1526)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:503)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'ETL.Dim_SKU_Update6'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)

when the target db table doesn't already exist it will be created when this is executed:
df.bulkCopyToSqlDB(writeConfig, createTable = true)
however any columns in the dataframe schema that are StringType will manifest as nvarchar which presents a problem if you then try to make nonclustered indexes on those fields in the db.
the solution i've landed on [still a work in progress] is to predefine the target tables in the db and then wrangle the datatypes as best as possible.
also using page compression on the tables after the fact [regardless of approach] to sort performance out a bit further.

@InterruptSpeed , does it still do nvarchar(max) if you specify the BulkCopyMetadata?

thats a good question. i'll have to give it a try and see. will get back to you.

I tested it.  It still did nvarchar(max)

yikes. ok thanks for the follow-up.

@InterruptSpeed , do you know if there is a way to overwrite?

not that I know of with this library.
originally I was using plain-old JDBC which let me truncate the table prior to load but with this one I haven't come across an option to do that. current [work in progress] game plan is to use JDBC to invoke a stored procedure that drops existing tables [and indexes] then creates empty tables all prior to doing the bulk load. then post load invoke another stored proc to build indexes and apply page compression.

How did you go with this? I'm implementing SQL call to truncate the target table first, as soon as I work out the scala incantation required to add a "queryCustom" element to the config

my typical scala notebook uses pyodbc to invoke a sp_pre_refresh stored proc [which drops tables in order to remove the indexes as well, rather than truncate], then the notebook does the bulk inserts, then it uses pyodbc to invike sp_post_refresh stored proc to rebuild indexes. the whole thing works reliably but sure does feel like work. in my case i'm targeting a sql server instance so the top of the notebook starts with a bash block to apt-get install the proprietary drivers pyodbc needs to connect to the sql server.

my typical scala notebook uses pyodbc to invoke a sp_pre_refresh stored proc [which drops tables in order to remove the indexes as well, rather than truncate, and then recreates the tables], then the notebook does the bulk inserts, then it uses pyodbc to invike sp_post_refresh stored proc to rebuild indexes. the whole thing works reliably but sure does feel like work. in my case i'm targeting a sql server instance so the top of the notebook starts with a bash block to apt-get install the proprietary drivers pyodbc needs to connect to the sql server.

It does seem like a lot of work but it's not too different from standard ELT process of drooping indexes, loading, recreating, although you could probably disable and rebuild, and then at least you don't need to preserve that actual index creation script with columns and stuff. You could even cycle through metadata to do it.

I think there are reasonable suggestions on this thread from the community. Thank you all for contributing your advice. Closing this issue.


Interactive Beam -- display issue: number of PTransform executed wrongly displayed

The main focus of this PR is to fix the display issue -- the number of PTransform executed is wrongly displayed.

"Executing 8 of 3 transforms" now becomes "Executing 3 of 3 transforms".

Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

It will help us expedite review of your Pull Request if you tag someone (e.g. @username) to look at it.
 Can you review this for me?

Added two small comments. LGTM.

Thank you Sindy. It seems that the Beam  community expects merged PRs to have a JIRA associated to them. Sorry about the trouble, but could you add one?

This PR broke Python precommits (task :beam-sdks-python:lintPy27_3).
https://github.com/apache/beam/pull/6489 was merged just before this PR.


can't connect with browser or mstsc (windows)

first off, can I disable openid? I just want a simple rdpgw I can install standalone on jump box

docs:  key(s) in rdpgw.yaml should be only 32 characters - I got an error about crypto/aes key being 33

I downloaded rdpgw-1.0-stable and built rdpgw on ubuntu 20.04

I think I have openid working with Google - looks like Google part works and it redirects me. There's an auth.json with tokens in it.  But  on https://localhost:9443/connect I get

cannot find session or user
the logs show:
2020/12/10 13:53:51 Starting remote desktop gateway server
2020/12/10 13:53:56 preferred_username not found in context

I imported my self signed cert into Windows and I can connect to localhost:9443 with mstsc
mstsc prompts for RD gateway credentials - I assume I enter the google credentials here?
rdpgw logs a runtime error:

 2020/12/10 13:58:54 Client handshakeRequest from <IP_ADDRESS>
2020/12/10 13:58:54 major: 1, minor: 0, version: 0, ext auth: 0
2020/12/10 13:58:54 Tunnel create
2020/12/10 13:58:54 http: panic serving <IP_ADDRESS>:49991: runtime error: invalid memory address or nil pointer dereference
goroutine 11 [running]:
net/http.(*conn).serve.func1(0xc000438960)
        /usr/lib/go-1.13/src/net/http/server.go:1767 +0x139
panic(0xb0e100, 0x1173360)
        /usr/lib/go-1.13/src/runtime/panic.go:679 +0x1b2
github.com/bolkedebruin/rdpgw/security.VerifyPAAToken(0xcdec20, 0xc0001426f0, 0x0, 0x0, 0x3f, 0x0, 0x0)
        /home/jmorrison/rdpgw-1.0-stable/security/jwt.go:39 +0x5d
github.com/bolkedebruin/rdpgw/protocol.(*Server).Process(0xc0001b8660, 0xcdec20, 0xc0001426f0, 0x0, 0x0)
        /home/jmorrison/rdpgw-1.0-stable/protocol/server.go:89 +0xf00
github.com/bolkedebruin/rdpgw/protocol.(*Gateway).handleWebsocketProtocol(0xc00016e058, 0xcdec20, 0xc0001426f0, 0xc0002aa000, 0xc0001ba050)
        /home/jmorrison/rdpgw-1.0-stable/protocol/gateway.go:98 +0x10f
github.com/bolkedebruin/rdpgw/protocol.(*Gateway).HandleGatewayProtocol(0xc00016e058, 0xcdc6e0, 0xc000472700, 0xc0001ca500)
        /home/jmorrison/rdpgw-1.0-stable/protocol/gateway.go:84 +0x7b8
net/http.HandlerFunc.ServeHTTP(0xc0003a8640, 0xcdc6e0, 0xc000472700, 0xc0001ca500)
        /usr/lib/go-1.13/src/net/http/server.go:2007 +0x44
github.com/bolkedebruin/rdpgw/common.EnrichContext.func1(0xcdc6e0, 0xc000472700, 0xc0001ca200)
        /home/jmorrison/rdpgw-1.0-stable/common/remote.go:41 +0x41a
net/http.HandlerFunc.ServeHTTP(0xc000416940, 0xcdc6e0, 0xc000472700, 0xc0001ca200)
        /usr/lib/go-1.13/src/net/http/server.go:2007 +0x44
net/http.(*ServeMux).ServeHTTP(0x1189140, 0xcdc6e0, 0xc000472700, 0xc0001ca200)
        /usr/lib/go-1.13/src/net/http/server.go:2387 +0x1bd
net/http.serverHandler.ServeHTTP(0xc000458000, 0xcdc6e0, 0xc000472700, 0xc0001ca200)
        /usr/lib/go-1.13/src/net/http/server.go:2802 +0xa4
net/http.(*conn).serve(0xc000438960, 0xcdeb60, 0xc0001a0240)
        /usr/lib/go-1.13/src/net/http/server.go:1890 +0x875
created by net/http.(*Server).Serve
        /usr/lib/go-1.13/src/net/http/server.go:2928 +0x384

https://github.com/bolkedebruin/rdpgw/blob/505eafdc1e403cd77a94f3f84c9529f6b61a1f2c/security/jwt.go#L35
mstsc.exe can send an empty token and cause the nil pointer
func VerifyPAAToken(ctx context.Context, tokenString string) (bool, error) {
token, err := jwt.ParseSigned(tokenString)
+//     log.Printf("  debug verify PAA token %s err %s",token, err)

  if err != nil {

          log.Printf(" tokenString = %s", tokenString )

          log.Printf(" jwt.ParseSigned() failed due to err=%s", err)

           return false, err

  }

I can connect with mstsc if I comment out the error return for invalid PAA cookie (server.go) and client host does not match token host (jwt.go)
I don't need the web tokens/oauth right now so a config option for disabling would be nice. NTLM and/or kerberos could work instead.

This is fixed in master. This was an issue with MSTSC being a bit more picky than other clients (rightfully so) on the protocol handshake. It happened when a PAA cookie was required but not send as part of the caps.


Does not compile on ESP8266 due to ArduinoMqttClient library

Does not compile on the ESP8266 due to ESP8266-specific code in the ArduinoMqttClient library.
There is a pull request fixing this issue https://github.com/arduino-libraries/ArduinoMqttClient/pull/33 . This seems to be related to the ESP8266 core 2.5.0 release, which is long outdated.
To fix this issue locally remove the ESP8266-specific code as done in the pull request.

Fixed dirty, this is only an issue when connecting to a host using its IPAddress, not via host name.
This offers a quick solution, convert the IP to a string .. not ideal but whatever.


chore: remove intl list format

What I did

removes intl-list-format for old node versions https://github.com/open-wc/open-wc/issues/2206

@thepassle did we want to move forward with this?

we just need to regenerate the lock file then we can merge this, right?

@bennypowers can you merge this when CI passes? Then we can merge your PR after


OOM but not OOM (Attempted to allocate N bytes)

Description
My node has crashed, but I don't see the crash report in the .coda-config folder :thinking:
In logs I see OOM, but according to Grafana the maximum was 17/64 GB

Environment
Git SHA-1: [DIRTY]880882e45e48aaf987aca191f488c7f65609c305
Host OS: Ubuntu 18.04
Using containerization: docker
CPU: Intel(R) Xeon(R) CPU E3-1275 v6 @ 3.80GHz
RAM: 64 GB

Steps to reproduce

Standard installation from the repository, according to the instructions from #qa-task-force pin message
Run new docker instance

docker run --name mina -d \
--restart always \
-p 8301-8305:8301-8305 \
-p <IP_ADDRESS>:3085:3085 \
-p 6060:6060 \
-v $(pwd)/keys:/root/keys:ro \
-v $(pwd)/coda-config:/root/.coda-config \
-v $(pwd)/peers.txt:/root/peers.txt \
--env CODA_PRIVKEY_PASS='12345' \
minaprotocol/mina-daemon-baked:4.1-turbo-pickles-mina880882e-autoa026dd9 daemon \
-block-producer-key /root/keys/my-wallet \
-peer-list-file /root/peers.txt \
-metrics-port 6060 \
-insecure-rest-server \
-file-log-level Debug \
-log-level Info

LOGS
https://drive.google.com/file/d/1chFyQnD3CnlU_AK2Y6ddJZpNJlDvUcD-/view?usp=sharing

2 times received the error described above and then node does not reboot more than a day

Are you sure this is not related to max ram allocated to Docker ?

Are you sure this is not related to max ram allocated to Docker ?

Are you sure this is not related to max ram allocated to Docker ?

I have not set a RAM limit

Are you sure this is not related to max ram allocated to Docker ?

I have not set a RAM limit

And here's the reason. Daemon tried to allocate 14649452 GB memory (14.63 PB)
Attempted to allocate<PHONE_NUMBER>2192538 bytesFatal error: out of memory.
Coda process exited with status code 2
+ echo 'Coda process exited with status code 2'
+ sleep 10
+ kill 14
+ '[' '!' -f stay_alive ']'
+ exit 0
+ mkdir -p .coda-config
+ touch .coda-config/coda-prover.log
+ touch .coda-config/coda-verifier.log
+ touch .coda-config/mina-best-tip.log
+ command=daemon
+ shift

And here's the reason. Daemon tried to allocate 14649452 GB memory (14.63 PB)
Attempted to allocate<PHONE_NUMBER>2192538 bytesFatal error: out of memory.
Coda process exited with status code 2
+ echo 'Coda process exited with status code 2'
+ sleep 10
+ kill 14
+ '[' '!' -f stay_alive ']'
+ exit 0
+ mkdir -p .coda-config
+ touch .coda-config/coda-prover.log
+ touch .coda-config/coda-verifier.log
+ touch .coda-config/mina-best-tip.log
+ command=daemon
+ shift

Another crash with this ~136GB
Attempted to allocate<PHONE_NUMBER>04 bytesFatal error: out of memory.

Another crash with this ~136GB
Attempted to allocate<PHONE_NUMBER>04 bytesFatal error: out of memory.

I have to some problem.
: 2021-01-17 19:08:20 UTC [Error] Duplicate producer and slot: producer = $block_producer,      block_producer: "B62qqLmebnE45d2myqMM5YNstVudto7VNzJmNNHKp4VyEmAbjXK3kRq"                   consensus_time: { "slot_number": "8637", "slots_per_epoch": "7140" }                               hash: "3NLfJ1nNhDzpkh5iuY36kh6Jo1scrqVfp73mNQbY36nP4zGPswi1"                                 current_protocol_state_hash: "3NKYqMaCHqtKYdik9yz6MJn32YvN1KVixPmW86K6PHRTiRMwsXZP"          Attempted to allocate<PHONE_NUMBER>48 bytesFatal error: out of memory.

I have to some problem.
: 2021-01-17 19:08:20 UTC [Error] Duplicate producer and slot: producer = $block_producer,      block_producer: "B62qqLmebnE45d2myqMM5YNstVudto7VNzJmNNHKp4VyEmAbjXK3kRq"                   consensus_time: { "slot_number": "8637", "slots_per_epoch": "7140" }                               hash: "3NLfJ1nNhDzpkh5iuY36kh6Jo1scrqVfp73mNQbY36nP4zGPswi1"                                 current_protocol_state_hash: "3NKYqMaCHqtKYdik9yz6MJn32YvN1KVixPmW86K6PHRTiRMwsXZP"          Attempted to allocate<PHONE_NUMBER>48 bytesFatal error: out of memory.

Same problem here with the latest build
Commit [DIRTY]a9402473584c36b347d52df4f4000b7286385987 on branch HEAD

Attempted to allocate<PHONE_NUMBER>02 bytesFatal error: out of memory.

Which is almost 128 GB

Same problem here with the latest build
Commit [DIRTY]a9402473584c36b347d52df4f4000b7286385987 on branch HEAD

Attempted to allocate<PHONE_NUMBER>02 bytesFatal error: out of memory.

Which is almost 128 GB

Another occurrence.
Attempted to allocate<PHONE_NUMBER>65 bytesFatal error: out of memory.

on version
Commit [DIRTY]a9402473584c36b347d52df4f4000b7286385987 on branch HEAD

Another occurrence.
Attempted to allocate<PHONE_NUMBER>65 bytesFatal error: out of memory.

on version
Commit [DIRTY]a9402473584c36b347d52df4f4000b7286385987 on branch HEAD

With this latest version
Commit [DIRTY]d075f83d26490f6510bbb14bbfe3c771256257b5 on branch HEAD

Had this just now
Attempted to allocate<PHONE_NUMBER>36 bytesFatal error: out of memory.

With this latest version
Commit [DIRTY]d075f83d26490f6510bbb14bbfe3c771256257b5 on branch HEAD

Had this just now
Attempted to allocate<PHONE_NUMBER>36 bytesFatal error: out of memory.

With the Encore testnet version
Commit [DIRTY]3ef86631e3a38150b5092faec47da144b0a46020 on branch HEAD

I've seen two occurrences in the past 24 hours.
Attempted to allocate<PHONE_NUMBER>80 bytesFatal error: out of memory.
Attempted to allocate<PHONE_NUMBER>44 bytesFatal error: out of memory.

On the Zenith testnet
Commit [DIRTY]245a3f7d883c516f5f16742cb1ca672872612851 on branch HEAD

got
Attempted to allocate<PHONE_NUMBER>5 bytesFatal error: out of memory.

Star.LI#0785 had this on Encore.
Attempted to allocate<PHONE_NUMBER>16 bytesFatal error: out of memory.
My node is crashed by out of memory. Anyone else has the same issue?
BTW, my node is shipped with 128G memory.

https://discord.com/channels/484437221055922177/754653322845356103/813240010231775254

I just had this on Zenith.
Commit [DIRTY]245a3f7d883c516f5f16742cb1ca672872612851 on branch HEAD

2021-02-22 03:44:04 UTC [Info] Received a block from $sender
        sender: {
  "Remote": {
    "host": "<IP_ADDRESS>",
    "peer_id": "12D3KooWH3kYuWRDnBDLn7z6xH9xTdnfRPZUDMrQYTbLnzPCZwEq",
    "libp2p_port": 8302
  }
}
Attempted to allocate<PHONE_NUMBER>54 bytesFatal error: out of memory.

Another occurrence reported on discord.
https://discord.com/channels/484437221055922177/812104065168310303/813821331606601743

I had this happen not many hours ago.
Ledger Merkle root:                            jxdBddivtWL6zZwhdBDuK9ibpngS7P4rh73FR1jcUJbXwMUvddg
Protocol state hash:                           3NLWJdXYMrUi1dQkBGvG2Hpgv6qPkXZJJyMEUDwWNBWULxwViHx3
Chain id:                                            90b71f6f798dec88a1afc825cd0b358c6d8a3ff3c0b57a7fe97412ea5a639c2b
Git SHA-1:                                         fd3980820fb82c7355af49462ffefe6718800b77
Mar  7 15:17:18 mina-testworld mina[18179]: 2021-03-07 14:17:18 UTC [Info] Received a block from $sender
Mar  7 15:17:18 mina-testworld mina[18179]: #011sender: {
Mar  7 15:17:18 mina-testworld mina[18179]:   "Remote": {
Mar  7 15:17:18 mina-testworld mina[18179]:     "host": "<IP_ADDRESS>",
Mar  7 15:17:18 mina-testworld mina[18179]:     "peer_id": "12D3KooWK1KyyDSrrtEcJvjZ56cTsMqtk46FWSuS7HpsGhUowWfh",
Mar  7 15:17:18 mina-testworld mina[18179]:     "libp2p_port": 8302
Mar  7 15:17:18 mina-testworld mina[18179]:   }
Mar  7 15:17:18 mina-testworld mina[18179]: }
Mar  7 15:17:20 mina-testworld mina[18179]: 2021-03-07 14:17:20 UTC [Info] Received a block from $sender
Mar  7 15:17:20 mina-testworld mina[18179]: #011sender: {
Mar  7 15:17:20 mina-testworld mina[18179]:   "Remote": {
Mar  7 15:17:20 mina-testworld mina[18179]:     "host": "<IP_ADDRESS>",
Mar  7 15:17:20 mina-testworld mina[18179]:     "peer_id": "12D3KooWNuA1pY5aY8x9nCcj8FqzACYDnXDAD4sK3LWvnrxyZrCd",
Mar  7 15:17:20 mina-testworld mina[18179]:     "libp2p_port": 1027
Mar  7 15:17:20 mina-testworld mina[18179]:   }
Mar  7 15:17:20 mina-testworld mina[18179]: }
Mar  7 15:17:20 mina-testworld mina[18179]: {"timestamp":"2021-03-07 14:17:20.742036Z","level":"Debug","source":{"module":"Snark_worker__Functor","location"
:"File "src/lib/snark_worker/functor.ml", line 169, characters 8-20"},"message":"Snark worker working directory $dir","metadata":{"dir":"/","pid":18278,"p
rocess":"Snark Worker"}}
Mar  7 15:17:20 mina-testworld mina[18179]: {"timestamp":"2021-03-07 14:17:20.742248Z","level":"Debug","source":{"module":"Snark_worker__Functor","location"
:"File "src/lib/snark_worker/functor.ml", line 181, characters 6-18"},"message":"Snark worker using daemon $addr","metadata":{"addr":"<IP_ADDRESS>:8301","pid
":18278,"process":"Snark Worker"}}
Mar  7 15:17:23 mina-testworld mina[18179]: Attempted to allocate<PHONE_NUMBER>55 bytesFatal error: out of memory.
Mar  7 15:17:23 mina-testworld systemd[1]: mina.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Mar  7 15:17:24 mina-testworld systemd[1]: mina.service: Failed with result 'exit-code'.

Every 3-10 hours I have a problem restarting the service. After I installed sidecar.
attempted to allocate bytes fatal error out of memory

Uptime

Still actual
minaprotocol/mina-archive:1.1.3-48401e9
Attempted to allocate<PHONE_NUMBER>1 bytesFatal error: out of memory.
+ tail -q -f mina.log
Mina process exited with status code 2
2021-03-27 07:37:37 UTC [Info] Coda daemon is booting up; built with commit "a8893ab6dd8a68171e7b99a5dc6b76940411350b" on branch "master"
Using password from environment variable CODA_PRIVKEY_PASS
2021-03-27 07:37:37 UTC [Info] Created daemon lockfile "/root/.mina-config/.mina-lock"
2021-03-27 07:37:37 UTC [Info] Registering async shutdown handler: "Remove daemon lockfile"
2021-03-27 07:37:37 UTC [Info] Daemon will expire at "2024-12-10 14:00:00-07:00"
2021-03-27 07:37:37 UTC [Info] Booting may take several seconds, please wait
2021-03-27 07:37:37 UTC [Info] Reading configuration files $config_files
	config_files: [
  "/var/lib/coda/config_a8893ab6.json", "/root/.mina-config/daemon.json",
  "/var/lib/coda/config_a8893ab.json"

almost once per 24h on every node I run
Attempted to allocate<PHONE_NUMBER>28 bytesFatal error: out of memory. Mina process exited with status code 2

Another occurrence reported on discord.
https://discord.com/channels/484437221055922177/799597981762453535/825869389995704400

I just had this two hours ago.
!!! 2021-03-29 06:01:16 UTC [Info] Received a block from $sender
!!!     sender: {
!!!    Napping for 5.954796458038227 seconds
!!! Attempted to allocate<PHONE_NUMBER>34 bytesFatal error: out of memory.

Again, just now:
2021-03-29 16:43:08 UTC [Info] Received a block from $sender
        sender: {
  "Remote": {
    "host": "<IP_ADDRESS>",
    "peer_id": "12D3KooWEdBiTUQqxp3jeuWaZkwiSNcFxC6d6Tdq7u2Lf2ZD2Q6X",
    "libp2p_port": 10003
  }
}
Attempted to allocate<PHONE_NUMBER>95 bytesFatal error: out of memory.

Again, about 9 hours ago.
2021-03-30 19:49:29 UTC [Info] Received a block from $sender
        sender: {
  "Remote": {
    "host": "<IP_ADDRESS>",
    "peer_id": "12D3KooWS7jKsHMuMp8sCjSQVFqU3b9hLwBRHDjjaiUXhYDYkt3v",
    "libp2p_port": 8302
  }
}
Attempted to allocate<PHONE_NUMBER>57 bytesFatal error: out of memory.

Again
2021-04-03 11:46:06 UTC [Info] Received a block from $sender
        sender: {
  "Remote": {
    "host": "<IP_ADDRESS>",
    "peer_id": "12D3KooWDvHJgAF2jyBug5u4R7tWooXAUsdrSKEtVDeq8JnED5cY",
    "libp2p_port": 8302
  }
}
Attempted to allocate<PHONE_NUMBER>9 bytesFatal error: out of memory.

@gregbostrom can you share the flags you're using? We've been looking for a way to reproduce this so that we can capture some core dumps.. it seems you've found a pretty reliable one!

mina daemon \
    -peer-list-file ~/peers.txt \
    -generate-genesis-proof true \
    -block-producer-key ~/keys/my-wallet \
    -block-producer-password $MINA_PRIVKEY_PASS \
    -file-log-level Info \
    -log-level Info \
    -limited-graphql-port 3095

I think most people encountering this problem are not reporting it and I would not call mine a reliable case.

I just keep reporting it because I think it needs to be fixed.  You might consider screening out very very large memory allocation requests and ignore the current request.

+1 to the above. I just checked logs for my nodes for the last 7 days and 15 occurrences of this.

Attempted to allocate<PHONE_NUMBER>4 bytesFatal error: out of memory.
Mina process exited with status code 2
2021-04-01 03:46:42 UTC [Info] Coda daemon is booting up; built with commit "a8893ab6dd8a68171e7b99a5dc6b76940411350b" on branch "master"
Using password from environment variable CODA_PRIVKEY_PASS
Attempted to allocate<PHONE_NUMBER>23 bytesFatal error: out of memory.
Mina process exited with status code 2
2021-04-05 13:32:10 UTC [Info] Coda daemon is booting up; built with commit "a8893ab6dd8a68171e7b99a5dc6b76940411350b" on branch "master"
Using password from environment variable CODA_PRIVKEY_PASS
Attempted to allocate<PHONE_NUMBER>30 bytesFatal error: out of memory.
Mina process exited with status code 2
2021-04-06 17:47:08 UTC [Info] Coda daemon is booting up; built with commit "a8893ab6dd8a68171e7b99a5dc6b76940411350b" on branch "master"
Using password from environment variable CODA_PRIVKEY_PASS
Attempted to allocate<PHONE_NUMBER>01 bytesFatal error: out of memory.
Mina process exited with status code 2
2021-04-07 13:17:39 UTC [Info] Coda daemon is booting up; built with commit "a8893ab6dd8a68171e7b99a5dc6b76940411350b" on branch "master"
Using password from environment variable CODA_PRIVKEY_PASS
4 crashes. without clean .mina-config not going well.

I think the problem of memory allocation does still exist in version 1.2.0beta1-c856692-mainnet
Possibly more hidden than before
2021-07-02 10:28:28 UTC [Error] Possible reason for signal: "Process killed because out of memory"
Log extract
2021-07-02 10:27:31 UTC [Warn] RPC call error for "get_transition_chain_proof"
2021-07-02 10:27:35 UTC [Error] error sending message on stream 25703: $error
error: {
"commit_id": "c856692fddc525a673ba075f714811b5c50bd3a7",
"string":
"RPC #46101 failed: "only wrote 0 out of 9 bytes error: libp2p error error: closed stream""
}
2021-07-02 10:27:35 UTC [Warn] RPC call error for "get_transition_chain"
2021-07-02 10:27:41 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] Not rebroadcasting block $state_hash because it was received "1 slots too late"
state_hash: "3NLex6ZoBK5FxhxRwPwmEBHLVEycVBf2kWULC9gTcDwPq5wskHQz"
2021-07-02 10:27:51 UTC [Info] Saw block with state hash $state_hash
state_hash: "3NLex6ZoBK5FxhxRwPwmEBHLVEycVBf2kWULC9gTcDwPq5wskHQz"
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:51 UTC [Warn] initial_validate: disconnected chain
2021-07-02 10:27:54 UTC [Warn] RPC call error for "get_transition_chain_proof"
2021-07-02 10:27:55 UTC [Info] Received a block from $sender
sender: {
"Remote": {
"host": "<IP_ADDRESS>",
"peer_id": "12D3KooWAbpbSc9WbfkrJE8FQNLebzL9A7WGUVaMFaEjexW4MPmU",
"libp2p_port": 8302
}
}
2021-07-02 10:28:05 UTC [Fatal] Unhandled top-level exception: $exn
Generating crash report
exn: {
"commit_id": "c856692fddc525a673ba075f714811b5c50bd3a7",
"sexp": [
"monitor.ml.Error",
"Cached item has already been finalized",
[
"Raised at file "src/error.ml" (inlined), line 9, characters 14-30",
"Called from file "src/lib/cache_lib/impl.ml", line 173, characters 30-51",
"Called from file "src/lib/cache_lib/impl.ml", line 199, characters 6-69",
"Called from file "src/lib/ledger_catchup/super_catchup.ml", line 928, characters 25-58",
"Called from file "src/deferred1.ml", line 17, characters 40-45",
"Called from file "src/job_queue.ml" (inlined), line 131, characters 2-5",
"Called from file "src/job_queue.ml", line 171, characters 6-47",
"Caught by monitor coda"
]
],
"backtrace": [
"Raised at file "format.ml" (inlined), line 242, characters 35-52",
"Called from file "format.ml", line 469, characters 8-33",
"Called from file "format.ml", line 484, characters 6-24"
]
}
2021-07-02 10:28:05 UTC [Info] Updating new available work took 21.804094314575195 ms
2021-07-02 10:28:28 UTC [Error] Daemon child process 97 terminated after receiving signal "sigkill"
2021-07-02 10:28:28 UTC [Error] Possible reason for signal: "Process killed because out of memory"
2021-07-02 10:28:28 UTC [Error] Child process of kind "Prover" with pid 97 has unexpectedly terminated
2021-07-02 10:28:28 UTC [Fatal] Unhandled top-level exception: $exn
Generating crash report
exn: {
"commit_id": "c856692fddc525a673ba075f714811b5c50bd3a7",
"sexp": [
"monitor.ml.Error",
[ "Failure", "Child process of kind Prover has unexpectedly terminated" ],
[
"Raised at file "stdlib.ml", line 33, characters 17-33",
"Called from file "src/app/cli/src/cli_entrypoint/mina_cli_entrypoint.ml", line 579, characters 10-94",
"Called from file "src/deferred0.ml", line 56, characters 64-69",
"Called from file "src/job_queue.ml" (inlined), line 131, characters 2-5",
"Called from file "src/job_queue.ml", line 171, characters 6-47",
"Caught by monitor coda"
]
],
"backtrace": [
"Raised by primitive operation at file "src/signal.ml", line 162, characters 6-61"
]
}
2021-07-02 10:28:28 UTC [Error] verifier terminated unexpectedly
2021-07-02 10:28:28 UTC [Info] Starting a new verifier process
2021-07-02 10:28:28 UTC [Info] verifier successfully stopped
2021-07-02 10:28:28 UTC [Info] Rebroadcasting $state_hash
state_hash: "3NLnPyR37jEecT8RdmJ6m7HKnNxicr8gj1kKA4x5iZC4nueGevJ4"
2021-07-02 10:28:28 UTC [Fatal] libp2p_helper process died unexpectedly: "died after receiving sigkill (signal number 9)"
2021-07-02 10:28:28 UTC [Error] error during validationComplete, ignoring and continuing: $error
error: {
"commit_id": "c856692fddc525a673ba075f714811b5c50bd3a7",
"string":
"helper process already exited (doing RPC {"seqno":25735,"is_valid":"accept"})"
}

I'm seeing a lot of these kinds of errors in my logs, not sure if it's related.
2021-07-22 09:44:53 UTC [Error] error sending message on stream 1050: $error
	error: {
  "commit_id": "a42bdeef6b0c15ee34616e4df76c882b0c5c7c2a",
  "string":
    "RPC #9486 failed: \"only wrote 0 out of 9 bytes error: libp2p error error: closed stream\""
}

and
2021-07-22 09:31:38 UTC [Warn] verification of blockchain snark failed but it was our fault
2021-07-22 09:31:38 UTC [Error] error sending message on stream 1023: $error
	error: {
  "commit_id": "a42bdeef6b0c15ee34616e4df76c882b0c5c7c2a",
  "string":
    "RPC #9282 failed: \"only wrote 0 out of 36 bytes error: libp2p error error: closed stream\""
}

We are on minaprotocol/mina-daemon-baked:1.1.5-a42bdee and we periodically get Attempted to allocate<PHONE_NUMBER>00 bytesFatal error: out of memory. crash.
I see multiple issues open for memory related issues. Is there any main one tracking the problem?

Machine is on:
# free -h
              total        used        free      shared  buff/cache   available
Mem:          125Gi       7.4Gi        51Gi       0.0Ki        66Gi       117Gi
Swap:         4.0Gi       4.0Mi       4.0Gi

Got this today on 1.1.5-a42bdeet:
Aug 24 09:59:40 Ubuntu-1804-bionic-64-minimal mina[2359]: Attempted to allocate<PHONE_NUMBER>04 bytesFatal error: out of memory.
Aug 24 09:59:41 Ubuntu-1804-bionic-64-minimal systemd[1043]: mina.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 24 09:59:41 Ubuntu-1804-bionic-64-minimal systemd[1043]: mina.service: Failed with result 'exit-code'.

Release 1.2.0beta6-bee023a:
Sep 18 01:33:35 kernel: [583074.116491] [UFW BLOCK] IN=enp1s0 OUT= MAC=68:05:ca:e6:44:a9:5c:5e:ab:d0:66:c0:08:00 SRC=<IP_ADDRESS> DST=<IP_ADDRESS> LEN=40 TOS=0x00 PREC=0x00 TTL=242 ID=13885 PROTO=TCP SPT=43882 DPT=40159 WINDOW=1024 RES=0x00 SYN URGP=0
Sep 18 01:33:43 mina[12832]: Attempted to allocate<PHONE_NUMBER>6846873 bytesFatal error: out of memory.
Sep 18 01:33:43 systemd[1522]: mina.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

This instance of this issue was reproduced and addressed in a number of prs in late 2020 early 2021. If we see this again, we can reopen.


fix #82457, markdown open, but unfocused source tab

This PR fixes #82457.
This fix first opens the source tab of the currently focused markdown file using the showSource command. This would make the source tab part of vscode.window.visibleTextEditors, which can be iterated over and the appropriate line to select can be set. This makes sure that if the source tab is already open but unfocused, double clicking on a line in markdown will not create another tab of the markdown source file.
Testing: steps for reproduction provided by @GehDoc in #82457
Current behavior: new tab opened for source markdown file
Expected behavior: unfocused source file tab is focused

Thanks!


ffmpeg built-in "faststart" support of qt-faststart

Looks like ffmpeg has support for "faststart" to relocate the moov atoms data. This is according to ffmpeg website:

-movflags faststart
Run a second pass moving the index (moov atom) to the beginning of the file. This operation can take a while, and will not work in various situations such as fragmented output, thus it is not enabled by default.

Maybe this can be used instead of the python qt-faststart module?

This comes up periodically. There's issues with running the tagging stuff after the FFMPEG faststart option is used. Causes corrupt files in rare instances. The only order of operations that doesn't cause issues is convert, tag, faststart
Sent from my iPhone

On Aug 16, 2016, at 23:03, ladude626<EMAIL_ADDRESS>wrote:
Looks like ffmpeg has support for "faststart" to relocate the moov atoms data:
-movflags faststart
Run a second pass moving the index (moov atom) to the beginning of the file. This operation can take a while, and will not work in various situations such as fragmented output, thus it is not enabled by default.
Maybe this can be used instead of the python qt-faststart module?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I would like to open this issue again.
Would to be possible to use ffmpeg builtin faststart option if tagging is not enabled? This can save a lot of time during transcoding if you don't need to tag files.

It really wouldn't save any time, it can be added as part of the new
preopts / postopts feature but FFMPEG just does the processing same as
qtfaststart at the end of transcoding
On Sun, Feb 26, 2017 at 7:39 PM, scoopydude2002<EMAIL_ADDRESS>wrote:

I would like to open this issue again.
Would to be possible to use ffmpeg builtin faststart option if tagging is
not enabled? This can save a lot of time during transcoding if you don't
need to tag files.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/mdhiggins/sickbeard_mp4_automator/issues/535#issuecomment-282602756,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADcO6uUW0NvUgmi9en146YxyIbE2pCakks5rghtRgaJpZM4JmDDz
.


Unexpected exit code when running cypress run (0, even with test failures).

Before I open a bug in Cypress itself, could someone verify if the exit code for failed snapshot tests return the correct exit code?
Should be greater than 0, but it's being set as 0, which makes tests in CI appear as passed, when they really failed, since CI tools rely on exit codes to determine the success of a given step.

Has someone else experienced this issue? I don't know if this plugin uses the Cypress Module API or not, but could it be possible that the exit code isn't being set correctly, as it happened to this person? https://github.com/cypress-io/cypress/issues/2816

Oh, I was the one using the Module API in the way I was running my tests and not setting the exit code appropriately. 🤦♂


Handle errors when loading visits from another Shlink instance

Currently, if an exception is thrown when loading visits for a short URL, the whole import process fails.
Instead, it should only fail to import the visits with a warning, and continue with the process.

In the related issue I was using the import feature for migration and I found it very helpful that the entire process failed and no URL was imported. It would be nice to have the option to choose what happens if an import fails.

Sure!
In any case, what Shlink already does is keep track of what URLs have already been imported, and skip them if you try to import again from the same source, which means a second run would not duplicate any data.
Same with visits.


Please add a # Goals or # Rationale to README.md

I happened upon unpkg.com by way of an RDF mailing list email that mention it. After reading the unpkg README, I understand it's js cdn (of which there are many). How is unpkg.com different? Because it traffics in npm packages not javascript files (https://docs.npmjs.com/about-packages-and-modules)?
You don't have to explain yourself to me, of course. You can write software for any reason you want, including a cdn that's similar to others. We all have "learning" repos. I just can't easily place this effort in context, so I thought I'd ask. Thanks.

The goal of unpkg is in the very first paragraph on the front page:

When I build unpkg, no such thing existed.


Page reload issue when using the plugin on aspx pages

Hi,
When i implent this plugin in my .net application, the aspx page gets looped inside the page load function.
When I implement the plugin inside a html document, i don't have this issue.
Do you know what could cause this?
Thank You

Hey,
I don't know how .net works and what could be causing this but will appreciate any debug info or PR if you happen to identify the problem.

Thank You for the fast response. The code that seems to trigger it is:  ('.rating-enable').trigger('click');
I am very bad at javascript and jquery, so i don't know how to fix it, but You can see the cause of the issue explained here: http://stackoverflow.com/questions/12319758/angularjs-clicking-a-button-within-a-form-causes-page-refresh.
"A button element with no type attribute specified represents the same thing as a button element with its type attribute set to "submit"". So i think the button enable is clicking continuosly causing the page to loop.
I managed to solve my problem by deleting the code that enabled and disabled the plugin, since i need it active all the time, but You can probably fix it.
Thank You for the great plugin, it is the best i saw so far, and I was searching a lot.

Thanks a lot for the detailed explanation! I will attempt to fix this.


Fix reversible synth/deg rules

This PR fixes Rule.is_synth() and Rule.is_deg() for reversible
synth/deg rules of the form
Rule('synth_deg', None <> A(), k_synth, k_deg)

Needs #325 for unit test pass

Coverage increased (+0.02%) to 76.583% when pulling dd2b16382d4572dcfdae02235dde1c1a1aa17824 on alubbock:rev_synth_deg into f78619c0978e6a3dcec762e0b28c67410ec97fc7 on pysb:master.

I manually restarted the Travis build now that EBI Biomodels is working again and it passed, but I don't think I have access to restart the Appveyor build.

I can't restart the PR build either, but I did do so on my fork and it succeeded. Seems to be an Appveyor limitation.

Coverage remained the same at 76.583% when pulling a707666dc1e508ea30ef6e612e358490ff3257e8 on alubbock:rev_synth_deg into f1799e5256ef5b2c9c1a99b7938280163a92f2c3 on pysb:master.


How to merge few or more SimpleSchema?

Hi,
I need to conditionally build SimpleSchema from standard blocks: field name & type pairs. To let app admin to customize current product properties.
For example I have to build SimpleSchema from this kind of data:
a= [
{name:'title', type: 'string'},
{name:'description', type: 'string'},
{name:'price', type: 'number'},
{name:'qty', type: 'number'},
];

To look like this:
aSchema= new SimpleSchema({
title: {type:String},
description: {type:String},
price: {type:Number},
qty: {type:Number}
});

It looks like good solution to have one big schema with all the blocks I may need to be defined. And use .pickto build new custom SimpleSchema. But I'll need to pick multiple fields with the same name like (in resulting schema there will be only one from them):
var newSchema = bigSchema.pick(['title', 'title']);

Also I tried to do like this:
a = aSchema.simpleSchema().pick('title');
obj=[{aa:{type:a}},{bb:{type:a}}];
c=new SimpleSchema(obj);

and this way c has strange SimpleSchema like this:
{
a:{type:...},
a.title:{type:String} <-- this one is right
}

@aldeed is there any proper way to do such a building of new SimpleSchema out of other SimpleSchema blocks? Maybe some cheat way?
Thank you.

Looks like it may work like this:
a = aSchema.simpleSchema()._schema.title; obj=[{aa:a},{bb:a}]; c=new SimpleSchema(obj);

To help me catch up, I'm closing some old issues. If you still need help, post a comment asking to reopen.


Add reference to Fetch API wrapper

I'm not sure if you would be willing to - but I wrote a really clean API wrapper (still needs some work and features), but if you're interested in adding it as a reference in the Readme here - I think that would help a lot of people with common problems!  Using fetch() by itself can be annoying!
https://github.com/glazedio/frisbee

Looks nice, but this belongs to userland, and I'm sure people will discover it if they search for it. We can't really link to all fetch-related projects from our simple polyfill. I hope you understand!


Revert "Add quickstart documentations (#373)"

This reverts commit 478a276d27725a3094ae1c6bed712db49a2874c3.

What is the purpose of the change
(For example: This pull request makes user can stop workflow externally.)
Brief change log
(for example:)

Send StopDagEvent to Airflow scheduler via notification service
Once received StopDagEvent, Airflow scheduler kills all running dag runs

Verifying this change
(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests.

Codecov Report

:exclamation: No coverage uploaded for pull request base (dev@478a276). Click here to learn what that means.
Patch has no changes to coverable lines.

Additional details and impacted files
@@          Coverage Diff           @@
##             dev     #375   +/-   ##
======================================
  Coverage       ?   67.08%
======================================
  Files          ?      172
  Lines          ?     9828
  Branches       ?     1286
======================================
  Hits           ?     6593
  Misses         ?     2901
  Partials       ?      334

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


how to change page when we tapped in page title

Page is changing, when I tapped in the page title. I think this issue is resolved now.


Added mobile responsive design to SelectedReefCard

SelectedReefCard display improvements for web and mobile views.

The third image is from an iPad-sized screen - in this size range there are definite improvements to make still but all the content is at visible. Could consider using the mobile layout for this screen size?

@dianakw8591 maybe we could have the font size adapt a bit to keep the temp on one line?

@ericboucher after playing with font sizes on the different screen sizes a bit, the font has to be so small to fit in one line on the smallest of the 'small' sizes (right before it hits the breakpoint to change views) that I'm not sure it's better than keeping the text on two lines...what do you think?

It certainly loses the element of importance that a larger font size gives.


fix: removing endsas for 9.4m6+ WIN enviornments in mp_abort

Issue
#267
Intent
Avoid the use of endsas; in 9.4m6+ environments - an invalid response is better than no response.
Implementation
Removed endsas from mp_abort() in this circumstance
Checks

[ ] Code is formatted correctly (sasjs lint).
[ ] Any new functionality has been unit tested.
[ ] All unit tests are passing (sasjs test).

:tada: This PR is included in version 4.32.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


FEAT: Code completions

Added the support for code completions, support 3 kinds of completions:

Common code completions, like generate model, it will continue to generate the code according inputted code above.
Code infill completions, the more parameter "suffix" is provided, the model generates the content between prompt and suffix.
Repository level code completions, just like common code completions, but the other files in the repository are provided too, to generate more precise content.

I added two RESTful APIs:

/v1/code/prompt
v1/code/completions

Users can get the generated prompt by call 1st API.
Common Code Completion
POST the JSON object
{
  "model": "code-completion-model-uid",
  "mode": "completion",
  "prompt": "#write a quick sort algorithm"
}

Repository Level Code Completion
Users can provide files parameter , which is the mapping, key is file name or file path (it is defined in code prompt style), value is the file content.
Some model need the repo_name, that presents repository name.
{
  "model": "code-completion-model-uid",
  "mode": "completion",
  "prompt": "#write a quick sort algorithm",
  "files": {
    "test.py": "test file content",
    "main.py": "main file content"
  },
  "repo_name": "my-test-repo"
}

Note: if the model does not support repository level completion, it works like common code completion, "files" and "repo_name" will be ignored.
Infill Code Completion
Users can use infill mode by set mode to "infill", and provide suffix parameter.
{
  "model": "code-completion-model-uid",
    "mode": "infill",
    "prompt": "def quick_sort(arr):\n    if len(arr) <= 1:\n        return arr\n    pivot = arr[0]\n    left = []\n    right = []\n",
    "suffix": "\n        if arr[i] < pivot:\n            left.append(arr[i])\n        else:\n            right.append(arr[i])\n    return quick_sort(left) + [pivot] + quick_sort(right)"
}

Note: if the model does not support infill mode, you will get the exception.
If /v1/code/prompt API works well, it will return the response like below:
{
  "prompt": "<｜fim▁begin｜>def quick_sort(arr):\n    if len(arr) <= 1:\n        return arr\n    pivot = arr[0]\n    left = []\n    right = []\n<｜fim▁hole｜>\n        if arr[i] < pivot:\n            left.append(arr[i])\n        else:\n            right.append(arr[i])\n    return quick_sort(left) + [pivot] + quick_sort(right)<｜fim▁end｜>"
}

When you get the generated prompt, you can pass it to /v1/completions to get the response.
If you want to combine 2 requests into 1, you can just use the 2nd RESTful API /v1/code/completions, it just combined generating prompt and completions requests.

There are conflicts to resolve.


Carousel is broken in android.

The carousel is broken in android.The swiping is not working properly in android.

It is pretty broken in Android...
If user swipes at all, then it acts as a normal scroll view with out any locking screen by screen.

For my particular use case, It also starts on the last page and cycles through once, until it gets to the first page, then stops scrolling any further. I can scroll back, but again it doesn't lock.

+1

The carousel doesn't snap to the individual slides when swiping, and the indicators aren't updated. Clicking the indicators works as expected. Would love to see a fix.


Crashing in terminate/3 function in my websocket handler

Below is the terminate/3 function I have in my websocket handler and the crash report. Would like more insight into this. Thanks.
terminate(Reason, undefined, State) ->
	io:format("Reason: ~p.", [Reason]),
	io:format("State: ~p.", [State]),
	{ok, State}.

=CRASH REPORT==== 28-Jun-2017::01:15:51 ===
  crasher:
    initial call: cowboy_clear:proc_lib_hack/5
    pid: <0.617.0>
    registered_name: []
    exception exit: {function_clause,
                        [{ws_handler,terminate,
                             [{remote,1001,<<>>},
                              #{host => <<"<IP_ADDRESS>">>,method => <<"GET">>,
                                path => <<"/ws">>,
                                peer => {{127,0,0,1},50866},
                                port => 8081,qs => <<>>,scheme => <<"http">>,
                                version => 'HTTP/1.1'},
                              ["test"]],
                             [{file,"src/ws_handler.erl"},{line,192}]},
                         {cowboy_websocket,terminate,3,
                             [{file,"src/cowboy_websocket.erl"},{line,421}]},
                         {cowboy_http,loop,2,
                             [{file,"src/cowboy_http.erl"},{line,176}]},
                         {cowboy_clear,proc_lib_hack,5,
                             [{file,"src/cowboy_clear.erl"},{line,29}]},
                         {proc_lib,init_p_do_apply,3,
                             [{file,"proc_lib.erl"},{line,247}]}]}
      in function  cowboy_clear:proc_lib_hack/5 (src/cowboy_clear.erl, line 34)
    ancestors: [<0.587.0>,<0.586.0>,ranch_sup,<0.575.0>]
    message_queue_len: 0
    messages: []
    links: [<0.587.0>,#Port<0.608>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 987
    stack_size: 27
    reductions: 2671
  neighbours:

=ERROR REPORT==== 28-Jun-2017::01:15:51 ===
Ranch listener http had connection process started with cowboy_clear:start_link/4 at <0.617.0> exit with reason: {function_clause,[{ws_handler,terminate,[{remote,1001,<<>>},#{host => <<"<IP_ADDRESS>">>,method => <<"GET">>,path => <<"/ws">>,peer => {{127,0,0,1},50866},port => 8081,qs => <<>>,scheme => <<"http">>,version => 'HTTP/1.1'},["test"]],[{file,"src/ws_handler.erl"},{line,192}]},{cowboy_websocket,terminate,3,[{file,"src/cowboy_websocket.erl"},{line,421}]},{cowboy_http,loop,2,[{file,"src/cowboy_http.erl"},{line,176}]},{cowboy_clear,proc_lib_hack,5,[{file,"src/cowboy_clear.erl"},{line,29}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}

I see. It was calling terminate/3 function without undefined in the middle. Changed it to _ to fix the problem.


Request for a light theme

This is a request for a Light Fluent Discord theme.

Duplicate of #247


Add "java-version" as a model variable

Already there due to general mapping of all properties to model variables where the 'dot' is replace by a 'dash'


Top right & Bottom left handle are broken

There appears to be an issue with the top right and bottom left handles.
For example, when i attach to the bottom left handle, and move my mouse down, it actually moves the top instead of the bottom.
video: https://drive.google.com/uc?id=1bSeZIfAdIotXd_a6OhTjFNKdyznRKaVW
EDIT:
After a lil debugging, it occours because of this if:
    if (aspectRatio.value) {
      if (['tl', 'tm', 'ml', 'bl'].includes(handleType)) {
        idx0 = 't'
        idx1 = 'l'
      } else {
        idx0 = 'b'
        idx1 = 'r'
      }
    }

inside the
const resizeHandleDown = (e: HandleEvent, handleType: ResizingHandle) => {
method.
The value of "aspectRatio.value" is the number 2, when :lockAspectRatio="false" is set.

Clicking the bottom left handle here ^.
I assume its a "typo" that it checks for if(aspectRatio.value) and it should be checking for
if (props.lockAspectRatio) {

This looks like it was fixed in https://github.com/a7650/vue3-draggable-resizable/commit/0a70e7857b51ba90bf2f31b203650e691eda4391 though. I also just installed it via yarn and can't replicate.
What version are you using?


Installation failed: pacman failed Ruby 2.7.1 32 bit

This issue has been reproduce while installing ruby 2.7 for 32 bit system.

|  __ \     | |         |_   |         | |      | | |       |_
| |) |   | |  _   _  | |  _ __  | | __ | | | ___ _ __ ) |
|  _  / | | | ' | | | | | | | ' / __| / _` | | |/ _ \ '/ /
| | \ \ || | |) | || || || | | __ \ || (| | | |  _/ | / /
||  __,|_./ __, ||| ||/__,||_|__||||
/ |           _
|/          | _  __   | | o __  | _     _
| () |    |^| | | |(|()^/_>
1 - MSYS2 base installation
2 - MSYS2 system update (optional)
3 - MSYS2 and MINGW development toolchain
Which components shall be installed? If unsure press ENTER [1,3] 1

sh -lc true
MSYS2 seems to be properly installed

1 - MSYS2 base installation
2 - MSYS2 system update (optional)
3 - MSYS2 and MINGW development toolchain
Which components shall be installed? If unsure press ENTER [] 2

sh -lc true
MSYS2 seems to be properly installed
Remove catgets to avoid conflicts while update  ...
pacman -Rdd catgets libcatgets --noconfirm
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely

error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: target not found: catgets
error: target not found: libcatgets
MSYS2 system update (optional) part 1  ...

pacman -Syu --needed --noconfirm
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely

error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
:: Synchronizing package databases...
mingw32                   569.9 KiB   247K/s 00:02 [#########################] 100%
mingw32.sig               438.0   B   428K/s 00:00 [#########################] 100%
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update mingw32 (invalid or corrupted database (PGP signature))
mingw64                   571.4 KiB   388K/s 00:01 [#########################] 100%
mingw64.sig               438.0   B  0.00B/s 00:00 [#########################] 100%
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update mingw64 (invalid or corrupted database (PGP signature))
msys                      184.2 KiB   200K/s 00:01 [#########################] 100%
msys.sig                  438.0   B   428K/s 00:00 [#########################] 100%
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update msys (invalid or corrupted database (PGP signature))
error: failed to synchronize all databases
### MSYS2 system update (optional) failed
Installation failed: pacman failed
1 - MSYS2 base installation
2 - MSYS2 system update (optional)
3 - MSYS2 and MINGW development toolchain
Which components shall be installed? If unsure press ENTER []

I believe a work-around is:
Download the following two files and place them in a folder without a space in the path, (like C:\temp) :
https://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
https://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig

then run:
ridk exec pacman -Udd <full path to the xz file>

If using c:\temp:
ridk exec pacman -Udd C:/temp/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz

Yes its for 32 bit Windows operating system (Window 7 sp1),,
I tried above steps but I am still getting below errors;
C:\Temp>ridk exec pacman -Udd C:/temp/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: database 'mingw32' is not valid (invalid or corrupted database (PGP signature)
)
error: database 'mingw64' is not valid (invalid or corrupted database (PGP signature)
)
error: database 'msys' is not valid (invalid or corrupted database (PGP signature))
loading packages...
error: failed to prepare transaction (invalid or corrupted database)
C:\Temp>

You might have run into the problem which occured after a change of the guard of the msys2 maintainers. It's explained here:
https://www.msys2.org/news/#2020-06-29-new-packagers
I include the text from the webpage in case the URL will go out of service at some point:

We have prepared the following steps to verify and install the new keyring manually after which you should be able to use pacman -Syu again:
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
$ pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
==> Checking msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig... (detached)
gpg: Signature made Mon Jun 29 07:36:14 2020 CEST
gpg:                using DSA key AD351C50AE085775EB59333B5F92EFC1A47D45A1
gpg: Good signature from "Alexey Pavlov (Alexpux<EMAIL_ADDRESS>[full]
pacman -U msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
If you can't even import the key and the above command fails like this:
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n]
[...]
error: database 'msys' is not valid (invalid or corrupted database (PGP signature))
loading packages...
error: failed to prepare transaction (invalid or corrupted database)
... you have to convince pacman to not care about those databases for a while, for example like this:
pacman -U --config <(echo) msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
If you still see signature errors, resetting your pacman key store might help:
rm -r /etc/pacman.d/gnupg/
pacman-key --init
pacman-key --populate msys2


v1.4 add schedule command and collate

Coverage decreased (-0.7%) to 92.064% when pulling 54dde5cf317da647aaa2388bc70975f57e13f39a on limcel:v1.4Features into 139abfc5e953713e9928adf0c60493fe721f6f92 on CS2103AUG2017-T16-B2:master.

Issue: continuous-integration/travis-ci — Waiting for status to be reported


Update plugins versions and configurations.

Update plugins versions and configurations.

Coverage remained the same at 33.871% when pulling b965d02ec9788ddcaf4ed48f90fa595bc32e6362 on daggerok:master into af54a4bcfbde03e5a3ee1ee5219adefccdc66937 on byte-shifter-ltd:master.


Plugin not loaded by Neovim/Vundle because of folder structure

I installed vlime in the usual way by adding Plugin 'l04m33/vlime' to my vimrc and running :PluginInstall. This cloned the repo in the correct place, but I noticed that the plugin was not being loaded after restarting Neovim and opening a lisp buffer.
I believe the plugin was not being loaded because the top level of the plugin folder ~/.vim/bundle/vlime did not contain the expected folders autoload, doc, ftplugin, syntax, etc.
Instead, the project top-level structure of vlime is separated into two folders, lisp and vim.
I tried moving the contents of the vim folder out into the top-level, and after doing that and restarting Neovim, the basic functionality appears to be working. However, <LocalLeader>rr to have vlime start a server for me does not work because it's looking for load-vlime.lisp in the wrong directory, ~/.vim/bundle/lisp instead of ~/.vim/bundle/vlime/lisp.
EDIT: In case it helps anyone, I also ran :VundleDocs to update the helptags. This usually happens automatically when installing or updating plugins.

Aha -- it turns out that there is a Vundle option for specifying the runtime path of the plugin.
Changing the line in my vimrc to this fixed it:
Plugin 'l04m33/vlime', {'rtp': 'vim/'}

Glad you worked it out! Maybe I should make it clear in README or somewhere else.

That's a good idea. Maybe you could provide examples of what to add to your vimrc, for different plugin managers? Something like this, maybe:

Vundle:
Plugin 'l04m33/vlime', {'rtp': 'vim/'}

vim-plug:
Plug 'l04m33/vlime', {'rtp': 'vim/'}

I took a look at dein.vim and Pathogen, but I wasn't able to figure out how those plugin managers handle setting the runtime path.


Casper 2.x

Hello, just ported Ghost's Casper 2.x.
https://github.com/eueung/hugo-casper-two
Hope it'd be useful to some of you.
Thanks!

Hello @eueung,
thank you for sharing this theme with the Hugo community. The new Ghost default theme looks pretty nice. I've tested your theme with the build script of the Hugo themes site. Everything looked fine so casper-two should be listed soon there.
Furthermore, I'll promote your theme on Hugo's official Twitter account.
Regards,
Digitalcraftsman


"margin" Not working inside ng-template with GridLayout

https://play.nativescript.org/?template=play-ng&id=FpaWzb&v=22
in above playground we can see that margin applied to ".allContacts .contact", ".contact .mobile" and ".contact .name" not working, all this classes is used inside ng-template.
other than that all the margin working as expected.
so it seems there is a problem inside ng-template for "margin"

Hi, @bhavincb,
I tested the project, however, was unable to recreate an issue with the margin. I have changed the margin to 50 as follow:
.allContacts .contact{
    margin: 50;
}

and the style was applied. The issue might be related to the live sync process. I would suggest to restart the application and to try again to build it with tns run <platform_name>.

hi @tsonevn ,
pardon me, it was my mistake , here is working sample project link.
https://play.nativescript.org/?template=play-ng&id=FpaWzb&v=25
in this plaground i had used below css
.allContacts .contact{
    margin: 1000;
}

play it with nativescript playground app , we can see margins not applied.

Hi, @bhavincb,
I reviewed the new project and was able to recreate the issue with the margin only on Android.
Regarding that, I would suggest as a temporary solution to set up the GridLayout inside a StackLayout, which will allow you to set up the needed margin. For example:
<ng-template let-i="item">
			<StackLayout>
			<GridLayout class="contact"  columns="auto,*" rows="auto,auto">
				<Image class="contactImage avatar" col="0" *ngIf="i<2" row="0"
				 rowSpan="2" src="https://play.nativescript.org/dist/assets/img/NativeScript_logo.png"></Image>
				<StackLayout class="contactImageName avatar" *ngIf="i>1" col="0" rowSpan="2" width="100"
				 height="100">

				</StackLayout>

			</GridLayout>
			</StackLayout>
		</ng-template>

was this bug solved? I just new on nativescript and looks like still happening


Add contribution to CC 103

Community Contribution
Link to live project, video, or image:
https://edorfaus.github.io/coding-train-variants/CodingChallenges/CC_103_Flames/P5/
The main point of this contribution is the explanation (in the source) of the simple optimization it does to speed up the p5.js version. I'm hoping it's explained well enough that people who followed along with the video can figure it out, even without a video showing the process, and thus can learn something in the process.
The main reason I didn't include this in the main p5.js version is that the changes, while fairly simple, are large enough that I thought they might confuse someone trying to follow along with the video.
Sharing

[🤷] I would be happy to have my project shared on The Coding Train's social media!

This is awesome

oh what a great idea thank you!!!


Build Data Explorer

Build a data explorer that allows users to select which records they want to test, e.g., test local explainability on a given record, and compare results between records.

Current Behaviour: Record selection is based on entering specific data row number as a testing parameter.


DataStore on iOS with Cognito user pools, websocket protocol error but works with an API key

Which Category is your question related to?
DataStore on iOS
Amplify CLI Version
4.18.0
You can use amplify -v to check the amplify cli version on your system
What AWS Services are you utilizing?
Cognito User Pools
API (GraphQL)
Storage
DataStore
various triggers and custom functions
Provide additional details e.g. code snippets
We started on iOS using AppSync API and now want to move onto using DataStore.
Our authorization is based on user pools and groups, and we don't really need/want API Key
When I add DataStore in this configuration, the WebSocket is unable to connect to the GraphQL API end point and I see the following in the iOS log:
2020-04-21 11:30:39.156357-0400 Appname[3544:99327] Connecting to url ...
USER IS SIGNED OUT <-- this is form AWSMobileClient
2020-04-21 11:30:39.262675-0400 Appname[3544:99035] [Snapshotting] Snapshotting a view (0x7ff350c0eb30, UIView) that has not been rendered at least once requires afterScreenUpdates:YES.
2020-04-21 11:30:39.452011-0400 Appname[3544:99324] WebsocketDidConnect
2020-04-21 11:30:39.452147-0400 Appname[3544:99324] WebsocketDidConnect, sending init message...
2020-04-21 11:30:39.452422-0400 Appname[3544:99324] Validating connection
2020-04-21 11:30:39.452626-0400 Appname[3544:99324] WebsocketDidReceiveMessage - {"payload":{"errors":[{"message":"Both, the \"header\", and the \"payload\" query string parameters are missing","errorCode":400}]},"type":"connection_error"}

followed by various messages like:
2020-04-21 11:30:39.466218-0400 Appname[3544:99325] [AWSModelReconciliationQueue] receiveCompletion: error: DataStoreError: subscription item event failed with error
Caused by:
APIError: subscription item event failed with error
Caused by:
jsonParse(nil, Optional(Swift.DecodingError.dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "type", intValue: nil)], debugDescription: "Cannot initialize RealtimeConnectionProviderResponseType from invalid String value connection_error", underlyingError: nil))))
2020-04-21 11:30:39.466220-0400 Appname[3544:99346] [AWSModelReconciliationQueue] receiveCompletion: error: DataStoreError: subscription item event failed with error

It looks like it's connecting but the payload sent to the endpoint appears to be invalid?
In awsconfiguration.json I see the config for AppSync as follows:
    "AppSync": {
        "Default": {
            "ApiUrl": "https://blahblahblahblahblahblah.appsync-api.us-east-1.amazonaws.com/graphql",
            "Region": "us-east-1",
            "AuthMode": "AMAZON_COGNITO_USER_POOLS",
            "ClientDatabasePrefix": "Appnamecapi_AMAZON_COGNITO_USER_POOLS"
        },
        "Appnamecapi_API_KEY": {
            "ApiUrl": "https://blahblahblahblahblahblahblah.appsync-api.us-east-1.amazonaws.com/graphql",
            "Region": "us-east-1",
            "AuthMode": "API_KEY",
            "ApiKey": "blahblahblahblahblahblah",
            "ClientDatabasePrefix": "Appnamecapi_API_KEY"
        }
    }

So I change this to an API key (but I then have to remove all the @auth directives on my schema--which is not gonna work for the app)
% amplify api update
? Please select from one of the below mentioned services: GraphQL
? Select from the options below Walkthrough all configurations
? Choose the default authorization type for the API API key
? Enter a description for the API key: Appnamecapikey
? After how many days from now the API key should expire (1-365): 365
? Do you want to configure advanced settings for the GraphQL API Yes, I want to make some additional changes.
? Configure additional auth types? No
? Configure conflict detection? Yes
? Select the default resolution strategy Auto Merge
? Do you want to override default per model settings? No

Now awsconfiguration.json has:
   "AppSync": {
        "Default": {
            "ApiUrl": "https://blahblahblahblahblahblah.appsync-api.us-east-1.amazonaws.com/graphql",
            "Region": "us-east-1",
            "AuthMode": "API_KEY",
            "ApiKey": "blahblahblahblahblahblah",
            "ClientDatabasePrefix": "blahblahblahblah_API_KEY"
        }

And now, happiness, and my DataStore operations work (albeit without ownership and groups):
2020-04-21 11:57:35.878735-0400 Appname[4052:122475] Header - Optional("{\"x-amz-date\":\"20200421T155735Z\",\"x-api-key\":\"blahblahblahblahblahblah\",\"host\":\"blahblahblahblahblah.appsync-api.us-east-1.amazonaws.com\"}")
2020-04-21 11:57:35.879285-0400 Appname[4052:122479] Connecting to url ...
2020-04-21 11:57:36.341543-0400 Appname[4052:122475] WebsocketDidConnect
2020-04-21 11:57:36.341634-0400 Appname[4052:122475] WebsocketDidConnect, sending init message...
2020-04-21 11:57:36.341772-0400 Appname[4052:122475] Validating connection
2020-04-21 11:57:36.342174-0400 Appname[4052:122484] Message type does not need signing - connectionInit("connection_init")
2020-04-21 11:57:36.342443-0400 Appname[4052:122484] Websocket write - {"type":"connection_init"}
2020-04-21 11:57:36.374642-0400 Appname[4052:122476] WebsocketDidReceiveMessage - {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}}
2020-04-21 11:57:36.375220-0400 Appname[4052:122476] WebsocketDidReceiveMessage - {"type":"ka"}
2020-04-21 11:57:36.375249-0400 Appname[4052:122475] Start subscription

So, my question: how do I get DataStore to work with Cognito user pools?
Is this supported?
Config or code?

In addition the init code is:
        try Amplify.add(plugin: AWSAPIPlugin())
        try Amplify.add(plugin: AWSDataStorePlugin(modelRegistration: AmplifyModels()))
        let storagePlugin = AWSS3StoragePlugin()
        try Amplify.add(plugin: storagePlugin)
        try Amplify.configure()

and an AWSMobileCLient extension ...
extension AWSMobileClient: AWSCognitoUserPoolsAuthProviderAsync {
    public func getLatestAuthToken(_ callback: @escaping (String?, Error?) -> Void) {
        getTokens { (tokens, error) in
            if error != nil {
                callback(nil, error)
            } else {
                callback(tokens?.idToken?.tokenString, nil)
            }
        }
    }
}

Ok we can send this question to the Wall of Shame ... of course, you have to have actually logged in with your Cognito pool user before the connection can work. In fairness, I have built websocket APIs before and generally we let you connect before validating what you were trying to do. AppSync won't even talk to you unless you are authorized. Unfortunately the error looks very low level and given that it worked well with the API Key, it did not trigger until I was doing a sequencing step through of the app startup and went aaaaaaahaaaaaaa.
I hooked up the API and DataStore initialization to trigger on the successful login of the AWSMobileClient signup/login and the DataStore websocket connection is suddenly very happy and chatty.

If its helps you ... this is my current initialization code...
    public func initMobile(_ completionHandler: @escaping (Error?) -> Void) {
        _mobile = AWSMobileClient.default()
        _mobile!.addUserStateListener(self) { (userState, info) in
            do {
                switch (userState) {
                case .guest:
                    print("USER IS IN GUEST MODE, INITIALIZE AMPLIFY")
                    try self.initAmplify()
                case .signedOut:
                    print("USER IS SIGNED OUT")
                    try self.doneAmplify()
                case .signedIn:
                    print("USER IS SIGNED IN, INITIALIZE AMPLIFY")
                    try self.initAmplify()
                case .signedOutUserPoolsTokenInvalid:
                    print("USER NEEDS TO LOGIN AGAIN")
                    try self.doneAmplify()
                case .signedOutFederatedTokensInvalid:
                    print("USER LOGGED IN USING FEDERATION BUT NEEDS NEW TOKENS")
                    try self.doneAmplify()
                default:
                    print("UNSUPPORTED")
                    try self.doneAmplify()
                }
            } catch { /* AND IGNORE */ }
        }
        _mobile!.initialize { (userState, error) in
            if error != nil {
                print("ERROR INITIALIZING MOBILE CLIENT")
            }
            completionHandler(error)
        }
    }

Reopening so that we can track this as a DX improvement for GA. Transferring to iOS team.


Added Implement Trie

🛠 Issue (Number)

Issue no #529
👨💻 Changes proposed
Hey, @Kumar-laxmi I have added the Implement Trie Algorithm to this repo. Please review y pr and merge it. Thank you!
✔ Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

Done bro @Arun9739

@Kumar-laxmi Please merge my pr. Thank you!

@Kumar-laxmi Please merge my pr. Thank you!

@Kumar-laxmi Bro its the implementation of trie so I have created another folder named Trie.

Bro its the implementation of trie so I have created another folder named Trie.

@Kumar-laxmi  it's the implementation of Trie, not tree. Still, do you want me to add this to the tree folder?

@Kumar-laxmi it's the implementation of Trie, not tree. Still, do you want me to add this to the tree folder?

@Kumar-laxmi it's the implementation of Trie, not tree. Still, do you want me to add this to the tree folder?

@Kumar-laxmi it's the implementation of Trie, not tree. Still, do you want me to add this to the tree folder?

Trie is a prefix tree, so add it there.


Add spring kafka configs to upgrade jobs

Title says it.

@dexter-mh-lee : can you take a look? seems like a lint failure.

@dexter-mh-lee's PR includes this one. So closing this.


dev: Drop support for Python 3.4, add 3.6 testing

Mypy dropped support for Python 3.4 in version 0.700. Technically, we
could separate the Python version in developer requirements from the
Python version in user requirements (where Mypy is not a dependency),
but I think that would complicate our setup too much.
Also switch to Ubuntu 16.04 for Travis testing, since support for 14.04
ends in April 2019.

Jenkins, retest this please.

Jenkins, retest this please.

Jenkins, retest this please.

@brainiak/committers, does anyone really need Python 3.4 (e.g., Ubuntu 14.04, Red Hat/CentOS 6 without Conda)?

@brainiak/committers, since no one seems to object, can we merge this PR?

I am a non-expert but seems fine to me

Thanks, @CameronTEllis. Merge, maybe?


Question about dangling awaits during shutdown

Hi there,
During some recent testing I ran into an "interesting" issue with SIGINT and similar shutdowns. The exact situation I identified is the following:
Deep inside one of my subsystems, I do an async lookup_host(), which has a timeout of apparently 20 seconds, which is await there. When hitting CTRL+C, all subsystems shut down and I get tokio_graceful_shutdown::toplevel] Shutdown successful..
At this point the program does not terminate though – it only exits after the lookup_host() future resolves/rejects. Do you happen to have an idea on how to force tokio to not wait for such things before shutting down itself?

Theoretically, after the timeout of handle_shutdown_requests is over, it should cancel all the pending futures ... Would you mind providing a reproducible example? This behaviour sounds like a bug and requires fixing :)

Hmm. It seems that lookup_host() internally uses spawn_blocking. Sadly, it's almost impossible to handle spawn_blocking gracefully during shutdown. Let me construct a minimal example for further discussion.

I was just looking into lookup_host() as well for reproduction, and figured the same thing.  I really wonder how this could be resolved nicely.

The only thing I found so far would be shutdown_timeout() or shutdown_background(), but I'm unsure how to do this with externally provided runtimes.
So spawning another runtime inside of Toplevel would probably work, but that would override the user's decision what runtime to spawn. I wonder if there is a config option of tokio::main that kills background tasks on exit, that would probably be the best option.

This seems to exhibit the behaviour you described:
use env_logger::{Builder, Env};
use miette::Result;
use std::time::Duration;
use tokio::select;

use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let hanging_task = tokio::task::spawn_blocking(|| {
        std::thread::sleep(std::time::Duration::from_secs(10));
    });

    select! {
        e = hanging_task => e.unwrap(),
        _ = subsys.on_shutdown_requested() => ()
    }

    Ok(())
}

#[tokio::main]
async fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    Toplevel::new()
        .catch_signals()
        .start("Hanging Task", hanging_task)
        .handle_shutdown_requests(Duration::from_millis(2000))
        .await
        .map_err(Into::into)
}

Yeah, that seems to be pretty much it. I'm screening the tokio docs and code, but haven't found anything for it yet.

I could add something along those lines in handle_shutdown_requests:
use std::{thread, time::Duration};

use env_logger::{Builder, Env};
use miette::Result;
use tokio::select;
use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let hanging_task = tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(10));
    });

    select! {
        e = hanging_task => e.unwrap(),
        _ = subsys.on_shutdown_requested() => {
            // Spawn thread that kills leftover tasks if necessary
            thread::spawn(|| {
                thread::sleep(Duration::from_millis(1000));
                println!("Shutdown seems to hang. Killing program ...");
                std::process::exit(1);
            });
        },
    }

    Ok(())
}

#[tokio::main]
async fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    Toplevel::new()
        .catch_signals()
        .start("Hanging Task", hanging_task)
        .handle_shutdown_requests(Duration::from_millis(200))
        .await
        .map_err(Into::into)
}

What do you think?

I think that's a sane way to handle it, as long as the kill timeout is configurable. Though technically we already have timeout defined in handle_shutdown_requests.

The only problem is that it isn't guaranteed that Toplevel is used like this, it could be used in a bunch of ways, including somewhere nested in the program. And in that case we probably don't want to provoke a exit(1) if the shutdown hangs.
We could add a .exit_program_on_hang() option that can be appended to .handle_shutdown_requests().
Might have to sleep over it, though. I'm not perfectly happy with this yet, it seems too hacky.

Sure thing, take your time (not too much please, I definitely like this resolved ;)). I agree that it should be an opt-in feature though.

@DASPRiD Until I/we came up with a solution, you can work around it like this:
use std::{thread, time::Duration};

use env_logger::{Builder, Env};
use miette::Result;
use tokio::select;
use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let hanging_task = tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(10));
    });

    select! {
        e = hanging_task => e.unwrap(),
        _ = subsys.on_shutdown_requested() => (),
    }

    Ok(())
}

#[tokio::main]
async fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    Toplevel::new()
        .catch_signals()
        .start("Hanging Task", hanging_task)
        .handle_shutdown_requests(Duration::from_millis(200))
        .await?;

    thread::spawn(|| {
        thread::sleep(Duration::from_millis(1000));
        log::error!("Shutdown seems to hang. Killing program ...");
        std::process::exit(1);
    });

    Ok(())
}

Feel free to post further thoughts or ideas, I'm open for everything on this problem. I'm kinda stumped right now how to handle this properly.

I agree that this is definitely not the nicest solution. Considering that such a blocking thread should usually just be ignored and an exit should happen immediately, this feels like an issue on the tokio side.
Granted though, I was only running into this issue because I had to restart my program because of network issues, and that's exactly when I noticed this problem of course. As long as the network just works, the shutdown is normal. So this is definitely an edge-case.

The best solution I can come up with right now is to put above chunk of code in a function, like
fn kill_on_hang(timeout: Duration) {
    thread::spawn(|| {
        thread::sleep(timeout);
        log::error!("Shutdown seems to hang. Killing program ...");
        std::process::exit(1);
    });
}

So that people can use it like this:
use std::{thread, time::Duration};

use env_logger::{Builder, Env};
use miette::Result;
use tokio::select;
use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let hanging_task = tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(10));
    });

    select! {
        e = hanging_task => e.unwrap(),
        _ = subsys.on_shutdown_requested() => (),
    }

    Ok(())
}

#[tokio::main]
async fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    Toplevel::new()
        .catch_signals()
        .start("Hanging Task", hanging_task)
        .handle_shutdown_requests(Duration::from_millis(200))
        .await?;

    kill_on_hang(Duration::from_secs(1));

    Ok(())
}

But it doesn't feel right. I agree that I think the solution should be on tokio side somewhere. And it is, if you use tokio's runtime directly and can call Runtime::shutdown_background(). It just sucks that tokio::Runtime's default drop behaviour is to wait indefinitely.

@DASPRiD In case you want to report it to tokio, this is the minimal reproducible example:
use std::{thread, time::Duration};

#[tokio::main]
async fn main() {
    tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(10));
    });
}

I should do that, thanks a lot! I'll reference this issue over there.

Edited my previous comment to add why I believe it should behave like this.

I've created an issue on the tokio repository. Maybe you can chime in there as well if you have anything to add :heart:

@DASPRiD I prototyped a solution in tokio:
Cargo.toml:
[patch.crates-io]
tokio = { version = "1.23.1", git = "https://github.com/Finomnis/tokio", branch = "main_arg_ignore_hanging_threads" }

[dependencies]
tokio-graceful-shutdown = "0.12.1"
tokio = { version = "1.23.1", features = ["full"] }
env_logger = "0.10.0"
miette = { version = "5.5.0", features = ["fancy"] }

use std::{thread, time::Duration};

use env_logger::{Builder, Env};
use miette::Result;
use tokio::select;
use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let mut hanging_task = tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(100));
    });

    let joinhandle_ref = &mut hanging_task;

    select! {
        e = joinhandle_ref => e.unwrap(),
        _ = subsys.on_shutdown_requested() => (),
    }

    Ok(())
}

#[tokio::main(ignore_hanging_threads = true)]
async fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    Toplevel::new()
        .catch_signals()
        .start("Hanging Task", hanging_task)
        .handle_shutdown_requests(Duration::from_millis(2000))
        .await
        .map_err(Into::into)
}

What are your thoughts?

That looks quite good to me. The parameter name is a little ambiguous though maybe, as this is quite specific to tokio spawned threads. Apart from that, it looks like a really clean solution.

Yah, it's still open for debate. Now I just need two things:

tests
agreement with the tokio devs

The second one could take a while, tokio is notoriously understaffed with many open pull requests. They are doing an excellent, to clarify, but there's just too many people wanting things done :D

Maybe ignore_pending_threads instead of ignore_hanging_threads? Or detach_threads_on_exit? I'm not sure, I hate naming things :D

I feel you on that, coming up with short but still descriptive names is… hard. Maybe something like abandon_pending_threads?

Sounds good, might just it. Gotta leave for today though, can't promise when I'll get to it. Greetz

@DASPRiD I opened a PR for the first part of the fix, fyi: https://github.com/tokio-rs/tokio/pull/5360

Thanks for keeping me in the loop. I assume a second PR would add that to the tokio-main macro?

Exactly :)

@DASPRiD It might be unlikely that we get the parameter for #[tokio::main] merged. I'm currently fighting for the config option for Runtime, that one might happen.  Wish me luck ;)

I see that there was no movement on the PR yet, I really hope they get around to it eventually :)

I'm not sure, they seem to be quite busy ... I'll ask again in their discord soon.

@DASPRiD After a long discussion they rejected the pull request and instead proposed a solution on our side.
Their proposal was to wrap the runtime in a newtype that calls shutdown_background() in its Drop implementation.
Here is the documentation on what #[tokio::main] actually expands to: https://docs.rs/tokio/latest/tokio/attr.main.html#using-the-multi-thread-runtime
With that, this is how such a newtype thing would look like:
use std::{future::Future, thread, time::Duration};

use env_logger::{Builder, Env};
use miette::Result;
use tokio::{runtime::Runtime, select};
use tokio_graceful_shutdown::{SubsystemHandle, Toplevel};

struct RuntimeWithInstantShutdown(Option<Runtime>);
impl RuntimeWithInstantShutdown {
    pub fn new() -> Self {
        Self(Some(
            tokio::runtime::Builder::new_multi_thread()
                .enable_all()
                .build()
                .unwrap(),
        ))
    }
    pub fn block_on<F: Future>(&self, future: F) -> F::Output {
        self.0.as_ref().unwrap().block_on(future)
    }
}
impl Drop for RuntimeWithInstantShutdown {
    fn drop(&mut self) {
        self.0.take().unwrap().shutdown_background()
    }
}

async fn hanging_task(subsys: SubsystemHandle) -> Result<()> {
    let hanging_task = tokio::task::spawn_blocking(|| {
        thread::sleep(Duration::from_secs(10));
    });

    select! {
        e = hanging_task => e.unwrap(),
        _ = subsys.on_shutdown_requested() => (),
    }

    Ok(())
}

fn main() -> Result<()> {
    // Init logging
    Builder::from_env(Env::default().default_filter_or("debug")).init();

    RuntimeWithInstantShutdown::new().block_on(async {
        Toplevel::new()
            .catch_signals()
            .start("Hanging Task", hanging_task)
            .handle_shutdown_requests(Duration::from_millis(200))
            .await
            .map_err(Into::into)
    })
}

@Finomnis Interesting, thanks a lot for your effort! Do you have any plan to have a macro for that within this library to make it easier for users?

Not really, to be honest. It's different enough that it shouldn't be part of this crate in my opinion.


Fixed IsPartyPublic erroring on LAN

Fixed NullReferenceException on LAN from IsPartyPublic function.

would !!GameNetworkManager.Instance.lobbyHostSettings?.isLobbyPublic not also work but be shorter?

Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?) CS0266


Update CLI extensions available doc

Update CLI extensions available doc.
Triggered by Azure/azure-cli-extensions - TRAVIS_BUILD_ID=552487542
https://github.com/Azure/azure-cli-extensions/commit/bed94a401f6c53b08f6d65b00c2221f64e72f9f8

Docs Build status updates of commit 15cf611:
:clock10: Full build: the average full build time is 7 min(s) 13 sec(s), this is based on the last 121 build(s) for this repository.

Docs Build status updates of commit 15cf611:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-extensions-list.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Copied name, description from a service offering

Created a mechanism to build out parameters specific to the service they come from
Added a service_offering_ref to a portfolio_item on create

👍


qml support

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

the qml language might be not supported now, when I switch to qml file, the outline view won't updated

This extension relies on vscode OR other extensions to provide symbol information
If the build-in outline view can't display qml outline, this extension can't work as well.


jest-diff: Add options for colors and symbols

Summary
Fixes #7980
Let dependents configure jest-diff to follow other conventions, like diff or git diff
Add properties to DiffOptions type:

name
default

aColor
chalk.green

aSymbol
'-'

bColor
chalk.red

bSymbol
'+'

commonColor
chalk.dim

commonSymbol
' '

Removed named export getStringDiff and move conditions to callers of the following:
Add named export diffStringsAligned /cc @ewanharris does this fit your application?
Add named export diffStringsUnaligned
Add condition Number.isSafeInteger(contextLines) to fix TypeError: Cannot read property 'length' of undefined
Add README.md file for package :)

To help you prioritize your attention, the most complicated code changes:

printDiffs.ts in jest-diff replace old export that was not re-usable outside of Jest :(
index.ts in jest-matcher-utils include conditions on the calling side
print.ts in jest-snapshot include specific conditions on the calling side

Part of me wishes this was in 24.9.0 and part of me is thankful that it isn’t
The next step will be to use these options for alternative colors in snapshot diffs
Test plan

Added 21 tests and renamed 1 test in diff.test.ts in jest-diff
Added 2 tests in printDiffOrStringify.test.ts in jest-snapshot
Added 4 tests in printDiffOrStringified.test.ts in jest-snapshot

Some new tests that I temporarily omitted from jest-diff confirmed a problem with substring highlight that I had seen recently while reviewing snapshot tests. I will fix it in a separate PR.
See also pictures in the following comment

Here is the realistic example of codemod from the issue by Ewan Harris
const options = {
  aAnnotation: 'Original',
  aColor: chalk.red,
  bAnnotation: 'Modified',
  bColor: chalk.green,
});
const difference = diffStringsAligned(a, b, options);

First example picture baseline above and optional below

2 more example pictures baseline at left and optional at right
const options = {
  aSymbol: '<',
  bSymbol: '>',
};
const difference = diffLines(a, b, options); // default export

const options = {
  commonColor: line => line,
  commonSymbol: '=',
};
const difference = diffLines(a, b, options); // default export

Sorry about the conflict. It's an autifxable eslint rule, so shouldn't be too bad to resolve at least 🙂

@pedrottimark fix conflicts and merge this? I think it's good to go 🙂


chpasswd not working

I was using the latest phusion image and couldn't get chpasswd to work.
It turns out that this is a known issue with Ubuntu, fixed here:
https://github.com/sequenceiq/docker-pam/blob/master/ubuntu-14.04/Dockerfile
I've verified that adding a custom build of PAM solves this issue. Just add the following four lines to the Dockerfile (as provided in the link above):
# Setup build environment for libpam
RUN apt-get update && apt-get -y build-dep pam
# Rebuild and istall libpam with --disable-audit option
RUN export CONFIGURE_OPTS=--disable-audit && cd /root && apt-get -b source pam && dpkg -i libpam-doc*.deb libpam-modules*.deb libpam-runtime*.deb libpam0g*.deb

I'm wary about introducing this change. I see the solution, but I can't find a reference to the underlying bug. Do you have more information about the bug?

Yes. I forgot to include a link to a bug description I found. Here it is: https://github.com/docker/docker/issues/5704

I've run into this issue myself, and I've confirmed that the fix works well, so planning this for the next release.

:+1:

Great work, @FooBarWidget :-)