Bugfix: Add Site metadata to Scatterplot Widget

Expected Behavior
Site-metadata should be added to hover.
Current Behavior
Chart quietly bombs
Possible Solution
Seems like some naming mis-matches with rbm-viz
Steps to Reproduce
# gsm @ v2-dev branch
dfSite <- clindata::ctms_site %>% rename(SiteID = site_num)
wfs <- MakeWorkflowList(strNames=c(paste0("kri000", 1:9),"kri0010","kri0011","kri0012"))
results <- Study_Assess(lWorkflows=wfs$kri0001)

# doesn't run
gsm::Widget_ScatterPlot(
    dfSummary = kri0001$lData$dfSummary,
    lLabels = wfs$kri0001$meta,
    dfSite = clindata::ctms_site,
    dfBounds = kri0001$lData$dfBounds
  )

# runs
gsm::Widget_ScatterPlot(
    dfSummary = kri0001$lData$dfSummary,
    lLabels = wfs$kri0001$meta,
    dfBounds = kri0001$lData$dfBounds
  )

Context (Environment)
v2-dev branch
Possible Implementation

Additional Comments

Implemented in #1614


Stuck on "Updating verification policy for network"

This might be due to a wrong setup as it works for one of my two corda networks, but I am unable to use the "update-verification-policy" (or "update-access-control-policy") in the faulty one as the flow seems to get stuck.
The terminal output:
3735 [main] INFO net.corda.client.rpc.internal.RPCClient - Startup took 995 msec Verification policy from file: {   "securityDomain": "Corda_Network_Test",   "identifiers": [{     "pattern": "localhost:10009#com.*",     "policy": {       "type": "Signature",       "criteria": ["PartyA"]     }   }] } Updating verification policy for network
The Corda Terminal output:
2023-06-08 09:48:06 Verification Policy to be updated in the vault: VerificationPolicyState(securityDomain=Corda_Network_Test, identifiers=[Identifier(pattern=localhost:10009#com.*, policy=Policy(type=Signature, criteria=[PartyA]))], linearId=a63fe933-b5d4-4951-9f27-66f76994e245, participants=[]) 2023-06-08 09:48:06 Current version of verification policy is StateAndRef(state=TransactionState(data=VerificationPolicyState(securityDomain=Corda_Network_Test, identifiers=[Identifier(pattern=, policy=Policy(type=Signature, criteria=[PartyA]))], linearId=aabe6ce0-2335-4162-858b-c3e145636cd3, participants=[O=PartyA, L=New York, C=US]), contract=com.weaver.corda.app.interop.contracts.VerificationPolicyStateContract, notary=O=Notary, L=London, C=GB, encumbrance=null, constraint=SignatureAttachmentConstraint(key=EC Public Key [24:95:04:e4:ea:ba:08:3f:fc:bd:1f:67:9a:b1:31:53:37:1a:29:84] 2023-06-08 09:48:06             X: 38d226dcd0fa574316da478aa75225e6ce18f65cbd96e60bf3c8251b1965417 2023-06-08 09:48:06             Y: 56e5dcf7ccab21b712601ed0278501f2f33d0b5fdaa4c09e62639464e4910871 2023-06-08 09:48:06 )), ref=D02168B310E2D66B43572EB708E77B6900E2A92B17C0BF85418D56FAEE39BF61(0)) 2023-06-08 09:48:06 Updating state to VerificationPolicyState(securityDomain=Corda_Network_Test, identifiers=[Identifier(pattern=localhost:10009#com.*, policy=Policy(type=Signature, criteria=[PartyA]))], linearId=aabe6ce0-2335-4162-858b-c3e145636cd3, participants=[O=PartyA, L=New York, C=US]) 2023-06-08 09:48:06
I can call the create-verification/access-control-policy flow ones, but am unable to update the policies.

This seems to be related to the network setup. Creating network 2 by duplicating network 1 resulted in this issue. Recreating network 2 from scratch has fixed this issue for now.


Bump up deps on Tendermint crates

Going from 0.18.0 to 0.18.1

For contributor use:

[ ] Updated the Unreleased section of CHANGELOG.md with the issue.
[ ] If applicable: Unit tests written, added test to CI.
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Updated relevant documentation (docs/) and code comments.
[ ] Re-reviewed Files changed in the Github PR explorer.

Codecov Report

Merging #671 (a204436) into master (b1b37f5) will increase coverage by 32.4%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #671      +/-   ##
=========================================
+ Coverage    13.6%   46.1%   +32.4%
=========================================
  Files          69     151      +82
  Lines        3752   10240    +6488
  Branches     1374       0    -1374
=========================================
+ Hits          513    4722    +4209
- Misses       2618    5518    +2900
+ Partials      621       0     -621

Impacted Files
Coverage Δ

modules/src/address.rs
100.0% <ø> (ø)

...application/ics20_fungible_token_transfer/error.rs
0.0% <ø> (ø)

...ion/ics20_fungible_token_transfer/msgs/transfer.rs
0.0% <ø> (ø)

modules/src/events.rs
0.0% <ø> (ø)

modules/src/handler.rs
100.0% <ø> (ø)

modules/src/ics02_client/client_def.rs
48.3% <ø> (ø)

modules/src/ics02_client/client_type.rs
79.1% <ø> (+31.5%)
:arrow_up:

modules/src/ics02_client/context.rs
100.0% <ø> (ø)

modules/src/ics02_client/error.rs
100.0% <ø> (ø)

modules/src/ics02_client/events.rs
15.7% <ø> (+15.7%)
:arrow_up:

... and 258 more

Continue to review full report at Codecov.

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


Suggestion: Floating Labels

It would be nice to have floating labels ala https://codepen.io/amiechen/pen/xjvMGb
I tried applying the peer classes to the input and label controls in a formcontrol class - but - it is not working fine.

Still an interesting option. Did anyone got this working ?

Here's an example: https://github.com/saadeghi/daisyui/issues/298#issuecomment-967194458

I feel like this would be great to have as a default!


Update PCRE2 to 10.42

The patch was reapplied.
10.42 added some files for RISC-V, I opted to keep them.

The last attempt to update PCRE2 failed. See https://github.com/godotengine/godot/pull/70472 . Have these issues been fixed?

I guess it makes this a duplicate then


search:and-not-query is ignored in QueryBatcher

Version of MarkLogic Java Client API
6.5.0
Version of MarkLogic Server
11.0.2
Java version
JDK 17
OS and version
ProductName:		macOS
ProductVersion:		13.5
BuildVersion:		22G74
Input: Some code to illustrate the problem
final RawCombinedQueryDefinition structQueryDef = queryManager
            .newRawCombinedQueryDefinition(new StringHandle(
                """
                    <search:search xmlns:search="http://marklogic.com/appservices/search">
                       <search:query>
                          <query xmlns="http://marklogic.com/appservices/search" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                             <search:and-query>
                                   <search:range-constraint-query>
                                      <search:constraint-name>application</search:constraint-name>
                                      <search:value>testapp</search:value>
                                      <search:range-operator>EQ</search:range-operator>
                                   </search:range-constraint-query>
                                   <search:and-not-query>
                                      <search:annotation type="searchable-collections" />
                                      <search:positive>
                                         <search:collection-query>
                                            <search:uri>workspace/testapp/someCollection</search:uri>
                                         </search:collection-query>
                                      </search:positive>
                                      <search:negative>
                                            <search:collection-query>
                                               <search:uri>workspace/testapp/ignoredCollection</search:uri>
                                            </search:collection-query>
                                      </search:negative>
                                   </search:and-not-query>
                             </search:and-query>
                          </query>
                       </search:query>
                    </search:search>
                    """), "all");

While executing a query that contains a search:and-not-query, I noticed that the QueryBatcher is simply ignoring that part. However, the same query that is executed for a simple search does work.
 final SearchHandle result = queryManager.search(structQueryDef, new SearchHandle());         result.getMatchResults();
The above search works. Same query passed to a QueryBatcher and calling batcher.getItems() does not take into account the and-not-query part.
Actual output: What did you observe? What errors did you see? Can you attach the logs? (Java logs, MarkLogic logs)
Executing the above query does not take into account the and-not-query for QueryBatcher.
Expected output: What specifically did you expect to happen?
The and-not-query is taken into account for QueryBatcher.
Alternatives: What else have you tried, actual/expected?
I have found a possible solution, instead of using directly the and-not-query, I have combined a manual and with a not, and it works like this.

Thanks @marcopacurariu3 , we'll work on reproducing this today and will report back to you.

Great @rjrudin, thank you!

@marcopacurariu3 I haven't had luck reproducing this yet. I added a new JUnit test - https://github.com/marklogic/java-client-api/commit/acb50855c17852ccf8afe8c34759f9fe642e9b0c#diff-52e216474c59fcf9a974f2706e674b08ef0c484eee84fb74a7839b0439c99bd5R186 - that does the following:

Adds the same XML doc with different URIs to collections test1 and test2.
Verifies that a regular structured and-not query (with a term-query on "world", which is in both documents) works.
Verifies that a combined and-not-query works.
Verifies that the same combined and-not-query works with DMSDK.

I also verified that if I comment out the and-not query, then the test fails as it returns 2 documents instead of only 1.
So the and-not-query appears to be getting picked up in all cases.
Could you try modifying your query to do a term-query instead of a range-constraint-query? Looks like you could just do a term-query on "testapp". Perhaps the issue requires the use of both a range query and a set of search options.

Sure, I will play around and come back to you tomorrow.
Thanks a lot for digging into it.

@rjrudin, thanks once again for the implemented test. This helped me finding out the real issue. It works with range-constraing-query in your example, too, so it's not that.
The issue is that I am using "positive/negative" instead of "positive**-query**/negative**-query**".
So, "positive" works in a simple search, but it does not work in QueryBatcher. The QueryBatcher supports only "positive-query" or "negative-query".

Hi @marcopacurariu3  - I checked the docs for a structured and-not-query - https://docs.marklogic.com/guide/search-dev/structured-query#id_65108 - and it does require positive-query and negative-query. I'm a little surprised the server doesn't reject positive and negative but rather ignores it.
I'm not sure why your query would work with positive and negative as I'm fairly certain those should always be ignored. I verified in my test that if I use those element names, the test fails.
I think the right approach here is to use positive-query and negative-query per the server docs link above. I'm going to close this, but please let me know if you run into issues with those elements working.


Dead link to Colab

Hi there!
Thank you for your amazing work!
I would like to flag that the link to the Colab demo seems dead (file does not exist).
Cheers
Valentin

Fixed now


account for timezone in metrics/report generation

metrics grouped by time, especially daily and hourly, need to account for timezone. Most straightforward would be to use the site's timezone.
For example, here's an hourly metrics figure for the OASIS site that specified as GMT/Etc+7:

Most users would probably prefer the metrics reported in local time and thus in this case roughly centered on solar noon.

This is easy enough for the metrics graphs, but harder to do for the time series. Bokeh converts tz-aware times into tz-naive UTC times. I think the only solution is to convert the tz-aware times into tz-naive times in the desired time zone. Easy enough if done within any given plot function, but the reports currently use the construct_fx_obs_cds to create a common ColumnDataSource for linked plots. That means that we'd be passing around naive, non-UTC times, which requires some care.
Know of any other solution @alorenzo175?

I see ADVI uses the tz_convert('MST').tz_localize(None) approach

It does, not ideal, but perhaps best for now. Better would be to help implement https://github.com/bokeh/bokeh/issues/1135 for support in Bokeh


Slim functionality failing on Windows

Slim functionality not working at all on windows.
Still getting test folders >> https://snag.gy/g5SelK.jpg
Using the following options:
custom:
    pythonRequirements:
      slim: true
      slimPatterns:
        - "*test*"
        - "*.exe"
      pythonBin: python
      dockerizePip: true

Issue has been noted here by @dee-me-tree-or-love

Huh.. I thought it was supposed to work with docker @dee-me-tree-or-love ?

@dschep Nope - as per comments in #191 completely busted for windows

Hey everyone, huge apologies, I have been totally out for the past months of the summer...
Now I finally got back to look into the problem and have noticed something interesting.
I am currently using the "serverless-python-requirements": "^4.1.1" version.
While trying out to deploy I have noticed that when run with slim: true and dockerizePip: true on Windows 10 I have also received the error:

find: missing argument to `-exec'

Then, when reviewing the console commands for package removal noticed that
changing `&& find ${folderPath} -name "*.so" -exec strip {} \\;`,
to `&& find ${folderPath} -name "*.so" -exec strip {} ;`
solves the issue :thinking:.
So I have tried to escape the semicolon using the backslashes, which appaaaarently might not be necessary... Not sure if that was the whole deal, but could someone try it out too mayube? :sweat_smile:
Sorry again for not keeping up for so long...
Node version: v8.11.1
Serverless version: 1.27.3
My serverless.yml
plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux
    # zip: true
    slim: true

@sweepy84 @dschep

@dee-me-tree-or-love, check out #227

@dschep oh cool, on it!


1.5.0

Release version 1.5.0, supersedes #33

A new version of the package @metamask/etherscan-link (1.5.0) was published at 2021-03-08T18:05:45.668Z from
[redacted]. The shasum of this package was c6940ea934b3a7dcf04e459d9ea3c630b69f6b5f.


Clarify the ABI spec as to how contract calls from an external context should bundle the arguments to pass them to CALL

A contract call from an external context requires passing some data through the $rA register (see CALL).
Register $rA is a memory address from which the following fields are set (word-aligned):

bytes
type
value
description

32
byte[32]
to
Contract ID to call.

8
byte[8]
param1
First parameter.

8
byte[8]
param2
Second parameter.

param2 is used to pass the arguments to the contract method.
In the special case where the contract method has a single argument that fits in a word, it is possible to store the value of that argument in param2 directly. In all other cases (single large argument or multiple arguments), param2 has to store a pointer to the pile of data containing the arguments.
The specs should be made clear as to how the above should be done. I think having param2 always containing a pointer to the data regardless of how the data looks like is more sensible than the above as it simplifies external callers.

Relevant case: https://github.com/FuelLabs/fuels-rs/issues/201

In https://github.com/FuelLabs/sway/issues/1230 it's suggested that single element structs which fit in a register and so that should also be specified explicitly (if it isn't already).

It is not just structs though.. so we have to be clear about other types as well such as strings.

This issue: https://github.com/FuelLabs/sway/issues/1368 now has more information about the problem.
The spec needs to clarify two things:

How data is passed into the contract using param2
How data is passed out of the contract using ret/retd

As per the recent discussion around this, integers and booleans should be passed by value into the contract and should be returned using ret. All other types should be passed as a pointer (i.e. param2 contains a pointer to the data and not the data itself) and returned using retd.


Update CLI flags in node overview doc

I was reading the node overview page in the docs and noticed a few flags for kubelet and the controller-manager were outdated. This fixes those flags and add/removes some extra spaces.

I signed it!

LGTM, thanks @kelcecil!


"Flutter SDK not found".

My build.gradle is giving this error in android studio "Flutter SDK not found".
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30

Is replacing GradleException with FileNotFoundException solve your issue?

No it doesn't

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Persistence of stale session ids in MnesiaCache

Hello all! :)
I have recently noticed a peculiar scenario in an API using Mnesia-backed Pow in production which I'm interested in reproducing to get to the bottom of it, but I've had no success thus far.
Due to reasons yet unknown some sessions are seemingly persisting in the cache even after their TTL has passed.
We have set up an authentication plug similar to the one in "How to use Pow in an API" tutorial and we are using Pow.Store.Backend.MnesiaCache as our cache_store_backend. Under normal circumstances, creating/renewing/deleting sessions via the plug works just as expected, as well as having them expire automatically. Even though the application is containerized, mnesia data is kept between versions in an attached persistent volume. I'm currently using this snippet to check active sessions for an user:
iex> config = [pow_config: [otp_app: :app], backend: Pow.Store.Backend.MnesiaCache]
iex> {:ok, user} = get_user(...)
iex> sessions = Pow.Store.CredentialsCache.sessions(config, user)
[...] # session_ids

Testing with a newly-created user, this list behaves normally, having a session id inserted after signing in, replaced after renewal, and deleted after signing out or after 30 minutes. However, for some of the earlier users, this list has been steadily growing over the months, even reaching hundreds of session ids. Luckily, these sessions cannot be used for authentication, since Pow.Store.CredentialsCache.get/1 returns :not_found.
Reproducing these steps in CredentialsCache, the first call for Base.get returns the expected {user_key, metadata}, but the second one returns :not_found. Manually assembling the session_key ([struct, :user, id, :session, session_id]) I was also able to verify that the timestamps are also still present in the cache.
Next, I tried to inspect the current state of MnesiaCache as well using the code below:
iex> Process.whereis(Pow.Store.Backend.MnesiaCache) |> :sys.get_state()
%{
  invalidators: %{
    ...
  }
}

And found that all of the stale sessions still had invalidators in the state, and the call to Process.read_timer/1 to each of their References returned false which suggests they should be expired. Then I went to check the deletion logic in MnesiaCache and tried to reproduce its steps as well. Right away it begins by fetching the key so I figured I'd get the same result by calling get/2:
iex> Pow.Store.Backend.MnesiaCache.get(config, hd(sessions))
:not_found

Which according to table_get/2 means that the fetch has returned nil. This seemed off since the same call for Pow.Store.Base.get/3 yielded the {user, metadata} earlier, and it was at this point that I decided to reach out for help. :sweat_smile:
What could be going off here? I suspect it has to do with sessions that persist between deploys, but I couldn't reproduce it consistently yet.
Any help will be much appreciated, thanks!

Very peculiar. This will take some effort to figure out, but could very well be a bug!
First, lets verify that when you fetch the key calling Pow.Store.Backend.MnesiaCache.get(config, hd(sessions)), the config also matches what credentials cache would set. You'll need to set a namespace and with the session cache it would be: [namespace: "credentials"]
Next, let's check what format the existing keys have and what's the expire timestamp value. Maybe something have set a much larger expire timestamp. If the config setup above worked it should return them.
If not you should be able to query them directly from Mnesia with :mnesia.dirty_select([{{Pow.Store.Backend.MnesiaCache, :_, :_}, [], [:"$_"]}]). If you also have other caches in Mnesia then this may produce too many results to go through, and could be scoped with: :mnesia.dirty_select([{{Pow.Store.Backend.MnesiaCache, ["credentials", :_], :_}, [], [:"$_"]}])
The Process.read_timer/1 returning false is interesting. It can happen when the timer has expired, when the ref doesn't exist, or if it has been cancelled. I suspect it may have been cancelled. This happens in multiple places, among others when the key is deleted or the key is upserted. But if you see it consistently being false then there may be something different going on.
First we'll check if you can fetch the key and values so we can further debug if there's anything different about the old sessions.

Thank you for the reply @danschultzer !
Indeed once I added the missing namespace, the session was returned in one piece. My bad! Could that somehow be misconfigured on the app's end as well? In a way that might be preventing MnesiaCache from being able to fetch its keys from inside delete_or_reschedule/3, which would leave the invalidators and table keys untouched. Here's our Pow config:
config :app, :pow,
  user: App.Auth.User,
  users_context: App.Auth,
  extensions: [PowResetPassword, PowEmailConfirmation, PowPersistentSession, PowInvitation],
  repo: App.Repo,
  cache_store_backend: Pow.Store.Backend.MnesiaCache,
  persistent_session_cookie_opts: [
    secure: true
  ]

Querying the expire timestamps, it does look like there's a significant chunk that's already past their expiration date.
iex> alias Pow.Store.Backend.MnesiaCache
iex> :mnesia.dirty_select(MnesiaCache, [{{MnesiaCache, ["credentials", :_], :_}, [], [:"$_"]}]) |>
Map.new(fn {_cache, key, {_, expire}} -> {key, DateTime.from_unix(expire, :millisecond) end)
%{
  ["credentials", "bb8a0a9b-d5dd-4d6e-8913-f4de38bafbd5"] => {:ok,
   ~U[2023-08-28 21:16:42.873Z]},
  ["credentials", "65981219-a750-4001-8361-586ad5f07a5c"] => {:ok,
   ~U[2023-08-10 20:28:33.378Z]},
  ["credentials", "db7ffa49-143a-46cb-90e8-c4efba633849"] => {:ok,
   ~U[2023-08-10 19:02:25.777Z]},
  ["credentials", "b7709629-17e8-42f8-ad87-8d5ab3137a0e"] => {:ok,
   ~U[2023-07-13 20:15:53.189Z]},
  ["credentials", "bebe6449-2c8e-49fb-9da5-146a4212b5cf"] => {:ok,
   ~U[2023-06-13 23:52:52.089Z]},
  ["credentials", "dc395bc3-a9b5-4d2d-b78c-9a95ef6beb7e"] => {:ok,
   ~U[2023-07-14 19:53:13.103Z]},
  ["credentials", "784fb420-a415-41c6-9c5a-56fd27cd1f7b"] => {:ok,
   ~U[2023-06-27 22:24:41.075Z]},
  ["credentials", "78d0b931-6258-4e53-a7e9-6d9ea0501a73"] => {:ok,
   ~U[2023-08-29 20:58:04.250Z]},
  ["credentials", "96e426c6-cfcc-44f5-a664-351af9a52c6d"] => {:ok,
   ~U[2023-05-24 22:32:45.565Z]},
...

Could that somehow be misconfigured on the app's end as well?

I don't believe so as you can fetch the credentials setting the cache. The only way you can override this namespace is to make a custom cache module.
Back to what could go wrong here. Following the codepath we know that these are added to the invalidators when starting the mnesia cache (as you already wrote):
https://github.com/pow-auth/pow/blob/7c5775818b799d590d441d52510ae6deeaf6f074/lib/pow/store/backend/mnesia_cache.ex#L455-L460
The TTL being 0 is what catches my eye here. We are calling Process.send_after/2 with the TTL, and this will trigger invalidate:
https://github.com/pow-auth/pow/blob/7c5775818b799d590d441d52510ae6deeaf6f074/lib/pow/store/backend/mnesia_cache.ex#L229-L234
https://github.com/pow-auth/pow/blob/7c5775818b799d590d441d52510ae6deeaf6f074/lib/pow/store/backend/mnesia_cache.ex#L236-L238
https://github.com/pow-auth/pow/blob/7c5775818b799d590d441d52510ae6deeaf6f074/lib/pow/store/backend/mnesia_cache.ex#L202-L206
https://github.com/pow-auth/pow/blob/7c5775818b799d590d441d52510ae6deeaf6f074/lib/pow/store/backend/mnesia_cache.ex#L208-L213
From reading the docs where it says that the messages may be received before the message send by Process.send_after/4, makes me wonder if the reverse is happening here. What if the state that is ultimately set by init_invalidators only gets set after the message was sent and handled in the GenServer? It matches up with the ref being false. I'll set up a test to replicate this exact scenario, to see if that's the cause.

No, I can't reproduce the error by only setting an expired TTL and restarting:
# test/pow/store/backend/mnesia_cache_test.exs
    test "expired records are purged immediately on startup" do
      :mnesia.dirty_write({MnesiaCache, ["pow:test", "key"], {"value", :os.system_time(:millisecond) - 1}})
      assert MnesiaCache.get(@default_config, "key") == "value"
      restart(@default_config)
      assert_receive {:mnesia_table_event, {:delete, _, _}} # Wait delete to happen
      assert MnesiaCache.get(@default_config, "key") == :not_found
    end

This all works as expected. I'll try a few other things, and see how I can reproduce something where the session isn't expired.

I've inspected the codepath locally with a copy of our staging environment and one thing that caught my attention is the config that is being passed around is an empty list. I guess that's to be expected as I'm not passing any extra options in application.ex, though.
With the inspects still in place, I then tried to sign in with an user and lo and behold, this time the config was there: :exploding_head:
[info] POST /api/v1/signin
trigger_ttl("4981f2d6-0452-477a-9416-c7008d860be4", 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.1183618603.1427636226.146442>
trigger_ttl([App.Auth.User, :user, 1], 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.1183618603.1427636226.146450>
trigger_ttl([App.Auth.User, :user, 1, :session, "4981f2d6-0452-477a-9416-c7008d860be4"], 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.1183618603.1427636226.146453>
trigger_ttl("e08589b5-5eb8-48e5-880a-d7812b16538d",<PHONE_NUMBER>, [ttl:<PHONE_NUMBER>, namespace: "persistent_session"]): #Reference<0.1183618603.1427636226.146456>
[info] Sent 200 in 475ms

The MnesiaCache usage docs do mention namespace as a configuration option, but it looks like it defaults to "cache". I tried to pass it as "credentials" and now it looks like those entries were promptly cleared!
iex> :mnesia.dirty_select(MnesiaCache, [{{MnesiaCache, ["credentials", :_], :_}, [], [:"$_"]}])
[]

There are still invalidators in there, but only those with UUID keys, and they still have mostly active timers:
iex> Process.whereis(Pow.Store.Backend.MnesiaCache) |> :sys.get_state() |> Map.get(:invalidators) |> Map.values() |> Enum.map(& Process.read_timer(&1))
[2488410885, false,<PHONE_NUMBER>, false,<PHONE_NUMBER>, false, false,<PHONE_NUMBER>,
<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>, false,<PHONE_NUMBER>, false,
<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,
<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>, 678361955, false,<PHONE_NUMBER>, false,
<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>, false, false, false,<PHONE_NUMBER>,
<PHONE_NUMBER>,<PHONE_NUMBER>, false,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,
<PHONE_NUMBER>, false,<PHONE_NUMBER>]

Here's what I'd logged (before making any modifications to the namespace):

Return of init/1
Return of handle_info/2 (:invalidate)
Return of fetch/2 in delete_or_reschedule
Return of trigger_ttl/3 in append_invalidator/4
Return of append_invalidator/4 in init_invalidators/2

iex.log
Would it be fine to explicitly pass the namespace to MnesiaCache like this or might there be unintended side-effects? Thanks again.

Pow.Store.CredentialsCache would force the namespace. It's to prevent conflicts with other caches in pow, like the persistent session cache, etc, so there should be no need to set namespace anywhere. At glance I don't see anything off from any of the data, but I'll be going through more throughly soon, and try figure out the code path. Work came in the way.
We know that expired sessions gets picked up when mnesiacache inits, but for some reason the trigger to actually expires it either gets cancelled, or never runs in the first place. Alternatively something rewrite the session though I have no idea why. It smells of some race condition.
Are the expired sessions consistent (it's the same key)? Do you use Mnesia clustering or is this just a single node?

Pow.Store.CredentialsCache would force the namespace. It's to prevent conflicts with other caches in pow, like the persistent session cache, etc, so there should be no need to set namespace anywhere.

I see, that makes perfect sense.
I've worked on a more contrived example to reproduce this from an empty mnesia state. I got to the problematic state after doing these steps: (for these, using a short TTL will be convenient)

1. Spin up the phoenix server
Console output:
init([]): {:ok, %{invalidators: %{}}}

2. Authenticate an user
Via the custom authorization plug from the API tutorial, this calls put/3 on both CredentialsCache and PersistentSessionCache in Conn.register_before_send/1
Console output:
trigger_ttl("7c56f349-a262-49c6-a3d7-013bed0d1691", 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.176822019.4286054407.197793>
trigger_ttl([App.Auth.User, :user, 1], 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.176822019.4286054404.201834>
trigger_ttl([App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"], 1800000, [ttl: 1800000, namespace: "credentials"]): #Reference<0.176822019.4286054404.201837>
trigger_ttl("887a5604-6f68-4e66-9f2d-054604175e29",<PHONE_NUMBER>, [ttl:<PHONE_NUMBER>, namespace: "persistent_session"]): #Reference<0.176822019.4286054404.201840>

3. Stop the server, wait until after the TTL passes, then start it up again
Console output:
trigger_ttl([App.Auth.User, :user, 1], 0, []): #Reference<0.3574711379.2956460033.218191>
append_invalidator(["credentials", App.Auth.User, :user, 1], %{}, 0, []): %{[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>}
trigger_ttl([App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"], 0, []): #Reference<0.3574711379.2956460033.218205>
append_invalidator(["credentials", App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"], %{[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>}, 0, []): %{
[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
[App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>
}
trigger_ttl("7c56f349-a262-49c6-a3d7-013bed0d1691", 0, []): #Reference<0.3574711379.2956460033.218211>
append_invalidator(["credentials", "7c56f349-a262-49c6-a3d7-013bed0d1691"], %{[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>, [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>}, 0, []): %{
[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
[App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
"7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>
}
trigger_ttl("887a5604-6f68-4e66-9f2d-054604175e29",<PHONE_NUMBER>, []): #Reference<0.3574711379.2956460033.218217>
append_invalidator(["persistent_session", "887a5604-6f68-4e66-9f2d-054604175e29"], %{[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>, [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>, "7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>},<PHONE_NUMBER>, []): %{
[App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
[App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
"7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>,
"887a5604-6f68-4e66-9f2d-054604175e29" => #Reference<0.3574711379.2956460033.218217>
}
init([]): {:ok,
%{
 invalidators: %{
   [App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
   [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
   "7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>,
   "887a5604-6f68-4e66-9f2d-054604175e29" => #Reference<0.3574711379.2956460033.218217>
 }
}}
fetch([], [App.Auth.User, :user, 1]): nil
handle_info({:invalidate, [], [App.Auth.User, :user, 1]}, ...): {:noreply,
%{
 invalidators: %{
   [App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
   [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
   "7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>,
   "887a5604-6f68-4e66-9f2d-054604175e29" => #Reference<0.3574711379.2956460033.218217>
 }
}}
fetch([], [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"]): nil
handle_info({:invalidate, [], [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"]}, ...): {:noreply,
%{
 invalidators: %{
   [App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
   [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
   "7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>,
   "887a5604-6f68-4e66-9f2d-054604175e29" => #Reference<0.3574711379.2956460033.218217>
 }
}}
fetch([], "7c56f349-a262-49c6-a3d7-013bed0d1691"): nil
handle_info({:invalidate, [], "7c56f349-a262-49c6-a3d7-013bed0d1691"}, ...): {:noreply,
%{
 invalidators: %{
   [App.Auth.User, :user, 1] => #Reference<0.3574711379.2956460033.218191>,
   [App.Auth.User, :user, 1, :session, "7c56f349-a262-49c6-a3d7-013bed0d1691"] => #Reference<0.3574711379.2956460033.218205>,
   "7c56f349-a262-49c6-a3d7-013bed0d1691" => #Reference<0.3574711379.2956460033.218211>,
   "887a5604-6f68-4e66-9f2d-054604175e29" => #Reference<0.3574711379.2956460033.218217>
 }
}}

The expired sessions and invalidators remained untouched, with the same key as before, locally on a single node.
It does look like some sort of race condition, but by looking at the code/logs I can't tell for sure what might be causing it. I want to build a minimal repo to reproduce this, but I might not be able to get to it for the next few days...

I've found a way to reproduce it, and indeed it seems to be a race condition. I'll work on a solution.

I found the issue, it was not a race condition, but incorrect handling of the keys. I have publish v1.0.34 that resolves this, olease let me know if it works correctly now, and all the expired keys are being wiped.
This is a more serious issue than at first glance, so thank you so much for brining this up! A CVE will be published shortly.


UnicodeDecodeError in client.parse()

I try to run bblfsh from python for this file: https://github.com/INRIA/spoon/blob/master/src/test/resources/noclasspath/IsoEncoding.java
As you can see it is the file with non-standard characters.
If I run
import bblfsh

client = bblfsh.BblfshClient("<IP_ADDRESS>:9234")
res = client.parse("IsoEncoding.java")

I get
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/type_checkers.py", line 182, in CheckValue
    proposed_value = proposed_value.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 69: invalid continuation byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1599, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1026, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/k/sourced/ast2vec/how_to_use_ast2vec.py", line 4, in <module>
    res = client.parse("../bad_file/IsoEncoding.java")
  File "/usr/local/lib/python3.6/site-packages/bblfsh/client.py", line 56, in parse
    language=self._scramble_language(language))
  File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 526, in init
    setattr(self, field_name, field_value)
  File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 662, in field_setter
    new_value = type_checker.CheckValue(new_value)
  File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/type_checkers.py", line 187, in CheckValue
    (proposed_value))
ValueError: b'package my.pack;\n\npublic class IsoEncoding {\n\n    private String entr\xe9e;\n    public IsoEncoding(String maCha\xeene) {\n        this.entr\xe9e = maCha\xeene;\n    }\n\n    private String r\xe9cup\xe9rerUneEntr\xe9e() {\n        return this.entr\xe9e;\n    }\n}' has type bytes, but isn't valid UTF-8 encoding. Non-UTF-8 strings must be converted to unicode objects before being added.

Is it expected behavior for non-unicode files?
If so I think it is better to provide better error message from bblfsh client.

Yeah, it's a protobuf error:
...has type bytes, but isn't valid UTF-8 encoding. Non-UTF-8 strings must be converted to unicode objects before being added.
Do you propose to ping-pong the exception with a more specific error message?

yes, It will be great!
Something that file should be in UTF-8 encoding for example.

After #65, non UTF8 (with includes ASCII and Base64) content should be rejected by the client. Tell us if this works for you.

yes, It works for me.


TS, Webpack, and development environment setup complete

Integrated webpack, typescript, husky, prettier, and eslint into the project, as well as all of the necessary scripts into package.json

#1 Issue completed, except for file structure. Need to merge with backend integration PR to complete outlying file structure.


docs: fix Mathjax startup

Summary of Changes
Update the MathJax config script, so math blocks get rendered properly already the first time a page is visited.

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

v0.8.0
GitHub release

Your semantic-release bot :package::rocket:


update index.html

1.i have changed the class "btn-search pull-right" down the order so that DOM order and tabbing makes sense
2.i have removed the class "newsletter" ti bottom as  it makes with the DOM order and renamed the tag as "footer" instead of"div"

Hey @Manudeep-git, sorry for any confusion, you don't need to send a pull request for these changes. They're just for you to do locally while you work through the course.


Export Attendance is inactive (--dryrun) in staged env'

also quiet in production, less repetitive output to logs

Behaviour confirmed on localhost with staged environment.
source env/stage.sh
docker-compose up

Removing --quiet from crontab, [dryrun] is shown in the logs.
With --quiet in crontab (as committed), logs show
django_1    | crond: USER root pid  25 cmd python /srv/app/manage.py export_attendance --quiet

(without details, if there's nothing to do)


[6.0][Package/ModuleGraph] Allow cyclic package dependencies if they don't introduce a cycle in a build graph

Explanation:
It should be possible for packages to depend on each other if such
dependence doesn't introduce cycles in the build graph.

Introduced a new DFS method to walk over graphs that breaks cycles.
Replaces use of findCycle + topologicalSort with DFS while
building manifest and package graphs. This allows cycles in dependencies
to be modeled correctly.
Removes some of the redundant data transformations from modules graph.
Modifies ResolvedPackage to carry identities of its dependencies
instead of resolved dependencies themselves. This helps to simplify
logic in createResolvedPackages.
Adds detection of target cycles across packages.

Makes it possible for package A to depend on package B and B to depend
on A if their targets don't form a cycle.

Scope: Package graph

Main Branch PRs: https://github.com/apple/swift-package-manager/pull/7530

Risk: Low

Reviewed By: @MaxDesiatov

Testing: Added new test-cases to the test suite

https://github.com/apple/sourcekit-lsp/pull/1248
@swift-ci please test

https://github.com/apple/sourcekit-lsp/pull/1248
@swift-ci please test


Fix liquid template copy component 1337

Description
This PR fixes #1337
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

hey @JayKay24 ,
Let's discuss it on the websites call.
Please add this as an agenda item in the meeting minutes, if you would :)
https://docs.google.com/document/d/1XczAHXVe2FIWPqiF57ospJ43zw5cZQ7ui8mn39v5EvA/edit#heading=h.lohhtewfwima

@thisiskaransgit Thanks for your review. The code in footer.html only has the javascript function(resetCopyText) and dependency(clipboard.min.js) needed to copy a piece of text. It is only defined in that file. I abstracted away the repeated HTML into a copy-to-clipboard.html template that still references the resetCopyText defined in footer.html.

I've updated the branch to keep it mergable but will need a re-review @thisiskaransgit

@thisiskaransgit does that mean that I integrate npm into the project? This would allow me to use the clipboard library currently loaded via CDN as a local npm module.

@thisiskaransgit does that mean that I integrate npm into the project? This would allow me to use the clipboard library currently loaded via CDN as a local npm module.

@JayKay24 declare the javascript logic in the code. the desired behavior should be that the class element can use the locally hosted code and not third-party module, which will a) reduce load b) filter the unused code that comes along c) opt out of depending on other services. This is what I intend to update for other sections too actually.
take a look at here for reference:  https://github.com/meshery/meshery/blob/master/docs/assets/js/main.js

@thisiskaransgit does that mean that I integrate npm into the project? This would allow me to use the clipboard library currently loaded via CDN as a local npm module.

@JayKay24 declare the javascript logic in the code. the desired behavior should be that the class element can use the locally hosted code and not third-party module, which will a) reduce load b) filter the unused code that comes along c) opt out of depending on other services. This is what I intend to update for other sections too actually.
take a look at here for reference<EMAIL_ADDRESS>
@JayKay24, does this helps?

@Chadha93 i haven't had a chance to dive deep into the solution but from what I can tell is that I will wrap the clipboard logic inside an IIFE. Will look to address this tomorrow. I'll post any questions I have in this thread.

@thisiskaransgit The example you gave me also references the clipboard.min.js library via CDN in this file -> https://github.com/meshery/meshery/blob/master/docs/_layouts/default.html.
I don't understand what you mean when you say the payload will be improved. Which payload is this? Do you mean that what we want is to avoid the extra HTTP request of downloading the clipboard.min.js dependency on page load in order to achieve a faster loading rate by having the browser parse a  local .js file with clipboard logic?
If this is the case, there's a way to use the dependency locally by downloading and extracting the zip file if we're not into package management. But if we do it this way, we won't have a way to keep it up to date easily.
The other option is to integrate the project with npm and reference clipboard.js as a node module.  This way when the project is built, the dependency will be included on page load without any extra HTTP request to the CDN.
Please help me to clarify this matter. Sorry If I'm not understanding it as quickly.
@Chadha93 please let me know your insights on this. What could I be missing?


Support authentication via instance principals

Currently users must provide OCI API credentials as part of the cloud config. We should also support instance principals auth.
Cross ref: https://github.com/oracle/terraform-kubernetes-installer/issues/174

Closed via #181


Update Plugin to accept id in constructor (1273), remove getPlugin() method (1274)

Just noticed this is merging into ITLY-1274 instead of master. Feel free to merge at your convenience.


Add Multi-Tenancy For application

Based of of this howto: https://theburningmonk.com/2020/08/how-to-model-hierarchical-access-with-appsync/
Instead of Tenant and ServiceArea, use OrgOwner OrgAdmin and OrgUser
The OrgOwner and OrgAdmin share essentially the same permissions, OrgOwner will have edit capabilities on Organization name and any white labeling options. OrgUser will have mostly read only functionality.
When an orgOwner creates a user, it passes it's Id as an organization_id as a custom field as outlined in the article.

This would be great 👍


Add "IPMI shutdown requested" to non-debug console

My Palmetto was being told by the BMC over IPMI to shut down, but until I put a debug build of hostboot on there I had no idea that was the case.
We should display something so the non-debug console knows what's going on.
  5.38149|IPMI|rp: queuing sync 18:6
  6.67555|IPMI|rp: timeout: 18:36
  6.67555|IPMI|rp: get_capabilities not ok 195, using defaults
  6.67563|IPMI|dd: I>write ok 18:35 seq 2 len 0
  6.69803|IPMI|dd: I>read b2h ok 1c:35 seq 2 len 10 cc 0
  6.69804|IPMI|rp: queuing event 3a:4 for handler
  6.69807|IPMI|rp: Graceful shutdown request recieved
  6.69809|INITSVC|doShutdown(i_status=0000000001230000)
  6.69809|INITSVC|doShutdown> status=0000000001230000
  6.69810|IPMI|dd: I>write ok 18:6 seq 3 len 2
  6.69836|IPMI|rp: I>MSG_STATE_GRACEFUL_SHUTDOWN: send power off command to BMC
  6.79797|IPMI|dd: I>read b2h ok 1c:6 seq 3 len 0 cc 0
  6.79804|

We should add a console output in the case that CONSOLE_OUTPUT_TRACE is not set to indicate the reason for the shutdown.  We added that recently for SBE update reboots.
Also, it doesn't seem like the BMC actually gave us enough time to gracefully shutdown.  Is this a problem with the way we are responding to the IPMI request, is it a problem with our "graceful shutdown" path, or is it a problem with the BMC code?

Added code to print shutdown message to non-debug console, currently being reviewed.  I also opened an RTC issue to investigate the shutdown path.


Question: What do you think about a set_ipa_info_plist_value action?

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I have read the Contribution Guidelines

Question
When resigning my .ipa file, the resign action allows me to update a few entries in my Info.plist file, however, there are a few extra entries in my Info.plist file (and Info.plist files of my app extensions) that I need to change.
If we had a set_ipa_info_plist_value action, then I could use this to update the remaining entires in my Info.plist.
We already have:

get_ipa_info_plist_value for reading values post-build.
get_info_plist_value and set_info_plist_value for reading/writing values pre-build.

I was wondering if adding set_ipa_info_plist_value would be a worthwhile contribution, or if there are reasons for its non-existence?
Usage Example
desc "Resign for Nightly distribution"

set_ipa_info_plist_value(
    key: "SpecialID",
    value: "ResignedValue"
)

set_ipa_info_plist_value(
    key: "SpecialIDForExtension",
    value: "ResignedValueForExtension",
    plist: "Plugins/MyExtension.appex/Info.plist"
)

lane :resign_to_nightly do
  lane_context[:build_type] = "Nightly"
  resign(
    ipa: "MyApplication.ipa",
    bundle_id: "com.myapp.resigned",
    signing_identity: "iPhone Developer: Andy Drizen<PHONE_NUMBER>)",

    provisioning_profile: {
        "com.myapp.original" => "Andy.mobileprovision",
        "com.myapp.original.extension" => "AndyExtension.mobileprovision",
    },
    display_name: "Andy's App Resigned"
)

Concerns

It would invalidate the code signature, so using it will require resigning the IPA.

sounds like a good idea, @mgrebenets  what do you think about it (as you are the resign magician 👍 )
but since new actions are not really accepted at the moment, this would be a good example for a fastlane-plugin, see the documentation here on how to do it:  https://docs.fastlane.tools/plugins/create-plugin/#create-your-own-plugin - if there is a high demand for the plugin it may be merged back into fastlane-core.

Hi @andydrizen :)
Small world :)))
There's no action or Ruby wrapper for setting values in plist files in Fastlane core part.
But there are some plugins though.
I've seen this one before, but haven't tried it yet: https://github.com/richardszalay/fastlane-plugin-act

Applies changes to plists and app icons inside a compiled IPA, combined with sigh's resign it makes it easy to release an IPA with different configurations 🎭

Sounds like the right plugin for the job 👍
Still it would be cool to catch up for a ☕ this week 😉


Flashing between "Please wait" and "The server has disconnected" (KDE Neon 5.27)

I managed to make ALVR "see" my headset by adding it manually, but when I launch ALVR on my quest 2 it just flashes between the two messages. I'm using the compiled tar.gz version, the AppImage did not work. Nothing displays on the statistics either.

nevermind i used the nightly build and it works perfectly


Don't manipulate the scope while resolving instances

I have been chasing down a NRE when using [FromBody] in MVC to these two lines from the Ninject DI bridge.
The problem as far as I could identify starts in the MvcRouteHandler where the request's IServiceProvider is used to get an IScopedInstance<ActionContext>. After that, an IActionInvokerFactory is constructed and down the dependency chain, an IServiceProvider is injected into one of the OptionDescriptorBasedProvider. The latter IServiceProvider is not the one used in MvcRouteHandle, but instead a new NinjectServiceProvider is created, which doesn't know about the initialized IScopedInstance<ActionContext>. So it creates a new, uninitialized one and injects that into BodyModelBinder where it throws a NRE.
The reason is that while creating an IServiceProvider, the Ninject bridge also changes the scope parameter and so the existing request's provider isn't found anymore when creating child objects.

Hi @Tragetaschen, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

@Tragetaschen thanks for the PR. Unfortunately we're planning on removing the POC samples (Ninject, Autofac) from our repo as part of https://github.com/aspnet/DependencyInjection/issues/264. This PR doesn't make much sense once the code's removed.

Yeah, I figured as much once that discussion started to surface.


'input' and 'change' events are not caught by pure JS

When a user input some numbers in an autoNumeric-managed input, or when he changes its value and blur it, the native input and change events are not sent correctly.
Pure JS cannot catch those using pureJsInput.addEventListener('input', callback, false);, while jQuery can using jQueryInput.on('input', callback).
This is the live example that shows the problem.

Considering the normal behavior of an input, I modified the event listeners so that an autoNumeric managed input will output the exact same event sequences :
By default a 'normal' input output those events in the right order when inputting a character key (ie. 'a') :

keydown
keypress
input
keyup

...when inputting a modifier key (ie. 'ctrl') :

keydown
keyup

If 'delete' or 'backspace' is entered, the following events are sent :

keydown
input
keyup

If 'enter' is entered and the value has not changed, the following events are sent :

keydown
keypress
keyup

If 'enter' is entered and the value has been changed, the following events are sent :

keydown
keypress
change
keyup

When a paste is done with the mouse, the following events are sent :

input

When a paste is done with ctrl+v, the following events are sent :

keydown
keydown
input
keyup
keyup

The fix is in the soon-to-be-merged PR #297 .

This is merged in the next branch.


Jeff Schaller: Watch<PHONE_NUMBER>33

Jeff Schaller requests the watch of the watch_number<PHONE_NUMBER>33. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Makyen in Charcoal HQ

Approved by Makyen in Charcoal HQ


Vina 1.2.5 Results Not Fully Displayed in PyMOL_3.0

Dear Dr. St. Mart,
My name is Kephas, and I am a researcher working on molecular docking of psychiatric drugs at Tianjin Medical University. I have been utilizing AutoDock Vina for my studies and have encountered an issue that I hope you can shed some light on, given your expertise in PyMOL and computational structural biology.
I am specifically comparing results obtained from AutoDock Vina versions 1.1.2 and 1.2.5. When visualizing the docking results from Vina 1.1.2 in PyMOL, I am able to successfully view all twenty predicted poses/modes. However, when attempting to visualize results from Vina 1.2.5 using the same procedure, I encounter a problem where PyMOL does not display all the resulting poses.
I have ensured that the output files from both versions are generated with the same configuration parameters (other than those inherent to the version differences, if any).
I would be incredibly grateful if you could offer any insights or suggestions on how to resolve this issue.
Sincerely,
Kephas

There are some NA in the reults! If I remove them, the results become normal; where does the problem lie, and how can I solve it?


fix text on dark mode so its easier to read

this affects the following sections: about us, pet details

old on the left, new on the right

old on the left, new on the right


Fix broken link

Bulk Redirects link is a 404. I'm taking a guess at the above being the correct link that should be linked to.

Howdy @mattferderer, updated the link to the right target, but thanks for the call out!


Add a Question about how a commit message should be ?

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)

Closes #XXXXX

Applied Changes


Integrate Facebook login with AWS Cognito User Pool

I'm trying to integrate aws user pool in my project. I manage to do a normal login with email and password, but I need to add login in with Facebook.
From what I read in documentation, for this I need to create an Indentity pool in Federated identities. I create one and I add the follow configurations for Authentication providers: - in Facebook tab to add my Facebook App ID, - and in Cognito tab to add my user pool id and app client id for my user pool.
And inside of my user pool, In Identity providers from federation, I select Facebook and for this I add my Facebook app ID and App secret.
In my app I implement a AWSIdentityProviderManager that contain:

class CognitoSocialProvider: AWSIdentityProviderManager {
func logins() -> AWSTask {
if let token = FBSDKAccessToken.current() {
return AWSTask(result: [AWSIdentityProviderFacebook:token.tokenString])
}
return AWSTask(error:NSError(domain: kCognitoFacebookDomainError, code: -1 , userInfo: [kCognitoFaceook : kCognitoFacebookInvalidAccessToken]))
}
}

And here is my code for Facebook login:

let loginManager = FBSDKLoginManager()
let permisions = [kCognitoFacebookPublicProfil, kCognitoFacebookEmail]
loginManager.logIn(withReadPermissions: permisions,
from: parentVC) { (result, error) in
if (error != nil) {
failure(error! as NSError)
} else if (result?.isCancelled == true){
failure(NSError())
} else {
let socialProvider = CognitoSocialProvider()
provider = AWSCognitoCredentialsProvider(regionType: REGION,
identityPoolId: IDENTITY_POOL,
identityProviderManager: socialProvider)
let serviceConfiguration = AWSServiceConfiguration(region: REGION, credentialsProvider: provider)
AWSServiceManager.default().defaultServiceConfiguration = serviceConfiguration
provider.clearKeychain()
provider.clearCredentials()
provider.credentials().continueWith { (task) -> Any? in
DispatchQueue.main.async(execute: {
if let error = task.error as NSError? {
failure(error)
} else {
let response = task.result! as AWSCredentials
success(CognitoFacebookSession(credentials: response))
}
})
return nil
}
}

The login work, but when I look in my user pool in user an groups section, I can't see my user over there.

There is any other solution to integrate Facebook login, using only user pool without using Identity pool?
Or
How can I see my user in users table from users and groups from my user pool?

@madalinaciobotaru  Did you find any solution ?

@moosabaloch for the moment the only solution that I could find was described here: https://stackoverflow.com/questions/49294622/integrate-facebook-login-with-aws-cognito-user-pool


Outcome clustering

Description
As a user, I would like the system to determine categories of outcomes based on precedent data.
Major work will be conducted on #105. The same approach will then be used for #106.
Scope of Work

[x] Preprocessing decisions from outcomes.
[x] Extract all outcomes from all obtained precedents.
[x] Cluster outcomes based on sentence similarity.
[x] Create a text file for each cluster of outcomes where the similar outcomes are saved, for manual review.

Story Points

8
Priority
High

Risk

High

Acceptance Criteria

Given an outcome, the system should return the cluster label for it.
Looking at the label's text file, the written outcomes should be similar to the input outcome.

Running Out of Memory

Solution: PCA for dimension reduction of matrices

what do the axes represent?

Signing off, it work!

Signing off, it works!


Ability to configure console log level. Issue #74

Hey this is awesome. Couldn't find a single problem with your code, thanks for making the contribution!
Just one quick request before I merge -- could you back out the changes to dist/? I prefer to keep changes to dist/ separate from changes to src/ so I can keep distributed code in sync with published npm versions, and also keep the git history clean so it's easy to revert changes in src/ if needed. Once I've merged, I'll build and publish.
Thanks again!

@bluepnume no worries mate. I removed dist changes.

Coolcool, merged and published!


Fixed bad FWLink

Fixed bad FWLink
In addition to fixing the link described in #6056, this PR:

replaces tokens with simple token text.
fences Win32 APIs and constants and adds links to them.

Fixes #6056

For this kind of broken link report we've been getting, I try to first find the sample under https://github.com/Microsoft/WPF-Samples. If I can't find it, I'm linking to the location of the sample in our samples repo and also updating the FwLink in case an external resource is also using the same link.
The problem of linking to that vs.90 page is that the download sample link is dead there too.

It seems the sample exissts under https://github.com/Microsoft/WPF-Samples/tree/master/Migration and Interoperability/WPFHostingWin32Control not sure though if the docs match that.


[In Progress] Internal: lerna migration

Which problem is this PR solving?
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Short description of the changes
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A

Checklist:

[ ] Followed the style guidelines of this project
[ ] Unit tests have been added
[ ] Documentation has been updated

Hey @clesleycode thanks for working on this. Can you update the PR description with some of the concrete benefits you expect this to address? Will it speed up install times for example or is it just a matter of reducing our dependency load?

Hey @clesleycode thanks for working on this. Can you update the PR description with some of the concrete benefits you expect this to address? Will it speed up install times for example or is it just a matter of reducing our dependency load?

This PR is a follow up from this issue. I'll add that context into the PR description, but should I elaborate more?

Thanks for working on this :slightly_smiling_face:

Hey @clesleycode thanks for working on this. Can you update the PR description with some of the concrete benefits you expect this to address? Will it speed up install times for example or is it just a matter of reducing our dependency load?

This PR is a follow up from this issue. I'll add that context into the PR description, but should I elaborate more?

I think just putting a summary into the PR description that mentions that the lerna bootstrap polyfill in use right now is a temporary solution (and will be unsupported in the future) and linking to the lerna blog post would be fine :slightly_smiling_face:

We don't need to remove lerna altogether, though. To fix #3927, we can still keep using it for versioning and such; just moving from lerna legacy package management to npm workspaces would accomplish the goal already. :slightly_smiling_face:

Thank you for working on this! However, we've addressed the original issue when fixing a CI failure at https://github.com/open-telemetry/opentelemetry-js/pull/4238.

Yet, I believe we still need to remove lerna: https://github.com/open-telemetry/opentelemetry-js/issues/4240. If you are still interested in working on this, please feel free to re-open or open a new PR!


rename concept classifier and change serializationFormatVersion to 2023.1

Only contains the JSON changes.

Looks good, will update the Lionweb (de)serializer in Freon to support these changes.


[book] Added book.toml for better GitHub integration

Added book.toml for better integration with our GitHub repository.
The GitHub edit button hopefully encourages people to contribute.
Also added structured metadata such as name, description, language and author information.

Motivation
GitHub edit button was missing.
Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
cd ./language/documentation/book
mdbook serve --open

It seems that I can't add reviewers, so asking review from my mentors @awelc and @tnowacki this way :slightly_smiling_face:


docs: migrate README, CONTRIBUTING and LICENSE files

PR Checklist
Please check if your PR fulfills the following requirements:

[ ] The commit message follows our guidelines: CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[x] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?
README, CONTRIBUTORS and LICENSE docs aren't yet migrated.
Fixes #19
What is the new behavior?
README, CONTRIBUTORS and LICENSE are migrated
Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information

question: Why are we changing CI in a PR adding Markdown documents? Is it breaking the build because no projects are affected by the change? What went wrong in the original setup?

Yes, that's exactly what is happening. It is failing because we didn't build the library before (it wasn't affected) and when trying to copy the library bundle it is not finding it.


[Help] Ability to disable mouse support?

I'm not sure if this is possible, help needed.
Problem description
I'd like to turn off mouse support for my application. The reason I want to do this is that I'd like to able to select text from within my application for copy&paste.
Rationale: My gemini/gopher-client "ncgopher" presents a lot of markdown and otherwise text-formatted content. I'd like users to be able to copy e.g. URLs from within text. For text rendering, I currently use a SelectView. The URLs are usually only a part of a line in the SelectView. Clicking with the mouse will change the selected row, but it will not let me select text like in other terminal applications.
Environment

Operating system: Arch Linux
Backend used: pancurses, ncurses 5.9
Current locale:

LANG=nb_NO.UTF-8
LC_CTYPE="nb_NO.UTF-8"
LC_COLLATE="nb_NO.UTF-8"
LC_TIME="nb_NO.UTF-8"
LC_NUMERIC="nb_NO.UTF-8"
LC_MONETARY="nb_NO.UTF-8"
LC_MESSAGES="nb_NO.UTF-8"
LC_ALL=

Cursive version 0.15.0

Hi, and thanks for the report!
We may add some special backend initializer that omit the mouse mode part.
In the meanwhile, many terminal emulators let you ignore mouse mode by pressing "Shift". For example on gnome-terminal, you can press Shift+Ctrl and drag around for a block select, even with "mouse mode applications" (like vim or cursive). On Konsole, block select is Ctrl+Alt+drag, so Shift+Ctrl+Alt+drag will let you block-select in cursive applications.
Most of the time this is the preferred way, as it let users use the mouse for interaction, and ignore mouse mode for selecting the text.

Thanks for the quick response! I was not aware of the "Shift" modifier. Works fine in my terminal, so I'm closing the issue.


Interfacing GnuRadio with rpitx

Hello András,
I'm a bit confused regarding interfacing of GnuRadio with Evariste's RPITX, and I hope you can help.
I have used your test SSB flowgraph (but the effect is the same with several others and with CSDR tool also) for modulating in USB audio files and transmitting them over RPITX.
The situation is the following :

I'm using RPITX "standard version" (not the new one) installed on a RaspberryPI2 with Stretch (Linux 4.14.49+ #11201 armv6l GNU/Linux)
test trasmission over RPITX on USB of sampleaudio.wav test file, modulated using the Evariste's modulation program pissb is successful over 10 m band
I made a test flowgraph on GnuRadio on Windows that reads the "modulated" (by pissb) wav file and send it to the RaspberryPI via UDP sink : this allows an RPITX correct transmission, but only if I use the following receaving statement :

nc -u -l 8011 | sudo rpitx -i - -m IQ -a 14 -f $FREQUENCY
Gnuradio reads in FLOAT format and send it to UDPsink in FLOAT format (not in COMPLEX)

If I start modulating the sampleaudio.wav using your test USB TX flowgraph or other USB TX flowgraph or CSDR and I send the modulated output (correct, checking FFT scope...) to RPITX using again UDP sink, the result is a noise transmission (both setting RPITX in IQ or IQFLOAT format, both transmitting float or complex data flow over UDP sink.

Worst, the "correctly running" output of PISSB utility can be played using any kind of playing audio tool, while the modulated output of the different flowgraphs (being IQ) should not.
I'm consequently a bit confused : what is the real data format accepted as input from RPITX, and which the correct way for interfacing it with Gnuradio ? (I guess that UDP or TCP sink - now deprecated - is not the issue...)
Any help appreciated
Regards, 73
Ugo

Ugo,
It has been years ago I last played with that, so I don't know.
Since then, @f5oeo could have changed stuff in rpitx as well, including its command line parameters.
Andras


Compare spark-submit command line performance to IPython notebook performance

This is a simple check to ensure the IPython notebook server is configured correctly and is functional.  The notebook provides a better development environment and it would be a big bonus if it works correctly with the hadoop cluster using Spark.

Previous testing shows this to be unnecessary but  will do a simple compare just to show as above that everything is working.

On the 5 node cluster there is no significant difference between the performance of a script submitted via spark-submit using yarn-client and code run in an IPython notebook.  Both work and this issue is resolved.


Release Google.Cloud.Recommender.V1 version 3.6.0

Changes in this release:
New features

Change netstandard2.1 target to netstandard2.0 (commit 82bea85)

Created release for Google.Cloud.Recommender.V1-3.6.0


Error: undefined method core_formula? for FormulaAuditor

Please always follow these steps:

[X] Confirmed this is a problem with Homebrew/brew and not one or more formulae? If it's a formulae-specific problem please file this issue at https://github.com/Homebrew/homebrew-core/issues/new
[X] Ran brew update and retried your prior step?
[X] Ran brew doctor, fixed as many issues as possible and retried your prior step?
[X] Ran brew config and brew doctor and included their output with your issue?

What you were trying to do (and why)
Currently I am trying to build a bottle of haskell-stack for Linuxbrew see https://github.com/Linuxbrew/homebrew-core/pull/2267. However, build fails because of undefined method core_formula?' for #FormulaAuditor:0x000000028cf738`.
What happened (include command output)
==> brew audit haskell-stack --online
Error: undefined method `core_formula?' for #<FormulaAuditor:0x000000028cf738>
Please report this bug:
  https://github.com/Linuxbrew/brew/blob/master/docs/Troubleshooting.md#troubleshooting
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:469:in `block (2 levels) in audit_deps'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dependencies.rb:9:in `each'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dependencies.rb:9:in `each'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:447:in `block in audit_deps'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:444:in `each'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:444:in `audit_deps'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:1263:in `audit'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:78:in `block in audit'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:74:in `each'
/home/linuxbrew/.linuxbrew/Library/Homebrew/dev-cmd/audit.rb:74:in `audit'
/home/linuxbrew/.linuxbrew/Library/Homebrew/brew.rb:91:in `<main>'
==> FAILED

What you expected to happen
I would expect this to pass since bottles for OS X exist.
Step-by-step reproduction instructions (by running brew commands)
See CircleCI Build
Possible Fix
In https://github.com/Homebrew/brew/blob/master/Library/Homebrew/dev-cmd/audit.rb#L479 it feels like it should be:
-           (core_formula? || !dep_f.versioned_formula?)
+           (dep_f.core_formula? || !dep_f.versioned_formula?)

This is also the same in Linuxbrew https://github.com/Linuxbrew/brew/blob/master/Library/Homebrew/dev-cmd/audit.rb#L469

Ran brew config and brew doctor and included their output with your issue?

You didn't do this and there doesn't seem to be any reproduction on a macOS system here so: closing

But like https://github.com/Linuxbrew/brew/blob/master/Library/Homebrew/dev-cmd/audit.rb#L414 is it not missing formula.core_formula? ?

I'll reopen when I get a report from a macOS system that includes brew config and brew doctor output.

To reproduce the issue with Homebrew/brew on Mac, brew edit hello and add
depends_on "pkgconfig"

and run
brew audit hello

Error: undefined method `core_formula?' for #<FormulaAuditor:0x007fdfd51ecb90>

Thanks @sjackman, I can reproduce from that.

Step-by-step reproduction instructions (by running brew commands)
See CircleCI Build

Just for future reference: if this has been commands like @sjackman's this would have been fixed earlier today.


Firewall: Revert "lxd/firewall/drivers/drivers/xtables: Don't check for existing rule in iptablesAdd"

This reverts commit 5ff5df309bdc2305d07fa2872589b0ad352d11e1.
Looks like the proxy device depends on this behaviour so will need to dig into more detail as to why, as I was depending on this behaviour for the xtables ACL driver.
Signed-off-by: Thomas Parrott<EMAIL_ADDRESS>

Testsuite passed


MIVisionX Setup - ProtoBuf 3.12.0 Support

ProtoBuf set to install 3.12.0, can be dynamically changed with --protobuf option

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 3
- Added 3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 3
- Added 3

See the complete overview on Codacy


The file structures in the OL image bulit by paketo and ci.docker are different

The OL image built by ci.docker has following file structures

liberty runtime is located at /opt/ol/wlp
server configuration is also located at /config
logs files are located at /logs
ifixes should be put at /opt/ol/fixes/

The OL image built by Paketo

liberty runtime /layers/paketo-buildpacks_liberty/open-liberty-runtime-kernel
server configuration and logs is located at /layers/paketo-buildpacks_liberty/open-liberty-runtime-kernel/usr/servers/defaultServer

For user experience reason, it is better for the Paketo OL image to have same file structures as ci.docker does.

That is not possible at the moment, sorry.
The buildpack spec requires files to be added under /layers. It is required for reasons related to buildpack rebase that I won't go into but also for security reasons. Buildpacks do not run as root so they cannot put files into the locations you referenced. /layers is a special location that is owned by the cnb user/group so buildpacks can write to it.
It might be possible to do this in the future with a builder extension, which can have elevated permissions. That functionality hasn't landed in buildpacks yet though so there's nothing Paketo could do about it now.
I agree with what you're saying, so I'll leave this open as a potential future enhancement. I can't guarantee it'll be implemented or provide any timeframe though.

hi @dmikusa-pivotal
is there a doc to describe the file structure?

The buildpacks API spec dictates where most things end up, https://github.com/buildpacks/spec/blob/main/buildpack.md.


"Unknown Application Name" menu entry on Ubuntu 16.04

I'm assuming this should have been "juCi++" instead?
Latest source from master branch, Ubuntu 16.04, followed usual instructions for building on Ubuntu.
Menu contains the About, Preferences, Quit options.

This happens only when starting from command line.. Starting from dash shows the expected "juCi++" menu entry

Ubuntu has some issues with gtk menus. If you log in and out the application name will show correctly.

Indeed, closing.


Custom day template doesnt render events in prev/next month

Bug description:
Custom day template doesnt render events in prev/next month.
http://plnkr.co/edit/LZCZ7IfeZypATb2b1eeU?p=preview
At the start we are in October. October 1st contains 1 event, but September 30th also contains 1 event that is not showed. If we go to September we can see the event on 30th is there.
Angular:
1.5.8
Calendar library:
0.24.0
Browser name and version:
Firefox 49.0.1

This is by design, you can disable it by setting calendarConfig.displayAllMonthEvents = true


Tunnel error when attempting to redeploy

Here is my sst config file for reference:

/// <reference path="./.sst/platform/config.d.ts" />
const accountId = process.env.ACCOUNT_ID!;
export default $config({
  app(input) {
    return  #{
      name: "sst-cf",
      removal: input?.stage === "production" ? "retain" : "remove",
      home: "local",
      providers: { cloudflare: "5.42.0"},
    };
  },
  async run() {
    const tunnel = new cloudflare.ZeroTrustTunnelCloudflared('test-tunnel', {
      accountId,
      name: 'test-tunnel',
      secret: btoa(crypto.randomUUID()),
    })

    const zone = cloudflare.getZone({
      accountId,
      name: 'xxxxxx.com' // your domain
    })

    new cloudflare.Record('test-tunnel', {
      name: 'test',
      type: "CNAME",
      zoneId: (await zone).zoneId,
      content: tunnel.cname,
      proxied: true,
    })
  },
});

I can successfully deploy with the following:
$ bun sst deploy --stage dev

when I run this again I get the following error:

SST 3.3.19  ready!
➜  App:        sst-cf
Stage:      dev
~  Deploy
|  Error       test-tunnel
cloudflare:index:ZeroTrustTunnelCloudflared
|    sdk-v2/provider2.go:520: sdk.helper_schema: failed to create Argo Tunnel: You already have a tunnel with this name. Delete the existing tunnel, or choose a different name for your new tunnel (1013<EMAIL_ADDRESS>|  Error       test-tunnel cloudflare:index:ZeroTrustTunnelCloudflared
|  Tunnel: You already have a tunnel with this name. Delete the existing tunnel, or choose a different name for your new tunnel (1013)
✕  Failed
test-tunnel
cloudflare:index:ZeroTrustTunnelCloudflared
sdk-v2/provider2.go:520: sdk.helper_schema: failed to create Argo Tunnel: You already have a tunnel with this name. Delete the existing tunnel, or choose a different name for your new tunnel (1013<EMAIL_ADDRESS>test-tunnel cloudflare:index:ZeroTrustTunnelCloudflared
Tunnel: You already have a tunnel with this name. Delete the existing tunnel, or choose a different name for your new tunnel (1013)
error: "sst" exited with code 1

It appears that sst is not picking up that there is a tunnel. It should either delete the existing tunnel and create a new tunnel or use the one that was created initially, the latter is the preferred option.  A work around is to remove the tunnel and redeploy, but this is less than  ideal.

I'm having issues with the tunnel as well:

  async run() {
    const vpc = new sst.aws.Vpc('MyVpc', {
      bastion: true,
      transform: {
        bastionInstance: {
          keyName: 'dev-bastion'
        }
      }
    });
    const redis = new sst.aws.Redis('MyRedis', { vpc });
    const cluster = new sst.aws.Cluster('MyCluster', { vpc });

    cluster.addService('MyService', {
      link: [redis],
      loadBalancer: {
        ports: [{ listen: '80/http', forward: '3000/http' }]
      },
      dev: {
        command: 'yarn dev'
      }
    });

    return {
      cluster: redis.clusterID,
      bastion: vpc.bastion
    };
  }

how do you remove the tunnel?

You mean you don't want the tunnel to start when running sst dev? Or do you want to uninstall it?


Overload write for    void write_row(unordered_flat_map<std::string_view, std::string> row_map)

Is it possible to make it simpler to read data and then write that same data?
The read function reads in rows as unordered_flat_map<std::string_view, std::string>, but the write function expects unordered_flat_map<std::string, std::string>. This appears to require manual conversion between the types, making something like converting a CSV file to a TSV file more difficult than I had hoped.

Hello,
I'm working on a second implementation of this library: https://github.com/p-ranav/csv2. The reader is ready for use. Check it out. Hopefully it works better. I'm planning to archive this repo in favor of csv2.
Sorry again for all the issues you've faced with this library.


Call 'avoidMTLModelCrash'  when NSNumber+AvoidMTLModelCrash category load .

It may be easier to use. What you think .

Ok, it's a good idea