conflict with persp-mode

If I enable writeroom-mode, persp-mode cannot switch perspective correctly.
It worked fine in the previous version of writeroom-mode, but I didn't notice which update introduced the issue. If you need more info, please tell me.
Debugger entered--Lisp error: (wrong-type-argument window-valid-p nil)
  set-window-combination-limit(nil t)
  window--state-put-2(t 718)
  window-state-put((((min-height . 4) (min-width . 20) (min-height-ignore . 3) (min-width-ignore . 8) (min-height-safe . 1) (min-width-safe . 4) (min-pixel-height . 72) (min-pixel-width . 160) (min-pixel-height-ignore . 54) (min-pixel-width-ignore . 64) (min-pixel-height-safe . 18) (min-pixel-width-safe . 32)) hc (pixel-width . 1268) (pixel-height . 718) (total-width . 158) (total-height . 39) (normal-height . 1.0) (normal-width . 1.0) (combination-limit . t) (leaf (pixel-width . 636) (pixel-height . 718) (total-width . 79) (total-height . 39) (normal-height . 1.0) (normal-width . 0.501577287066246) (buffer "gtd.org" (selected . t) (hscroll . 0) (fringes 8 8 nil) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 23760) (start . 1))) (leaf (last . t) (pixel-width . 632) (pixel-height . 718) (total-width . 79) (total-height . 39) (normal-height . 1.0) (normal-width . 0.49842271293375395) (buffer "gtd.org" (selected) (hscroll . 0) (fringes 8 8 nil) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 23760) (start . 1)))) #<window 3 on gtd.org> t)
  (progn (window-state-put pwc rwin t))
  (if (fboundp (quote window-state-put)) (progn (window-state-put pwc rwin t)))
  (when (fboundp (quote window-state-put)) (window-state-put pwc rwin t))
  (progn (when (fboundp (quote window-state-put)) (window-state-put pwc rwin t)))
  (if (or rwin (setq rwin (frame-root-window (or frame (selected-frame))))) (progn (when (fboundp (quote window-state-put)) (window-state-put pwc rwin t))))
  (when (or rwin (setq rwin (frame-root-window (or frame (selected-frame))))) (when (fboundp (quote window-state-put)) (window-state-put pwc rwin t)))
  (lambda (pwc &optional frame rwin) (when (or rwin (setq rwin (frame-root-window (or frame (selected-frame))))) (when (fboundp (quote window-state-put)) (window-state-put pwc rwin t))))((((min-height . 4) (min-width . 20) (min-height-ignore . 3) (min-width-ignore . 8) (min-height-safe . 1) (min-width-safe . 4) (min-pixel-height . 72) (min-pixel-width . 160) (min-pixel-height-ignore . 54) (min-pixel-width-ignore . 64) (min-pixel-height-safe . 18) (min-pixel-width-safe . 32)) hc (pixel-width . 1268) (pixel-height . 718) (total-width . 158) (total-height . 39) (normal-height . 1.0) (normal-width . 1.0) (combination-limit . t) (leaf (pixel-width . 636) (pixel-height . 718) (total-width . 79) (total-height . 39) (normal-height . 1.0) (normal-width . 0.501577287066246) (buffer "gtd.org" (selected . t) (hscroll . 0) (fringes 8 8 nil) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 23760) (start . 1))) (leaf (last . t) (pixel-width . 632) (pixel-height . 718) (total-width . 79) (total-height . 39) (normal-height . 1.0) (normal-width . 0.49842271293375395) (buffer "gtd.org" (selected) (hscroll . 0) (fringes 8 8 nil) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 23760) (start . 1)))) #<frame<EMAIL_ADDRESS>0x102a2f438>)
  persp-restore-window-conf(#<frame<EMAIL_ADDRESS>0x102a2f438> nil nil)
  #f(compiled-function (persp &rest --cl-rest--) #<bytecode 0x43f624fd>)(nil #<frame<EMAIL_ADDRESS>0x102a2f438>)
  apply(#f(compiled-function (persp &rest --cl-rest--) #<bytecode 0x43f624fd>) (nil #<frame<EMAIL_ADDRESS>0x102a2f438>))
  persp-activate(nil #<frame<EMAIL_ADDRESS>0x102a2f438>)
  persp-frame-switch("Default" #<frame<EMAIL_ADDRESS>0x102a2f438>)
  #f(compiled-function (name &optional frame &rest --cl-rest--) "Switch to the perspective with name `NAME'.\nIf there is no perspective with that name it will be created.\nReturn `NAME'." (interactive "i") #<bytecode 0x43f6167d>)("Default")
  apply(#f(compiled-function (name &optional frame &rest --cl-rest--) "Switch to the perspective with name `NAME'.\nIf there is no perspective with that name it will be created.\nReturn `NAME'." (interactive "i") #<bytecode 0x43f6167d>) "Default")
  persp-switch("Default")
  (if persp-to-switch (persp-switch persp-to-switch) (persp-switch nil))
  (let ((persp-to-switch (nth pos (persp-names-current-frame-fast-ordered)))) (if persp-to-switch (persp-switch persp-to-switch) (persp-switch nil)))
  switch-persp-by-pos(0)
  switch-to-persp-1()
  funcall-interactively(switch-to-persp-1)
  call-interactively(switch-to-persp-1 nil nil)
  command-execute(switch-to-persp-1)

The backtrace shows that no code from writeroom-mode was being run when the error occurs, which makes it difficult for me to say anything meaningful without further information. You should probably take this up with the persp-mode maintainer as well, because he/she is probably better able to say what's going wrong here. Once we figure that out, I'll be able to say if it's something in writeroom-mode that's triggering this bug.

@joostkremers thanks for your quick reply, I had reported this issue to persp-mode as well.

close it since I decided to not use persp-mode any more. I will leave https://github.com/Bad-ptr/persp-mode.el/issues/114 opened because I think the problem is mainly over there.


Support for adding the primary and secondary access keys to a keyvault

Is there an existing issue for this?

[x] I have searched the existing issues

Description
The Terraform azurerm_storage_account resourceblock provides attributes for exporting the primary and secondary access keys:
primary_access_key
secondary_access_key
and likewise for the connection strings.
It would be handy to be able to send those to a provided keyvault.
There is already an option in your module to send customer_managed_key to a keyvault, so this could work the same way, but I would not deploy a new key vault for this, just ask for the ID of an existing one, so secrets from other types of resources can go to the same key vault.
Thanks!
New or Affected Resource(s)/Data Source(s)
avm-res-storage-storageaccount
Potential Terraform Configuration
resource "azurerm_key_vault_secret" "primary_access_key" {
  name = "primary_access_key"
  value = azurerm_storage_account.this.primary_access_key
  key_vault_id = var.key_vault_id
}

References
No response

@pieter-jangoeman Thanks for reaching out and the suggestion. Will validate this ask during the next release.

Sounds great, any timeframe on this?
Thanks a lot!


Currency conversion

This PR resolves issue #_______.
PR Checklist
Please ensure that you have done the following:

[ ] PR in from a fork off your branch. Do not PR from <your_username>:master, but rather from <your_username>:<branch_name>.
[ ] If you're not on the contributors list, add yourself to AUTHORS.rst.

Quick Check
To do a very quick check that everything is correct, follow these steps below:

[ ] Run the command make check from pyjanitor's top-level directory. This will automatically run:

black formatting
pycodestyle checkin
running the test suite
docs build

Code Changes
If you are adding code changes, please ensure the following:

[ ] Ensure that you have added tests.
[ ] Run all tests ($ pytest .) locally on your machine.

[ ] Check to ensure that test coverage covers the lines of code that you have added.
[ ] Ensure that all tests pass.

Documentation Changes
If you are adding documentation changes, please ensure the following:

[ ] Build the docs locally.
[ ] View the docs to check that it renders correctly.

PR Description
Please describe the changes proposed in the pull request:

Added convert_currency method. It will convert a column from one currency to another.
Added convert_currency.md to examples.
Added the same example from convert_currency.md to the docstring of convert_currency.

Relevant Reviewers
Please tag maintainers to review.

@ericmjl

The merge conflict appears to be with the check function that was added at the bottom of functions.py.

@szuckerman thanks for putting in the PR.
I'm wondering if currency conversion falls under the scope of pyjanitor? It seems to be a more finance/accounting domain-specific activity. In terms of user experience, having convert_currency can be convenient, but I'm thinking that it doesn't belong in the janitor top-level namespace, but in a sub-domain space.
To illustrate what I'm thinking, instead of:
import janitor
df = (
    pd.DataFrame(...)
    .clean_names(...)
    .more_functions(...)
    .convert_currency(...)
)

I instead think it makes sense to have finance-related data cleaning routines in a finance submodule:
import janitor
import janitor.finance

df = (
    pd.DataFrame(...)
    .clean_names(...)
    .more_functions(...)
    .convert_currency(...)
)

It's a minor change, but the biggest advantage here is that we can logically separate the namespaces, and when an end-user uses tab-completion, the finance-related ones will not show up unless explicitly requested.
Ultimately, I am hoping to position pyjanitor as a general purpose data cleaning tool; domain-specific namespaces might also be useful, and I'm open to having them in here, but I do want to ensure that things are architected thoughtfully first.
What are your thoughts on this architectural change? Let me know here, we can discuss.

As for the conflicts, I think they will go away if you move the newly proposed functions into a finance.py module.

@szuckerman feel free to move ahead with moving this into finance. If you pull the latest master, you'll see a template of how I did it for biology.


Order emissions data by Name and Budget

Changes

Change emissions data JSON object to array of objects for easier sorting
Pass sorted emissionsData into updateCountries function as a variable instead of relying on global emissions variable
Enable sorting by country name (alphabetical) and budget (ascending/descending value)
Render World emissions data at the top of the emissions table and exclude from sorting
A bit of styling (chevrons, world data row)

Partially completes issue #12 Will work on another PR for the searching stuff
Some thoughts I had
This is a really cool and informative project :) Have you got a plan to serve and host it somewhere? Happy to help with that if needed! Also if you're looking for more people to help, I found your project through the climate change section on Hacktoberfest which is nearly over but 24 Pull Requests is coming up and they might promote some projects on there when it starts in December. I can also share the project with a pretty active community called Climate Action Tech if you like.
One thing I thought when looking at the emissions table is that it doesn't explain what Total Budget [tons] means, so it might be worth changing that to  Total Budget 1/1/2018 [tons], or something. It might be good to explain how the total budget is calculated too. Also some of the countries are missing data so it's showing up as 0.

Hi! Thank you for your PR and the feedback! Could you turn this into two issues so we can discuss there? I.e. one about the "Promotion of the project" and one about the "Budget calculation" and just put your text there.
Will review the PR later today :)

Also, this probably conflicts with #13 once merged, so this PR might need a rebase then

As predicted, there are merge conflicts now. @natstar93, could you rebase and resolve them? Thank you!

I've fixed the conflict and opened a few issues ;)


Welling multi slice 202007

This changes the logic in utils:pythonop_md_consistency_tests() to support Vanderbilt-style multi-slice tissue ids.

@jswelling Looks good, not sure if you want me to merge or not...??


Feature/lol/paginiation

Connects #101

Paginates layer endpoints.
Allow backbone layer collections to use pagination.
Adds a stubbed pagination control to the front end.

To test:

Ensure you have more than 50 public layers (use generation script if necessary).
Visit the layer catalog (check each tab).
On collections that have more than 10 items (public) you should see ascii art arrow (<- and ->)
Click next/prev buttons a few times.
Items in the collection should change.
Ensure that the prev button only shows when you are on pages 2 or greater.
Ensure next button does not show on last page.
Ensure no buttons show if there are fewer than 10 models in the collection.

It might be nicer to provide next and previous URLs (when they exist) in the response, and use them instead of computing the next URL on the front-end. This would allow consolidating more of the logic on the backend (and -- I think -- is considered a REST best practice).

+1, tested, otherwise

+1 Tested and works great.


Fix cyclic crashes on self-assigning variables and restricts deeper recursive assignment

This PR do two main things to prevent crashes in the autocomplete detection. Firstly, it detects if a variable is initalized by assigning itself to itself. Doing this before would cause a cyclic recursion in the _guess_expression_type function called from _guess_identifier_type_from_base, since it would be persistently trying to determine a type from itself. This is done by adding additional check to determine a self-assigning variable before attempting _guess_expression_type, and if this check succeeds succeeds, it will assign the type from either the assigned variable type type or an explicit type decleration if one exists and return true.
Secondly, a check is added to resolve_class_interface to detect members which are initalized by the assignment of other unset variables, ie, ones declared below the current one, and treat it as an explicit parser error. This was originally permitted, and with untyped variables, the member assigning from unset member variables would simply be declared as null. However, if you do this with typed variables, the error 'Parser bug (please report): Trying to check compatibility of unset value type' would be thrown, indicating this is undefined parser behaviour. While it could technically made to work, it honestly feels much cleaner to just disallow the decleration of member variables from members belows, since it serves no purpose and feels like a beginner trap. The other (main) reason it makes to just disallow this is that it allows recursive assigning variables, and this will result in the same cyclic crashes described in the first paragraph if autocomplete attempts to scan them.
Closes #58373

Although I have a feeling this could be done in a more elegant way, it is my fault that it's not properly checked in the first place and this is better than the current status.

While it could technically made to work, it honestly feels much cleaner to just disallow the decleration of member variables from members belows, since it serves no purpose and feels like a beginner trap

To do this the compiler would have to keep track of initializer dependencies to run then in the right order when constructing. I do not think it's worth it, so it's better to explicitly forbid it.

Thanks!


Change simple test case link to the Leaflet JS Bin

This is a much easier way to make a reproducible test case rather than remembering all the things you need to do.

See also #3939


feat(timezone): utc has an alias of uk

closes #106
UK is an alias for UTC (because I always write UK 🤦 ) as spotted by @alrifay - great spot 👍

💯 Just imagine I actually can write to the repository and give this a peer review thumbs up 👍

Invited you to the org, so you can approve and merge 🤓


Issue adding less variables to menu.less

I'm adding new variables to semantic/src/definitions/collections/menu.less and defining the variables in semantic/src/themes/continu/collections/menu.variables, but when compiling I get errors that the variables in menu.less are undefined.  Thing, they worked for the first 10 or so variables that I added, and then would not build after that.

I couldn't find it in the documentation, but can I add variables to the list of predefined ones in these .less definition files?  If not, how can I add further properties to menu elements without referencing an outside .css file?

I'm not sure your build setup.
But if you are adding variables they should be added to /src/site/collections/menu.variables and used in /src/site/collections/menu.overrides

Thanks for the response.  So I can't add any arbitrary new variables to /src/themes/mytheme/collections/menu.variables?  Some of these I don't want site-wide, but only for this theme.

Yes, the functionality works both on a 'packaged theme' and 'site theme' level. Each level overriding the previous.


Appsetting layout renderer not found with NLog.Extended

Type : Question
NLog version: 5.0-beta11
Nlog.Extended: 4.5.0-beta07
Platform: .Net 4.6
I am trying to get the file path for the targets from the App.Config file with the appsetting-layout from the NLog.Extended package. No matter what I have tried, nothing seems to work and I am stuck now. Any help or more documentations with this problem?
Current NLog config
<variable name="exceptionLogFilePath" value="${appsetting:name=ExceptionLogfilePath:default=d:\Logs\logger-exception.log}"/>
Have used several variations on the nlog config line.
App.Config
    <add key="ExceptionLogfilePath" value="d:\logs\Logger_Exception.log" />
**Internal Log error **
Error Error parsing layout appsetting will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'appsetting'   at NLog.Config.Factory`2.CreateInstance(String name)    at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)

Please try with NLog 4.5 beta. That should work!

Will try it right now!
What is the mayor difference between Nlog 5.0 and 4.5? Will I notice a difference? (Except for the Extended to work)

I have used NLog 4.5 beta and the resp. Nlog.Extended. But it is still giving me the same error. Which is the layout renderer appsetting is not found.
Log message
   at NLog.Config.Factory`2.CreateInstance(String name)
   at NLog.Layouts.LayoutParser.GetLayoutRenderer(ConfigurationItemFactory configurationItemFactory, String name)
   at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader stringReader)
   at NLog.Layouts.LayoutParser.CompileLayout(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr, Boolean isNested, String& text)
   at NLog.Layouts.SimpleLayout.set_Text(String value)
   at NLog.Internal.PropertyHelper.TryNLogSpecificConversion(Type propertyType, String value, Object& newValue, ConfigurationItemFactory configurationItemFactory)
   at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)```

What am I doing wrong?
I have got both of the packages and the config file. Both are also referenced.

Could you please try it without <variable ?
NLog 4.5 is the version that support .net standard, without breaking changes.

I have completely simplified the config file so it only has one target which uses the appsetting and no use of variable, but still the same error.
Full config file
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Trace" internalLogFile="d:\logs\nlog-internal.log">

  <targets>

    <!--To Do: Change temp path to variable-->
    <target xsi:type="File" name="allFile" fileName="${appsetting:name=StandardLogFilePath}"/>
   </targets>

  <rules>
    <logger name="*" writeTo="allFile"/>
   </rules>
</nlog>

Full Internal log
2017-10-25 08:49:46.1603 Info Message Template Auto Format enabled
2017-10-25 08:49:46.1759 Trace FindReachableObject<NLog.Internal.IRenderable>:
2017-10-25 08:49:46.1759 Trace Scanning LongDateLayoutRenderer 'Layout Renderer: ${longdate}'
2017-10-25 08:49:46.1759 Debug Setting 'UppercaseLayoutRendererWrapper.uppercase' to 'true'
2017-10-25 08:49:46.1857 Trace Wrapping LevelLayoutRenderer with UppercaseLayoutRendererWrapper
2017-10-25 08:49:46.1857 Trace FindReachableObject<NLog.Internal.IRenderable>:
2017-10-25 08:49:46.1857 Trace Scanning LevelLayoutRenderer 'Layout Renderer: ${level}'
2017-10-25 08:49:46.1857 Trace FindReachableObject<NLog.Internal.IRenderable>:
2017-10-25 08:49:46.1857 Trace Scanning UppercaseLayoutRendererWrapper 'Layout Renderer: ${uppercase}'
2017-10-25 08:49:46.1857 Trace  Scanning Property Culture '' System.Globalization
2017-10-25 08:49:46.1857 Trace  Scanning Property Inner '''' NLog.Layouts
2017-10-25 08:49:46.1857 Trace  Scanning SimpleLayout ''''
2017-10-25 08:49:46.1857 Trace   Scanning Property Renderers 'System.Collections.ObjectModel.ReadOnlyCollection`1[NLog.LayoutRenderers.LayoutRenderer]' System.Collections.ObjectModel
2017-10-25 08:49:46.1857 Trace   Scanning LevelLayoutRenderer 'Layout Renderer: ${level}'
2017-10-25 08:49:46.1857 Trace FindReachableObject<NLog.Internal.IRenderable>:
2017-10-25 08:49:46.1857 Trace Scanning LoggerNameLayoutRenderer 'Layout Renderer: ${logger}'
2017-10-25 08:49:46.1857 Trace FindReachableObject<NLog.Internal.IRenderable>:
2017-10-25 08:49:46.1857 Trace Scanning MessageLayoutRenderer 'Layout Renderer: ${message}'
2017-10-25 08:49:46.1857 Debug Setting 'FileTarget.name' to 'allFile'
2017-10-25 08:49:46.1857 Debug Setting 'FileTarget.fileName' to '${appsetting:name=StandardLogFilePath}'
2017-10-25 08:49:46.2032 Warn Error when setting property 'FileName' on 'File Target[allFile]' Exception: System.ArgumentException: LayoutRenderer cannot be found: 'appsetting'
   at NLog.Config.Factory`2.CreateInstance(String name)
   at NLog.Layouts.LayoutParser.GetLayoutRenderer(ConfigurationItemFactory configurationItemFactory, String name)
   at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader stringReader)
   at NLog.Layouts.LayoutParser.CompileLayout(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr, Boolean isNested, String& text)
   at NLog.Layouts.SimpleLayout.set_Text(String value)
   at NLog.Internal.PropertyHelper.TryNLogSpecificConversion(Type propertyType, String value, Object& newValue, ConfigurationItemFactory configurationItemFactory)
   at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)
2017-10-25 08:49:46.2032 Warn Error when setting '${appsetting:name=StandardLogFilePath}' on attibute 'fileName'
2017-10-25 08:49:46.2032 Error Parsing configuration from D:\Git\Bas.Diagnostics.StructuredLogger\Dev\Impl\Diagnostics.StructuredLogger\StructuredLogger.Tests\bin\Debug\NLog.config failed. Exception: NLog.NLogConfigurationException: Exception when parsing D:\Git\Bas.Diagnostics.StructuredLogger\Dev\Impl\Diagnostics.StructuredLogger\StructuredLogger.Tests\bin\Debug\NLog.config.  ---> NLog.NLogConfigurationException: Error when setting property 'FileName' on File Target[allFile] ---> System.ArgumentException: LayoutRenderer cannot be found: 'appsetting'
   at NLog.Config.Factory`2.CreateInstance(String name)
   at NLog.Layouts.LayoutParser.GetLayoutRenderer(ConfigurationItemFactory configurationItemFactory, String name)
   at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader stringReader)
   at NLog.Layouts.LayoutParser.CompileLayout(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr, Boolean isNested, String& text)
   at NLog.Layouts.SimpleLayout.set_Text(String value)
   at NLog.Internal.PropertyHelper.TryNLogSpecificConversion(Type propertyType, String value, Object& newValue, ConfigurationItemFactory configurationItemFactory)
   at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)
   --- End of inner exception stack trace ---
   at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)
   at NLog.Config.XmlLoggingConfiguration.ConfigureObjectFromAttributes(Object targetObject, NLogXmlElement element, Boolean ignoreType)
   at NLog.Config.XmlLoggingConfiguration.ParseTargetElement(Target target, NLogXmlElement targetElement, Dictionary`2 typeNameToDefaultTargetParameters)
   at NLog.Config.XmlLoggingConfiguration.ParseTargetsElement(NLogXmlElement targetsElement)
   at NLog.Config.XmlLoggingConfiguration.ParseNLogElement(NLogXmlElement nlogElement, String filePath, Boolean autoReloadDefault)
   at NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String filePath, Boolean autoReloadDefault)
   at NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors)
   --- End of inner exception stack trace ---

I have gotten a way to get it to work.
The problem was that I use an wrapper project for NLog which contains the project and the references. The other project which references the wrapper and uses it does not automatically copy/get the Nlog.Extended package since the package does not explicitly get used in the wrapper project. Manually placing the Nlog.extended.dll in the debug folder resolved the issue.
Now I will probably have to set a dependency manually somewhere in order to get it to work automatically. but at least we can go on.

Ah that's makes things more clear.
Another option is to load manually nlog.extended with the <extension  in the config.

I assume your question has been answered, if not, let us know!

I have NLog 4.5.9, and adding:
<extensions>
    <add assembly="NLog.Extended"/>
</extensions>

to app config did not copy the DLL to bin folder.

no that's is for loading the dll. The dll should be in your bin folder for that. The latter is dependent of you Visual Studio project settings  and how you installed NLog.Extended

no that's is for loading the dll. The dll should be in your bin folder for that. The latter is dependent of you Visual Studio project settings and how you installed NLog.Extended

I installed it through NuGet just like I installed NLog.
I have NLog in an infrastructure project that is referenced in the Web project.
I can see in the web bin the NLog.dll, but not the NLog.Extended!
Any Ideas?

You need "CopyToOutputDirectory" option, it depends of your csproj format

CopyToOutputDirectory

Isn't CopyToOutputDirectory for project files, and not references?
In VS dlls I have "Copy Local" property, and setting it to True didn't copy the file.
I believe the problem is that, although, NLog.Extended is referenced in Logger project, it is not used in the code, so it will not copy to target project bin folder.
So either I:
1- Put dummy code in Logger project.
2- Reference NLog.Extended in Web project.
3- Copy the DLL with a post build event -> I think I will go with this option for now.

I would recommend to install the NLog.Extended in your webproject.  I think that's option 2


Traffic manager modules

1050
PR Checklist

[x] I have added example(s) inside the [./examples/] folder
[ ] I have added the example(s) to the integration test list for normal (~30 minutes) or long runner >30 minutes
[ ] I have checked the coding conventions as per the wiki
[x] I have checked to ensure there aren't other open Pull Requests for the same update/change?

Description
Add support for :
azurerm_traffic_manager_azure_endpoint
azurerm_traffic_manager_endpoint
azurerm_traffic_manager_external_endpoint
azurerm_traffic_manager_nested_endpoint
azurerm_traffic_manager_profile

Does this introduce a breaking change

[ ] YES
[x] NO

Testing

hi @onlyillusion, thanks for the PR, looks good!
When running it with version 2.99 of the provider, I'm getting the following warning:
╷
│ Warning: Deprecated Resource
│
│   with module.example.module.traffic_manager_endpoint.azurerm_traffic_manager_endpoint.endpoint,
│   on ../modules/networking/traffic_manager/traffic_manager_endpoint/traffic_manager_endpoint.tf line 1, in resource "azurerm_traffic_manager_endpoint" "endpoint":
│    1: resource "azurerm_traffic_manager_endpoint" "endpoint" {
│
│ The resource 'azurerm_traffic_manager_endpoint' has been deprecated in favour of
│ 'azurerm_traffic_manager_azure_endpoint', 'azurerm_traffic_manager_external_endpoint', and
│ 'azurerm_traffic_manager_nested_endpoint' and will be removed in version 3.0 of the Azure Provider.
│
│ (and 2 more similar warnings elsewhere)
╵

Can you please have a look on the updates needed to make it more long term?
Thanks so much!

@arnaudlh based on terraform docs they removing azurerm_traffic_manager_endpoint in >~3.x.x versions
another modules will continue working.
But befor 3.x.x there are chance to using


fix(steampipe sdk): update version

By updating the sdk version the following bug fix is included.
After update, I don't have the runtime error anymore. It fixes https://github.com/turbot/steampipe-plugin-kubernetes/issues/224

question: there is any doc that says how to run test?
I want to include the Connection Key Column context_name to ensure that everything works when running an SQL query.

Hello @burahimu, I apologize for the inconvenience. There was a bug in Steampipe SDK v5.10.0 which has been fixed in v5.10.1. Thank you for submitting the PR and for your contribution.

Hello @burahimu, I apologize for the inconvenience. There was a bug in Steampipe SDK v5.10.0 which has been fixed in v5.10.1. Thank you for submitting the PR and for your contribution.
We don't have a proper doc to test connection key quals yet. We need to run the query as follows:

In your ~/.steampipe/config/kubernetes.spc file must have aggregator connection setup.
Please try the following query against the aggregator connection to test it out.

select
  hc.name as chart_name,
  hc.type as chart_type,
  hc.version as chart_version,
  hr.name as release_name,
  hr.status as release_status,
  hr.version as deployment_version,
  hr.first_deployed as deployed_at,
  hr.config as deployment_config
from
  agg_con.helm_chart as hc
  left join agg_con.helm_release as hr
    on hc.name = hr.chart_name
where
  hr.status = 'deployed'
  and hc.context_name = hr.context_name;

Note: agg_con is an aggregator connection for the kubernetes plugin.

Thanks for the reply.
It's proper to the developer to have a kube context available? Is it not integrated to run a local cluster (i.e: kind)

Hi @burahimu,

Yes, a developer typically needs to have a kube context available to interact with any Kubernetes cluster, whether it is a local cluster or a remote one.
The kube context is necessary for kubectl and other Kubernetes tools to know which cluster to interact with and which credentials to use.
When you create a cluster with kind, it automatically updates your kubeconfig file with the context for the new cluster.
You can see the context details for the local cluster with the help of kubectl config get-contexts command.

Sure, here's the sentence rewritten in a more polite manner:
I haven't experimented much with local clusters yet, but feel free to give it a try.
Thanks!


requests in iframe not captured by custom protocol

Describe the bug
I want to load page with iframe, and the html page needs .css & .js. The .html can be captured by custom protocol, however, resources needs by .html can't be loaded and console gives CONNECT_REFUSED.
Steps To Reproduce
Steps to reproduce the behavior. It must use wry directly instead of tauri.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Platform and Versions (please complete the following information):
OS:
Rustc:
Would you want to assign yourself to resolve this bug?

[ ] Yes
[ ] No

Additional context
Add any other context about the problem here.

Upstream issue: https://github.com/MicrosoftEdge/WebView2Feedback/issues/2341

Does this mean i have to wait for the upstream release to use it?

Yes.

Is there any equivalent in the meantime?

Not that we know of. And since the webview2feedback issue doesn't mention a workaround either i'm not hopeful about it tbh.


[UI]: Update the Outdated Button Component to Sistent Component

Notes for Reviewers
Updated the outdated button component to Sistent , I have tested it and verified it on my local machine.The button was using the default theme provided by Material UI I have updated it to use Sistent Theme for better consistency of the user interface.

This PR fixes #

Signed commits

[x] Yes, I signed my commits.

@Ajay-singh1
Let's discuss this during the Meshery Development call today at 9:00 AM CT | 8:30 PM IST. Adding it as an agenda item to the meeting minutes || meeting link.

@sudhanshutech  This PR is ready to be merged now.

@sudhanshutech we're ready for final review here.


My link disappeared :-)

Hello.
My links in the menue disappeared when I used class="tooltip":
Start
Have a look:
http://www.habeck-dental.ch/neu/
There should be the word START in the menue. The tooltip works fine :-)
Seems I am too stupid to find the mistake.
Thanks a lot for your help and have a nice day.
Simon

Hi, implementation help should be asked on Stackoverflow or a help forum. Thank you.


Sync eng/common directory with azure-sdk-tools repository

Sync eng/common directory with azure-sdk-tools repository

These particular changes don't impact the engineering system for C. This is simply a synchronization of our shared tools folder that needs to happen from time to time.


Support ORC write Map column

This fixes #3784
Signed-off-by: Chong Gao<EMAIL_ADDRESS>

build

The premerge build passed after I shrink the map(max_length=5), see my second commit, but I do not know way it passed.
I saw the following warnning in my local build log, may be there are some clue:
21/10/15 05:42:50 WARN TaskSetManager: Stage 135 contains a task of very large size (32945 KiB). The maximum recommended task size is 1000 KiB.

build

build

build

@revans2  please review, no more change.
CUDF fixed the blocking issue and the premerge passed: Can not read the generated ORC file by Spark CPU


(PUP-6459) Update win32-service to 0.8.8

Version 0.8.7 of the win32-service gem had a bug that prevented it
from properly retrieving all services on Windows 10 with the
Win32::Service.services call.
In particular, the services pvhdparser and vhdparser don't have
delayed start info, which would previously cause errors.
This is fixed in the 0.8.8 version of the gem

👍

Actually - don't merge this yet - line endings are bungled.

CLA signed by all contributors.

Is stable the branch targeting Puppet 4.6.0 now?


Add tests e.g. using Travis CI or AppVeyor (or equiv) that run daily to test sift build

For Travis CI or AppVeyor the tests have to remain < 1h
information about setting up cron jobs on Travis:
https://docs.travis-ci.com/user/cron-jobs/
Example of the tests we run for GIFT PPA and l2tbinaries:
https://github.com/log2timeline/l2tbinaries/blob/master/.travis.yml

@ekristen if you want to limit the impact of changes you'll need to address this issue. Otherwise the same breakage will happen again and again and again.


Regression in import syntax

Instructions
Trying to upgrade overflow to new v1.1.0 version of flowkit leads to test errors in import syntax that worked .find before.
Problem
Undocumented regression
Steps to Reproduce
https://github.com/bjartek/overflow/pull/113
Acceptance Criteria
Do not break existing import syntax that has worked before, and if we have to document how to fix it.
Context
Overflow

Looking into it. Sorry for issues.


[objc] Add support for NSObject subclasses by reusing the output from the static registrar.

Build failed

Build and tests passed.


0.0.47 aot breaks a running app on 0.0.45

@danbucholtz
So aot on 0.0.47 breaks the app and i'm unable to find out where the problem is because of AOT its hard to debug. The app runs fine in non-aot environment. I switched back to 0.0.45 and everything works as it should.
Is it possible to run with AOT and prod mode in ionic serve? So its more easy to debug without using emulator.
Thanks

Your system information:

Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-rc.3-201612142137
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Linux 4.2
Node Version: v6.6.0
Xcode version: Not installed

@kodeine :  This is a reference from Change Log
If you wish to run AoT but disable minification, do the following ionic run android --aot ionic emulate ios --aot
Can you please try this by compiling aot without minification? The error would make more sense if done by this mean.

It's not possible to run AoT with ionic serve. We probably won't support that until AoT is faster.
Thanks,
Dan


Optional Visualization component

** Make visualization components are optional **
Thanks for the team providing centralized logging solution.  Is there any way to turn off the visualization component from the template.  We want to test it with Log indexing, so we would like to deploy the log ingestion and indexing components.
Please let me know.
Thanks

We are not adding new features because we recently launched the Centralized Logging with OpenSearch solution, which helps you quickly build a centralized log analytics platform. We recommend migrating to this new solution if all of the following are true:
You currently use the Centralized Logging on AWS solution
You aren't using AWS GovCloud (US) Region deployments
You aren't using cross-Region logging features

To migrate to the new solution, follow the steps outlined in the Centralized Logging on AWS implementation guide.


updated get_form_prefix to append form key to form prefix

Updated get_form_prefix making it append form key to the prefix so that django can generate different management_forms for different formsets. See issue #73

Wrong project. See https://github.com/vikingco/django-formtools-addons


add ability to retrieve Application's hostServices

Using the library I found myself unable to access the Application HostServices (used e.g. to call HostServices#showDocument that will open a link in user browser instead of a java-fx widget).
This PR tries to answer this problem.

Coverage decreased (-1.02%) to 42.791% when pulling 9f05ab27af36526d21763812dbeb012b9adc0260 on bayang:master into 42768a5d72fc0d1b736491a7f821893edf22d21a on roskenet:master.


Consider adding to our library

Hello,
I am a fellow deluge user and am creating sort of a 'go-to' docs for deluge/zoho tricks. Please consider contributing to the site!
https://github.com/nickmackenzie/dont-get-zohod
https://dont-get-zohod.vercel.app/
To contribute, its just .md files added to the pages directory. Fairly straighforward and would help grow the community.
Thanks

Thanks for the invite, Nick.


another fix for crash of same cause as #60

I got the same crash as #60 but in a different call. It is unclear to me how to reproduce the issue as it has something to do with what albums the phone has on it. The phone that was crashing has many many albums, one of which must have been causing the issue.

This can only guarantee that it will not crash, and it will not be able to get a deeper level of image. There will be some logical problems.
When I have time, I will fix this problem on the basis of your PR.

Thank you!


Wip  Testing: Hangs on client page

Hi
I've been testing the WIP branch as there are so very nice new shiny feature ( thanks all for them)
But when i click on a client the page hangs trying to load, i have to stop to loading of the page to see the data
I suspect it is doing a look up on-line and as we dont have internet access it is failing
Any suggestions
Thanks
Adam

@adambarnett52 I'm going guess you meant to  create an Issue and not a Pull Request?
And just for clarification on your munki report server you have no internet access, correct? If that is the case I believe the location module is what will be causing the issue as it's reaching out to https://maps.googleapis.com/maps/api/js?v=3.exp to draw the map. I didn't test no internet access on the server when building that module so additional code will need to be written.

Which browser? Does it occur with other browsers?

Yup. Happened on all browsers
Sorry meant to make a issue not a PR

On 4 Mar 2016, at 18:13, gmarnin<EMAIL_ADDRESS>wrote:
Which browser? Does it occur with other browsers?
—
Reply to this email directly or view it on GitHub.

Not sure what you mean, we don't have internet access. Do you mean the computer you're using to view munkireport does not connect to the internet?
I don't think the issue is the google maps lookup, if I blackhole maps.googleapis.com, the client page still loads (without a map).

Could you take a look in the web inspector of your browser what is causing the delay? The network tab may prove useful.

Sure will check on Monday.
I meant both client and server do not have access to the Internet. Everything is internal

On 4 Mar 2016, at 19:27, Arjen van Bochoven<EMAIL_ADDRESS>wrote:
Could you take a look in the web inspector of your browser what is causing the delay? The network tab may prove useful.
—
Reply to this email directly or view it on GitHub.

I have no idea why this auto closed, but I would like you to open a proper issue.

Hey Adam, any news?

Hi
It fails time outs on the following
Request URL:https://maps.googleapis.com/maps/api/js?v=3.exp
and
Request URL:
https://km.support.apple.com.edgekey.net/kb/securedImage.jsp?configcode=E1D&size=240x240
Once it has time-out the client page loads correctly
Thanks
Adam
On Mon, Mar 7, 2016 at 4:55 PM, Arjen van Bochoven<EMAIL_ADDRESS>
wrote:

Hey Adam, any news?
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/pull/420#issuecomment-193343162
.

--
Adam Barnett

It looks like your firewall is dropping packets instead of refusing connections. Does running https://km.support.apple.com.edgekey.net/kb/securedImage.jsp?configcode=E1D&size=240x240 in the browser also hang up the browser?

Yes, it just stays at connecting for a while and then timesout
On Mon, Mar 7, 2016 at 8:35 PM, Arjen van Bochoven<EMAIL_ADDRESS>
wrote:

It looks like your firewall is dropping packets instead of refusing
connections. Does running
https://km.support.apple.com.edgekey.net/kb/securedImage.jsp?configcode=E1D&size=240x240
in the browser also hang up the browser?
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/pull/420#issuecomment-193437329
.

--
Adam Barnett


Update 1P plugin platform view selection

Currently both webview_flutter and google_maps_flutter have APIs and README documentation about selecting the Android platform view mode, but as of Flutter 3.0 those options don't actually do anything, so the docs are wrong. We should update them:

Maps:

Fix it so that it switches between HC and TLHC
Update the default to HC for now, to work around https://github.com/flutter/flutter/issues/103686
Update the README to describe the Flutter 3.0+ behavior

Webview:

Either:

Add a new way to select HC (we don't want to just "fix" the old selection because we want anyone opting out of TLHC for webview to be making a new explicit decision to do it, rather than downgrade what would have been a common option for people to want pre-3.0), or
Fully deprecate the switch, and document that it's a no-op. (We don't currently have a compelling case for people to use HC for webview that I know of other than the fallback issue described in https://github.com/flutter/flutter/issues/107313, which we should just fix.)

Update the README to describe the Flutter 3.0+ behavior

The switch in WebView should be fixed once https://github.com/flutter/engine/pull/34800 makes it to stable.

For archival purposes, can you just describe what the behavior is at this moment?

For archival purposes, can you just describe what the behavior is at this moment?

Currently, for Flutter 3.0+:

Maps has received no changes yet, so no matter which mode you think you are selecting, you actually get TLHC (or, for Android versions below SDK 23, the automatic fallback to VD)
The same is mostly true of webview; the exception is the very recent fix for transparency, which will cause webview to use HC if the background is transparent (and the pre-2.0 mode the client had selected was HC, but that's the default for webview 4.x).

Understood, thank you

Per https://github.com/flutter/flutter/issues/104889#issuecomment-1348653282 we should keep (and fix) a Hybrid Composition mode option.

That's https://github.com/flutter/flutter/issues/112208


DatastoreOptions.Builder#namespace(String) should be setNamespace

Just like how there is setProjectId(String), setAuthCredentials(AuthCredentials), need setNamespace(String) for consistency. Deprecate the namespace(String) method.

You are totally right, we missed this. I'll fix ASAP, thanks for the report.


ESM exports broken in module environment

When running in an ESM environment, shared-ini-file-loader(that I know of, but it's possible other packages are outputting incorrect ESM code as well) provides a broken entryfile, resulting in an error with build processes which are strict about this thing in general:
✘ [ERROR] No matching export in<EMAIL_ADDRESS>for import "getSSOTokenFromFile"

    ../../node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js:4:9:
      4 │ import { getSSOTokenFromFile } from "@smithy/shared-ini-file-loader";

The reason for this is that in ESM, file extensions are mandatory, but the build process doesn't append these for the dist-es build. This is what the current @smithy/shared-ini-file-loader/dist-es/index.js looks like:
export * from "./getHomeDir";
export * from "./getProfileName";
export * from "./getSSOTokenFilepath";
export * from "./getSSOTokenFromFile";
export * from "./loadSharedConfigFiles";
export * from "./loadSsoSessionData";
export * from "./parseKnownFiles";
export * from "./types";

Manually adding the .js file extensions in my own node_modules folder fixes this, so this is 100% the issue for the build error. Correct ESM output should be:
export * from "./getHomeDir.js";
export * from "./getProfileName.js";
export * from "./getSSOTokenFilepath.js";
export * from "./getSSOTokenFromFile.js";
export * from "./loadSharedConfigFiles.js";
export * from "./loadSsoSessionData.js";
export * from "./parseKnownFiles.js";
export * from "./types.js";

Edit: may be an issue with the bundler, since running with a simple node command works, but to err on the side of caution, the es export should still contain the proper extensions.

Similar to https://github.com/aws/aws-sdk-js-v3/issues/3622.

I get same issue here too using Vite as bundler.


Lang directory path changed

when i run
 php artisan vendor:publish --tag=world
the lang directory goes under resources but after laravel 9 it should be in the root
this make bug of all trans or __() not working unless i deleted resources/lang

@a-j-n-a
please try php artisan vendor:publish --tag=world --force

it still publishes it on resources, not in the lang directory

@a-j-n-a i will install the package on L9 and try this. I will let you know of my findings.

@a-j-n-a please try to look at translating as below:
trans('world:xxxx')
https://laravel.com/docs/9.x/packages#translations

closed by lack of activity.

Thanks a lot, man for this great effort


removed longer version to fetch labels for pods #14778

removed longer version to fetch labels for pods to use only kubectl get pods --show-labels #14778

/review @sftim

/approve
/lgtm


Fixed crash in WebGLState::push().

Addresses issue: #3649

Thanks @ymiroshnyk! And good work on your first pull-request! We'll review it and get back to you.

I've merge this PR for days. It works very well.


add cancellable context in ssh CLI

When using the RunCommand function, there is a case where if an SSH connection is stopped from the server side without closing the connection, the program calling it will halt and be unable to resume. This may occur when a router is restarted, after which the severed ssh session will not be reestablished.
To illustrate, this line will cause deadlock
cliClient.RunCommand(context.Background(), "run killall -STOP sshd")

note: this will also block incoming ssh until killall -CONT sshd is executed. For testing, try instead run killall -STOP sshd; sleep 10s; killall -CONT sshd
with the proposed changes, it can be handled using a context with a timeout/deadline (or otherwise cancelled)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
cliClient.RunCommand(ctx, "run killall -STOP sshd")

Have also added the sshConfig timeout to DialCLI's ClientConfig.

Pull Request Functional Test Report for #2971 / 4b8161eda812bd084a6ffa4ed53474170dc9c7cd
No tests identified for validation.
Help

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

18 of 25 (72.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 55.973%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

topologies/binding/binding.go
0
1
0.0%

topologies/binding/cli.go
18
24
75.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
1996

Relevant Lines:
3566

💛  - Coveralls

Hi @dplore , could someone take a look at this PR

Hi @ram-mac please review, thank you.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

18 of 25 (72.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 55.383%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

topologies/binding/binding.go
0
1
0.0%

topologies/binding/cli.go
18
24
75.0%

Totals

Change from base Build<PHONE_NUMBER>6:
0.1%

Covered Lines:
1996

Relevant Lines:
3604

💛  - Coveralls


userName in the AuthResponse was not defined

userName in the AuthResponse was not defined and therefore onto-demo-shared-type couldn't be compiled

But userName is not supposed to be there anymore, I removed it because credentialSubject does not contain it and the rest af the app should not be using it. Please work from master branch.

I was working with master, my docker build failed because of this. see auth-model.ts:19


Move KeyValueIterable and KeyValueIterableView from trace to common

A simple PR based on this comment from @maxgolov.
Since KeyValueIterable is used by metrics, traces, and logs alike, it would be better if it belonged to the “common” namespace as it is no longer exclusive to being used for “trace”. The common namespace is used for all the common utilities and classes that have shared uses by various classes and data types. Since the KeyValueIterableView class inherits KeyValueIterable, it will be moved as well.
Thus in this PR, KeyValueIterable and KeyValueIterableView are refactored from namespace trace::* to common::* and their corresponding  *.h files are moved from api/.../trace to api/.../common.
The change continues to pass the key_value_iterable_view_test.cc, which runs unit tests for the abstract KeyValueIterable class and KeyValueIterableView inherited class, and does not break the build tests.
cc @alolita @MarkSeufert

Note: no code coverage change either

@xukaren - Karen, did you guys actually merge it? Looks like it's closed by not merged?

oh I see, basically you are collecting fixes in your repo, then gonna do one big pull request into mainline?

@maxgolov sorry for the confusion by tagging you in this post! this was a code review / PR draft I ran by Alolita before submitting upstream; the official PR upstream is here https://github.com/open-telemetry/opentelemetry-cpp/pull/363 (which hasnt yet been merged because the CI tests or something seem to be broken)

@xukaren - absolutely not a problem. I actually appreciate tagging me, I would love to have an early peek at your work before you submit it for formal PR review in the mainline branch!


Any way to tell when a component is done rendering?

I am attempting to use bootstrap-table. I can post more details, but the only way I can get it to work is to delay bootstrap-table from attaching/seeking the table until rendering by VueJS is complete. Is there any way to tell when the table component has finished it's first render?
At the moment, bootstrap-table works when I do a setTimeout for x (in this case 2000) milliseconds before returning the data.

Please ask these questions on the forum or Gitter.

Hi there! This question is best suited for the Forum or Gitter. To quickly answer your question, you can use the Lifecycle Hooks that Vue provides: http://vuejs.org/api/#Options-Lifecycle-Hooks
For your case, you can try using the ready hook depending on the specifics of bootstrap-table.

In Vue 2.0, ready has been replaced by mounted. If you want to make sure that all child components have also been mounted, use vm.$nextTick:
mounted: function () {
  this.$nextTick(function () {
    // Code that will run only after the
    // entire view has been rendered
  })
}

Source: https://vuejs.org/v2/api/#Options-Lifecycle-Hooks

-@drasnop Wrong it does not guarantee that -> https://github.com/vuejs/vue-router/issues/289

does nextTick for all components updated?

@matthewmorgan I have the same problem, I am using v-for in my template. Can I solve this in any way?

Here is a solution from the comments of similar issue #9200:
https://www.npmjs.com/package/vue-force-next-tick
Apparently in some situations the "double requestAnimationFrame method" is needed.

This is how I do it and it works for me:
Before execute my action, I ask first if my component exists, until my target component is finally loaded.
 updated: function(){
    var ref = this
    this.$nextTick(function () {
      if(typeof ref.$refs.table != 'undefined'){
          ref.$refs.table.setPage(this.pageNum)
        }
      })
  }

My target component has a 'ref' prop, that one I used for the condition
<v-client-table ref="table">

works great

@manuelgeek Thanks for the tip.  I am very sad that something like the above is needed..seems like hacking around something that ought to be baked in.


set user after privileged copy command

and optimize bash entrypoint

@scareything May I please have a review?


Adjacent monitor jump issue

Hi there,
This is a lovely tool and I just installed it on a new device. I found some unexpected behaviour in what I guess comes from the +j option for jumping the mouse cursor to adjacent monitors that aren't quite aligned with each other.
I've added a StartUp link that runs the .exe as follows:
C:\Users\<username>\.tools\MouseUnSnag\MouseUnSnag.exe +s +j -w

Let me illustrate the issue by showing my monitor setup and adding some arrows, like in the readme.
Expected behaviour:

The cursor moving along the top of screen 3 onto screen 4 should be moved from the top-right of screen 3 to the top-left of screen 4.
Similarly, the cursor moving along the top of screen 2 onto screen 4 should be moved from the top-left of screen 2 to the top-right of screen 4.
Observed behaviour:

The cursor jumps from the top-right of screen 3 to the top-left of screen 1.
Similarly, the cursor jumps from the top-left of screen 2 to the top-right of screen 1.
I tried to work around this by just disabling the 'Jump between monitors' option, but that will have the mouse snag in my Screen3-top-right and Screen2-top-left corners and not move to another screen at all.

Looking into the code, it looks like this is due to the DisplayList.ScreenInDirection implementation returning the first display that matches a directional criterion.
Assuming that's indeed the issue, the comment in that method already proposes the solution:
            // May want to update the above routine, which arbitrarily selects the monitor that
            // happens to come first in the for() loop. We should probably do a little extra work,
            // and select the monitor that is closest to the mouse position.

Unfortunately I can't seem to reproduce this with the 3 monitors that I have (2 external, 1 laptop). Are you able to reproduce with only 3 or does this require 4 monitors in order for the bug to appear? This is the arrangement I tried.

If you happen to have the coding ability to attempt a fix and issue a PR, I can try to compile and review it for you.  As long as I can find a way to reproduce it. I'm not much of a C# dev myself (I only dabble), I just happen to be really proactive here since I also use this tool daily.

@GrantMoyer is this something you can repro with your setup?

Yes, I am able to reproduce with 3 monitors as well. Although the issue doesn't appear on every jump, maybe 30%-50% of the cursor jumps are to the wrong screen.
I'll have a go at running the program in debug mode over the weekend. And if that session confirms my hunch and points to the DisplayList.ScreenInDirection method, have a stab at implementing the suggestion in the comment.

@Robin-S I asked broadly but didn't explicitly ask for steps to reproduce, sorry.
Do you have a specific arrangement of the monitors and/or a set of steps that you found that we (or I) can walk through to reproduce this bug (at least make it more likely to reproduce)? If so, let me know since I'd like to be able to at least get it to occur prior to review and merging a fix.
Also note that at the moment that there some other v2.2 milestones which are still apparently outstanding (partially my fault, largely just documentation) that should probably be addressed before we can actually push out the release that could contain this fix.

I did a little bit more testing to hopefully find something more specific, currently using 3 external monitors on my PC graphics card.
I found that I'm *not* able to reproduce the bug with this arrangement:

I am moving the cursor along the very top edge of the screens. In doing so, I'm not only moving my mouse (the physical device) left and right, but also very slightly upwards - to keep the cursor at the top edge.
Interestingly, when I rearrange my displays like below, the bug *does* sometimes occur:

And in fact, when I exaggerate that upwards movement of the mouse and hit Screen3 in the corner (something like a 6x6 px area), the cursor seems to jump to the wrong location much more consistently.

Is that something you could try?

Trying it without the 'unstick' option now (so only jump enabled). My cursor is now jumping to the wrong location 100% of the time when I try to move it beyond the top-left corner of Screen3 in the last arrangement.

I haven't reproduced this, but looking nuat the code you pointed out, it doesn't handle your case well.
The current algorithm is roughly:

For each monitor in the same order the OS numbers them

If the cursor moved off the current monitor horizontally (including if it also moved vertically, i.e. diagonally), and the monitor's edge lines up exactly with the current monitor, jump to that monitor
if the cursor moved of the current monitor vertically, and the monitor's edge lines up exactly with the current monitor, jump to that monitor

A better algorithm might be:

Filter the list of all monitors to just those in the direction the cursor left the current monitor.
Jump to the monitor in the filtered list which is closest to where the cursor left the current monitor.


Removed "dead" code and added errors for invalid inputs to put()

One last one for you tonight!

Removed "dead" code which I believe can never be hit.
Removed unneeded memsize() method.
Started throwing errors for invalid timeout and timeoutCallback types sent into put().
Fixed several typos in the README.
Fixed issue with test suite not properly running tests which used throw(we need to use throw() instead of just throw).
Other minor test and code cleanup.

Please keep breaking it up.


Added a simple swap element example

Included some Python trickery to swam elements in place without the use of temporary variables

Already shown in valueswapping.py ;).

Darn
On Mon, Mar 23, 2015 at 6:13 PM Max Brenner<EMAIL_ADDRESS>wrote:

Already shown in valueswapping.py ;).
—
Reply to this email directly or view it on GitHub
https://github.com/brennerm/PyTricks/pull/34#issuecomment-85114227.[image:
Web Bug from
https://github.com/notifications/beacon/AC20SvDddzx50nnyyomULYp-0jEKeQC3ks5n4ET4gaJpZM4DzPLP.gif]


add the ability to take a screenshot from atom

I've needed this several times, and had always had to go to the cmd line.
Perhaps add it in the flutter cli tool, and re-expose in atom?

Do you mean, screenshot of the running app on your phone or simulator? If so, should we re-file/move to the Flutter plugin repo?

Yup, the this should probably be re-filed. Looks like adb has good support for capturing screenshots.


add support for Android NDK unified headers (master)

Fix issue #12514 for branch master

As soon as you squash your commits, this is fine to me.

@RandomShaper done!


Adding citation  tags

This makes the article import correctly into Zotero and the like. :)

manually added change


Request money - Website takes you to other unrelated link when using chats

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to https://staging.new.expensify.com
Log in account
Open new chat
Send messages or request money
Go back to LHN

Expected Result:
Land in the New Expensify chats page or land in the same chat as DM after requesting money
Actual Result:
Website takes you to an unrelated link or website after exploring chats or requesting money
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/153500086-54c8372b-101c-4e00-9df7-2c6b797ce21c.mp4
https://user-images.githubusercontent.com/93399543/153500097-125c378d-dd8f-47f4-b9f2-46b3e462e2a6.mp4
Expensify/Expensify Issue URL:
Issue reported by:
Slack conversation:
View all open jobs on GitHub

Triggered auto assignment to @robertjchen (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Hm, I can't seem to reproduce this issue myself on staging. Could we try clearing local storage and trying these steps again?

@robertjchen Tester is not able to reproduce it today. Two testers were able to reproduce yesterday though.

Hm, I was able to reproduce it locally in incognito mode, but it seems to only occur the first time. Will continue looking into this throughout the week

Still trying to reproduce the issue reliably 🤔

Issue not reproducible during KI retests. (First week)

Issue not reproducible during KI retests. (Second week)

can't reproduce issue on my end this week either.

Issue not reproducible during KI retests. (Third week) Closing


Release Google.Cloud.Optimization.V1 version 2.1.0

Changes in this release:
New features

Enable REST transport in C# (commit e04406f)

Documentation improvements

Fix minor docstring formatting (commit dd7d952)

Created release for Google.Cloud.Optimization.V1-2.1.0


fix: issue 1258

Summary
Resolves Tuple value for blocks argument does not work for Web API calls https://github.com/slackapi/python-slack-sdk/issues/1258
Category (place an x in each of the [ ])

[x] slack_sdk.web.WebClient (sync/async) (Web API client)
[ ] slack_sdk.webhook.WebhookClient (sync/async) (Incoming Webhook, response_url sender)
[ ] slack_sdk.socket_mode (Socket Mode client)
[ ] slack_sdk.signature (Request Signature Verifier)
[ ] slack_sdk.oauth (OAuth Flow Utilities)
[ ] slack_sdk.models (UI component builders)
[ ] slack_sdk.scim (SCIM API client)
[ ] slack_sdk.audit_logs (Audit Logs API client)
[ ] slack_sdk.rtm_v2 (RTM client)
[ ] /docs-src (Documents, have you run ./scripts/docs.sh?)
[ ] /docs-src-v2 (Documents, have you run ./scripts/docs-v2.sh?)
[ ] /tutorial (PythOnBoardingBot tutorial)
[x] tests/integration_tests (Automated tests for this library)

Requirements (place an x in each [ ])

[x] I've read and understood the Contributing Guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've run python3 -m venv .venv && source .venv/bin/activate && ./scripts/run_validation.sh after making the changes.

💡 Additionally, the SDK could accept an Iterable instead of Sequence, therefore allowing generators like:
messages_to_send: list[str] = ...

client.chat_postMessage(
    channel="#channel",
    blocks=(SectionBlock(text=some_text) for some_text in messages_to_send)
)

Additionally, the SDK could accept an Iterable instead of Sequence, therefore allowing generators

Yeah, this can be a great addition for some specific use cases but not this time!

@tommasobertoni Thanks a lot for sending this PR! The changes already look great to me. Once the CI builds pass, we will merge the change into the main branch.

Hi, since the release of 3.18.2 (hence this PR being merged I believe), our CIs failed to send CI reports to our slack channels. The failing payload is provided below. The same payload was able to be sent to slack channels if I changed to slack_sdk==3.18.1.
Is this an intended breaking change?
The payload working with 3.18.1 but not 3.18.2
{"blocks": [{"type": "header", "text": {"type": "plain_text", "text": "\ud83e\udd17 Results of the Past CI - pytorch-1.11 tests."}}, {"type": "section", "text": {"type": "plain_text", "text": "There were 68 failures, out of 28636 tests.\nThe suite ran in 2h34m15s.", "emoji": true}, "accessory": {"type": "button", "text": {"type": "plain_text", "text": "Check Action results", "emoji": true}, "url": "https://github.com/huggingface/transformers/actions/runs/2970011128"}}, {"type": "section", "text": {"type": "mrkdwn", "text": "The following modeling categories had failures:\n```\nSingle |  Multi | Category\n    14 |     15 | PyTorch\n     3 |      3 | TensorFlow\n     1 |      1 | Tokenizers\n     1 |      0 | Trainer\n     1 |      1 | Auto\n    14 |     14 | Unclassified\n```\n"}}, {"type": "section", "text": {"type": "mrkdwn", "text": "These following model modules had failures:\n```\nSingle PT |  Multi PT | Single TF |  Multi TF |     Other | Category\n        0 |         0 |         0 |         0 |         1 | trainer\n        0 |         0 |         0 |         0 |         2 | models_layoutlmv2\n        0 |         0 |         0 |         0 |        30 | models_wav2vec2_with_lm\n        0 |         0 |         3 |         3 |         0 | models_opt\n        1 |         1 |         0 |         0 |         0 | models_wav2vec2\n        3 |         3 |         0 |         0 |         0 | models_bloom\n       10 |        11 |         0 |         0 |         0 | models_owlvit\n```\n"}}, {"type": "section", "text": {"type": "mrkdwn", "text": "The following non-model modules had failures:\n```\nSingle |  Multi | Category\n     1 |      0 | trainer\n```\n"}}]}

Error
Traceback (most recent call last):
  File "utils/notification_service.py", line 901, in <module>
    message.post()
  File "utils/notification_service.py", line 445, in post
    self.thread_ts = client.chat_postMessage(
  File "/home/runner/.local/lib/python3.8/site-packages/slack_sdk/web/client.py", line 2066, in chat_postMessage
    return self.api_call("chat.postMessage", json=kwargs)
  File "/home/runner/.local/lib/python3.8/site-packages/slack_sdk/web/base_client.py", line 156, in api_call
    return self._sync_send(api_url=api_url, req_args=req_args)
  File "/home/runner/.local/lib/python3.8/site-packages/slack_sdk/web/base_client.py", line 187, in _sync_send
    return self._urllib_api_call(
  File "/home/runner/.local/lib/python3.8/site-packages/slack_sdk/web/base_client.py", line [30](https://github.com/huggingface/transformers/runs/8138562211?check_suite_focus=true#step:5:31)9, in _urllib_api_call
    return SlackResponse(
  File "/home/runner/.local/lib/python3.8/site-packages/slack_sdk/web/slack_response.py", line 189, in validate
    raise e.SlackApiError(message=msg, response=self)
slack_sdk.errors.SlackApiError: The request to the Slack API failed. (url: https://www.slack.com/api/chat.postMessage)
The server responded with: {'ok': False, 'error': 'invalid_blocks_format'}

Hi @ydshieh, thanks for reporting the issue. Definitely any existing code should work without any changes. I will look into this but, with given information, I am still unsure about how to reproduce your situation. If you can share the code snippet to reproduce the issue, that'd be greatly helpful for us.

@seratch Thanks, I will try to give a code snippet.

Hi @seratch
The script to reproduce the issue under slack_sdk==3.18.2
https://github.com/huggingface/transformers/blob/0b1d41e499dcfa6825f6e415c25d0d454e5ad05e/utils/notification_service.py
If helpful, this workflow file triggers the above script
https://github.com/huggingface/transformers/blob/1ab18a66ad491b3dd3bbdc5a12b5eb6d662ad4c4/.github/workflows/self-scheduled.yml
Here are the job run results:

job runs with 3.18.1
job fails with 3.18.2

Let me know if you need more information, thanks

@ydshieh Thanks for sharing the details! It was very helpful for us to understand your use case. Using str value for blocks/attachments was not supported by design but we will support it in future versions. See also: https://github.com/slackapi/python-slack-sdk/issues/1261

@ydshieh Your issue should be resolved in the latest version 3.18.3. Thanks again for sharing this!

Thanks a lot, @seratch! Confirmed it works again.


[2.9] [GKE] Default network is not 'default' when provisioning the cluster

Setup

Rancher version: v2.9-519c3f0ed10fe01423a241f93b0a0beb17712dd9-head
Rancher UI Extensions: release-2.9 e02174d
Browser type & version: Firefox

Describe the bug

The dropdown lists networks alphabetically, so the network starting with a,b, or c and first in the list is selected by default, rather than 'default'.
To Reproduce

On 2.9-head, open GKE create wizard and go to Networking section.
Check the Network and Node Subnet.

Result
My existing list contains a network called cpinjani-private which is selected by default.
Expected Result

default network must be selected by default.
Screenshots

2.8 -

2.9 -

Additional context

This can also be misleading since the Networking section is collapsed by default.

@richard-cox I am not sure which milestone to set here, should it be v2.10.0 with backport-candidate label?

@valaparthvi that's correct! is this a regression?

@valaparthvi that's correct! is this a regression?

Yes, it is a regression.

Just looked into this a bit, per google docs a 'default' vpc is not guaranteed to be present:

Projects can contain multiple VPC networks. Unless you create an organizational policy that prohibits it, new projects start with a default network (an auto mode VPC network) that has one subnetwork (subnet) in each region.

Whoever picks this up needs to account for this scenario.

/backport v2.10.1


net/http/httputil: concurrent map writes in ReverseProxy on subsequent RoundTripper usages

Go version
go version go1.21.6 linux/amd64
Output of go env in your module/workspace:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/pivotal/.cache/go-build'
GOENV='/home/pivotal/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/pivotal/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/pivotal/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.21.6'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build743232752=/tmp/go-build -gno-record-gcc-switches'

What did you do?
https://go.dev/play/p/kxnqMuLCo-2
What did you see happen?
Sometimes getting an error:
fatal error: concurrent map writes

goroutine 53 [running]:
net/http/httputil.(*ReverseProxy).ServeHTTP.func2(0xc000222420?, 0xc000214000?)
	/usr/local/go-faketime/src/net/http/httputil/reverseproxy.go:464 +0x6b
net/http.(*persistConn).readResponse(0xc000230000, {{}, 0xc000214000, {0xc000142300}, 0xc00021c420, 0x0, 0xc00021c360, 0xc00021c3c0}, 0xc000110180)
	/usr/local/go-faketime/src/net/http/transport.go:2338 +0x1ff
net/http.(*persistConn).readLoop(0xc000230000)
	/usr/local/go-faketime/src/net/http/transport.go:2133 +0x3b0
created by net/http.(*Transport).dialConn in goroutine 49
	/usr/local/go-faketime/src/net/http/transport.go:1776 +0x169f

goroutine 1 [select]:
net/http.(*persistConn).roundTrip(0xc00019a120, 0xc0001a2000)
	/usr/local/go-faketime/src/net/http/transport.go:2652 +0x979
net/http.(*Transport).roundTrip(0x8e13c0, 0xc00018a000)
	/usr/local/go-faketime/src/net/http/transport.go:604 +0x79a
net/http.(*Transport).RoundTrip(0xc00007ca08?, 0x740520?)
	/usr/local/go-faketime/src/net/http/roundtrip.go:17 +0x13
net/http.send(0xc00018a000, {0x740520, 0x8e13c0}, {0xc00007cc01?, 0x414da8?, 0x0?})
	/usr/local/go-faketime/src/net/http/client.go:260 +0x606
net/http.(*Client).send(0x8e6aa0, 0xc00018a000, {0x416328?, 0x42151c?, 0x0?})
	/usr/local/go-faketime/src/net/http/client.go:181 +0x98
net/http.(*Client).do(0x8e6aa0, 0xc00018a000)
	/usr/local/go-faketime/src/net/http/client.go:724 +0x912
net/http.(*Client).Do(...)
	/usr/local/go-faketime/src/net/http/client.go:590
main.main()
	/tmp/sandbox3108800449/prog.go:65 +0x45f

goroutine 6 [IO wait]:
internal/poll.runtime_pollWait(0x7ea93a63ae38, 0x72)
	/usr/local/go-faketime/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000110000?, 0x4?, 0x0)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000110000)
	/usr/local/go-faketime/src/internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000110000)
	/usr/local/go-faketime/src/net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000128000)
	/usr/local/go-faketime/src/net/tcpsock_posix.go:152 +0x1e
net.(*TCPListener).Accept(0xc000128000)
	/usr/local/go-faketime/src/net/tcpsock.go:315 +0x30
net/http.(*Server).Serve(0xc000100000, {0x742080, 0xc000128000})
	/usr/local/go-faketime/src/net/http/server.go:3056 +0x364
net/http.(*Server).ListenAndServe(0xc000100000)
	/usr/local/go-faketime/src/net/http/server.go:2985 +0x71
net/http.ListenAndServe({0x6c51dd, 0x5}, {0x73fcc0?, 0xc00001c240})
	/usr/local/go-faketime/src/net/http/server.go:3239 +0x8f
created by main.main in goroutine 1
	/tmp/sandbox3108800449/prog.go:22 +0xb6

goroutine 38 [IO wait]:
internal/poll.runtime_pollWait(0x7ea93a63ab50, 0x72)
	/usr/local/go-faketime/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc0000ba000?, 0xc000102491?, 0x0)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0000ba000, {0xc000102491, 0x1, 0x1})
	/usr/local/go-faketime/src/internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc0000ba000, {0xc000102491?, 0xc000040780?, 0x40595b?})
	/usr/local/go-faketime/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc000042040, {0xc000102491?, 0xc000180000?, 0xc000076118?})
	/usr/local/go-faketime/src/net/net.go:179 +0x45
net/http.(*connReader).backgroundRead(0xc000102480)
	/usr/local/go-faketime/src/net/http/server.go:683 +0x37
created by net/http.(*connReader).startBackgroundRead in goroutine 9
	/usr/local/go-faketime/src/net/http/server.go:679 +0xba

goroutine 18 [IO wait]:
internal/poll.runtime_pollWait(0x7ea93a63ad40, 0x72)
	/usr/local/go-faketime/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000110080?, 0x16?, 0x0)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000110080)
	/usr/local/go-faketime/src/internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000110080)
	/usr/local/go-faketime/src/net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000128060)
	/usr/local/go-faketime/src/net/tcpsock_posix.go:152 +0x1e
net.(*TCPListener).Accept(0xc000128060)
	/usr/local/go-faketime/src/net/tcpsock.go:315 +0x30
net/http.(*Server).Serve(0xc0001000f0, {0x742080, 0xc000128060})
	/usr/local/go-faketime/src/net/http/server.go:3056 +0x364
net/http.(*Server).ListenAndServe(0xc0001000f0)
	/usr/local/go-faketime/src/net/http/server.go:2985 +0x71
net/http.ListenAndServe({0x6c51e2, 0x5}, {0x0?, 0x0})
	/usr/local/go-faketime/src/net/http/server.go:3239 +0x8f
created by main.main in goroutine 1
	/tmp/sandbox3108800449/prog.go:56 +0x2de

goroutine 19 [IO wait]:
internal/poll.runtime_pollWait(0x7ea93a63ac48, 0x72)
	/usr/local/go-faketime/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc0001a4200?, 0xc00012e000?, 0x0)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001a4200, {0xc00012e000, 0x1000, 0x1000})
	/usr/local/go-faketime/src/internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc0001a4200, {0xc00012e000?, 0x40cd65?, 0xc0001023c0?})
	/usr/local/go-faketime/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc000108030, {0xc00012e000?, 0xc000044800?, 0x10?})
	/usr/local/go-faketime/src/net/net.go:179 +0x45
net/http.(*persistConn).Read(0xc00019a120, {0xc00012e000?, 0xc00007cc90?, 0x7ea8f3cc02a8?})
	/usr/local/go-faketime/src/net/http/transport.go:1954 +0x4a
bufio.(*Reader).fill(0xc0001140c0)
	/usr/local/go-faketime/src/bufio/bufio.go:113 +0x103
bufio.(*Reader).ReadSlice(0xc0001140c0, 0xd5?)
	/usr/local/go-faketime/src/bufio/bufio.go:379 +0x29
bufio.(*Reader).ReadLine(0xc0001140c0)
	/usr/local/go-faketime/src/bufio/bufio.go:408 +0x25
net/textproto.(*Reader).readLineSlice(0xc00007cc90)
	/usr/local/go-faketime/src/net/textproto/reader.go:56 +0x99
net/textproto.(*Reader).ReadLine(...)
	/usr/local/go-faketime/src/net/textproto/reader.go:39
net/http.ReadResponse(0xc0001140c0, 0xc00018a100)
	/usr/local/go-faketime/src/net/http/response.go:161 +0x97
net/http.(*persistConn).readResponse(0xc00019a120, {{}, 0xc00018a100, {0xc00018a000}, 0xc0001340c0, 0x1, 0xc000134000, 0xc000134060}, 0x0)
	/usr/local/go-faketime/src/net/http/transport.go:2311 +0xce
net/http.(*persistConn).readLoop(0xc00019a120)
	/usr/local/go-faketime/src/net/http/transport.go:2133 +0x3b0
created by net/http.(*Transport).dialConn in goroutine 33
	/usr/local/go-faketime/src/net/http/transport.go:1776 +0x169f

goroutine 20 [select]:
net/http.(*persistConn).writeLoop(0xc00019a120)
	/usr/local/go-faketime/src/net/http/transport.go:2421 +0xe5
created by net/http.(*Transport).dialConn in goroutine 33
	/usr/local/go-faketime/src/net/http/transport.go:1777 +0x16f1

goroutine 7 [runnable]:
net/textproto.MIMEHeader.Set(...)
	/usr/local/go-faketime/src/net/textproto/header.go:22
net/http.Header.Set(...)
	/usr/local/go-faketime/src/net/http/header.go:40
main.main.func4({0x741f00, 0xc000150000}, 0xc000110180?, {0xa?, 0xc00019963a?})
	/tmp/sandbox3108800449/prog.go:50 +0xc5
net/http/httputil.(*ReverseProxy).ServeHTTP(0xc00010c140, {0x741f00, 0xc000150000}, 0xc000142100)
	/usr/local/go-faketime/src/net/http/httputil/reverseproxy.go:475 +0x10c3
main.main.main.func2.func6({0x741f00, 0xc000150000}, 0x6252d9?)
	/tmp/sandbox3108800449/prog.go:33 +0xe5
net/http.HandlerFunc.ServeHTTP(0x10?, {0x741f00?, 0xc000150000?}, 0x7ea93a637b98?)
	/usr/local/go-faketime/src/net/http/server.go:2136 +0x29
net/http.(*ServeMux).ServeHTTP(0x40d0e5?, {0x741f00, 0xc000150000}, 0xc000142000)
	/usr/local/go-faketime/src/net/http/server.go:2514 +0x142
net/http.serverHandler.ServeHTTP({0x741038?}, {0x741f00?, 0xc000150000?}, 0x1?)
	/usr/local/go-faketime/src/net/http/server.go:2938 +0x8e
net/http.(*conn).serve(0xc0000bc000, {0x742490, 0xc000102360})
	/usr/local/go-faketime/src/net/http/server.go:2009 +0x5f4
created by net/http.(*Server).Serve in goroutine 18
	/usr/local/go-faketime/src/net/http/server.go:3086 +0x5cb

goroutine 27 [chan receive]:
main.main.main.func2.func6.1()
	/tmp/sandbox3108800449/prog.go:30 +0x19
net/http.(*persistConn).readResponse(0xc000330000, {{}, 0xc00032c000, {0xc000142300}, 0xc000134720, 0x0, 0xc000134660, 0xc0001346c0}, 0xc000110180)
	/usr/local/go-faketime/src/net/http/transport.go:2319 +0x144
net/http.(*persistConn).readLoop(0xc000330000)
	/usr/local/go-faketime/src/net/http/transport.go:2133 +0x3b0
created by net/http.(*Transport).dialConn in goroutine 65
	/usr/local/go-faketime/src/net/http/transport.go:1776 +0x169f

What did you expect to see?
Expected no errors.
This example has custom implementation of ErrorHandler that writes to response headers a bunch of times to better expose the data race. ReverseProxy defaultErrorHandler writes to response headers once. And there is also some header updates happening after.
This seems to be an issue when RoundTrip retries requests. The first RoundTrip call does block until trace contexts are run, but not the subsequent RoundTrip calls.

cc @neild

@mariash Can you try running it with -race to see if there is any race conditions with the code? Thanks

@mauri870 the error I am getting with -race is:
WARNING: DATA RACE
Write at 0x00c0001d2060 by goroutine 27:
  net/http.(*response).Header()
      /usr/local/go/src/net/http/server.go:1094 +0x11d
  net/http/httputil.(*ReverseProxy).ServeHTTP.func2()
      /usr/local/go/src/net/http/httputil/reverseproxy.go:459 +0x54
  net/http.(*persistConn).readResponse()
      /usr/local/go/src/net/http/transport.go:2338 +0x38f
  net/http.(*persistConn).readLoop()
      /usr/local/go/src/net/http/transport.go:2133 +0x59c
  net/http.(*Transport).dialConn.func5()
      /usr/local/go/src/net/http/transport.go:1776 +0x33

Previous write at 0x00c0001d2060 by goroutine 16:
  net/http.(*response).Header()
      /usr/local/go/src/net/http/server.go:1094 +0x11d
  main.main.func4()
      /home/pivotal/workspace/reverseproxy-example-or/server.go:50 +0x6d
  net/http/httputil.(*ReverseProxy).ServeHTTP()
      /usr/local/go/src/net/http/httputil/reverseproxy.go:475 +0x185d
  main.main.main.func2.func6()
      /home/pivotal/workspace/reverseproxy-example-or/server.go:33 +0x17b
  net/http.HandlerFunc.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2136 +0x47
  net/http.(*ServeMux).ServeHTTP()
      /usr/local/go/src/net/http/server.go:2514 +0xbc
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2938 +0x2a1
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:2009 +0xc24
  net/http.(*Server).Serve.func3()
      /usr/local/go/src/net/http/server.go:3086 +0x4f

Goroutine 27 (running) created at:
  net/http.(*Transport).dialConn()
      /usr/local/go/src/net/http/transport.go:1776 +0x25d9
  net/http.(*Transport).dialConnFor()
      /usr/local/go/src/net/http/transport.go:1467 +0x129
  net/http.(*Transport).queueForDial.func1()
      /usr/local/go/src/net/http/transport.go:1436 +0x44

Goroutine 16 (running) created at:
  net/http.(*Server).Serve()
      /usr/local/go/src/net/http/server.go:3086 +0x86c
  net/http.(*Server).ListenAndServe()
      /usr/local/go/src/net/http/server.go:2985 +0xbc
  net/http.ListenAndServe()
      /usr/local/go/src/net/http/server.go:3239 +0x124
  main.main.func8()
      /home/pivotal/workspace/reverseproxy-example-or/server.go:56 +0x39

My understanding the first ReadResponse happens in the same goroutine. Subsequent ReadResponse calls are happening in the separate goroutine. Which eventually calls Got1xxResponse. ReverseProxy configures Got1xxResponse to write to Headers map. And then original goroutine modifies headers as well.

Now I've taken a deeper look at the code, CL 556037 needs more work, still working on it.

Hi @panjf2000 thank you for looking into this.
Looking at CL 556037:
1 . Seems like access to got1xxResponses variable might not be thread-safe.
2. It can be read before Got1xxResponse hook is called which will result in inconsistent behavior.
I feel like there could be couple ways to fix the issue. Ideally, ResponseWriter would be thread-safe, but it returns a Headers map directly and changing this seems to be a complex change.
Second option would be for Transport to wait for read response before returning from RoundTrip, e.g. making sure readLoop is done which seems like what was fixed in writeLoop. This would be great too since it will allow anyone to safely use Got100Continue and Got1xxResponse hooks.
And the last option is to make ReverseProxy itself thread-safe, probably add lock when accessing Header map. But this would mean that custom hooks or ErrorHandler can't use the same ResponseWriter safely.

@mariash Thank you for your analysis and suggestion.
Option 2 does sound like a better idea, I'll try that in CL 556037.

Looking at CL 556037:
1 . Seems like access to got1xxResponses variable might not be thread-safe.
2. It can be read before Got1xxResponse hook is called which will result in inconsistent behavior.

One more thing though, I don't quite get your point about this, given that got1xxResponses would only be accessed by Got1xxResponse in readLoop goroutine during RoundTrip, how can it not be thread-safe or be read before Got1xxResponse?

After a deeper look at your code, it seems that the root cause of the data race is the RetryTransport you implemented, it would be no contention if it is removed and let the ReverseProxy use the default transport. Besides, according to the doc of RoundTripper, you shouldn't reuse the request body cuz it will be closed after RoundTrip(). Why did you need the RetryTransport anyway?
This issue now seems more like a false alert to me.
@mariash

@panjf2000 to answer your questions:

One more thing though, I don't quite get your point about this, given that got1xxResponses would only be accessed by Got1xxResponse in readLoop goroutine during RoundTrip, how can it not be thread-safe or be read before Got1xxResponse?

got1xxResponses is written in the readLoop goroutine which started when RoundTrip is called. Since RoundTrip method does not wait for readLoop to finish before returning got1xxResponses is getting read on line 481 of your change which causes 2 goroutines to write/read at the same time.

After a deeper look at your code, it seems that the root cause of the data race is the RetryTransport you implemented, it would be no contention if it is removed and let the ReverseProxy use the default transport. Besides, according to the doc of RoundTripper, you shouldn't reuse the request body cuz it will be closed after RoundTrip(). Why did you need the RetryTransport anyway?

Here the doc states:

Transports should be reused instead of created as needed. Transports are safe for concurrent use by multiple goroutines.

My understanding you can call RoundTrip on the same transport multiple times.  This is why I titled this issue: "on subsequent RoundTripper usages".
Anyway, since the issue is in readLoop still running you don't need to reuse RoundTripper to get the error. Here I have an example that uses default Transport and will cause RoundTrip to return earlier than the readLoop by setting ResponseHeaderTimeout. It is harder to get the data race in this case. You need to run this code with -race flag which you can't do in the Golang playground. After running this couple times I am getting the same data race:
WARNING: DATA RACE
Write at 0x00c000290120 by goroutine 14:
  runtime.mapassign_faststr()
      /usr/local/go/src/runtime/map_faststr.go:203 +0x0
  net/textproto.MIMEHeader.Set()
      /usr/local/go/src/net/textproto/header.go:22 +0xde
  net/http.Header.Set()
      /usr/local/go/src/net/http/header.go:40 +0x67
  main.main.func3()
      /home/pivotal/workspace/reverseproxy-example/server.go:44 +0x51
  net/http/httputil.(*ReverseProxy).ServeHTTP()
      /usr/local/go/src/net/http/httputil/reverseproxy.go:477 +0x185d
  main.main.main.func2.func5()
      /home/pivotal/workspace/reverseproxy-example/server.go:29 +0x10b
  net/http.HandlerFunc.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2136 +0x47
  net/http.(*ServeMux).ServeHTTP()
      /usr/local/go/src/net/http/server.go:2514 +0xbc
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2938 +0x2a1
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:2009 +0xc24
  net/http.(*Server).Serve.func3()
      /usr/local/go/src/net/http/server.go:3086 +0x4f

Previous read at 0x00c000290120 by goroutine 21:
  runtime.mapiternext()
      /usr/local/go/src/runtime/map.go:867 +0x0
  net/http/httputil.(*ReverseProxy).ServeHTTP.func2()
      /usr/local/go/src/net/http/httputil/reverseproxy.go:465 +0x104
  net/http.(*persistConn).readResponse()
      /usr/local/go/src/net/http/transport.go:2387 +0x4b0
  net/http.(*persistConn).readLoop()
      /usr/local/go/src/net/http/transport.go:2165 +0x6a5
  net/http.(*Transport).dialConn.func5()
      /usr/local/go/src/net/http/transport.go:1793 +0x33

So the problem in that transport.go leaves readLoop goroutine running after RoundTrip is returned in some error cases:

When calling RoundTrip readLoop goroutine is started, which calls hooks as part of readResponse like Got100Continue and Got1xxResponse.
RoundTrip does not wait for readLoop to finish. There was a fix for it to wait for writeLoop but not the readLoop.
That results in the readLoop still running after RoundTrip is returned.
In case of ReverseProxy that readLoop modifies headers in the Got1xxResponse and after RoundTrip is finished.

In majority of cases readLoop it is executed fast enough. But we are seeing this concurrent map writes sometime and that results in fatal concurrent map write errors that cannot be recovered and it causes the whole server to crash instead of just one connection failure.
I experimented with transport.go and had a change similar to this one - waiting for readResponse to finish if it is running. It seems to fix the race condition for ReverseProxy.

got1xxResponses is written in the readLoop goroutine which started when RoundTrip is called. Since RoundTrip method does not wait for readLoop to finish before returning got1xxResponses is getting read on line 481 of your change which causes 2 goroutines to write/read at the same time.

If I understand the code correctly, even though the default RoundTrip returns without waiting for readLoop to exit, it does wait for persistConn.readResponse in which Got1xxResponse is called to modify the headers. After RoundTrip returns, it's safe to update headers in the current goroutine while readLoop goroutine is running and it will not go into persistConn.readResponse cuz readLoop will be blocked at:
https://github.com/golang/go/blob/66d34c7d08d7c536c3165dc49ed318e73ea5acc2/src/net/http/transport.go#L2150
unless RoundTrip is called again, which is what you did in your previous reproducer with RetryTransport. In that case, we don't even need CL 556037 to introduce got1xxResponses, the current implementation is already goroutine-safe.

My understanding you can call RoundTrip on the same transport multiple times. This is why I titled this issue: "on subsequent RoundTripper usages".

You certainly can reuse RoundTrip, it's designed that way. What I was saying is that you shouldn't reuse it with the same request cuz the request body would be closed after RoundTrip returns. As the doc states:

// RoundTrip should not modify the request, except for
// consuming and closing the Request's Body. RoundTrip may
// read fields of the request in a separate goroutine. Callers
// should not mutate or reuse the request until the Response's
// Body has been closed.

When you did so, it resumed the readLoop and it went into persistConn.readResponse again:
https://github.com/golang/go/blob/66d34c7d08d7c536c3165dc49ed318e73ea5acc2/src/net/http/transport.go#L2658-L2665
As for your new reproducer, it does cause data race, but in a completely different way : you manage to prevent RoundTrip from waiting persistConn.readResponse by setting http.Transport.ResponseHeaderTimeout with a non-zero value and stalling the backend server for the exact same amount of time to respond to a request, which causes RoundTrip to fall into the branch case <-respHeaderTimer instead of case re := <-resc and lead to a early return before persistConn.readResponse is done:
https://github.com/golang/go/blob/66d34c7d08d7c536c3165dc49ed318e73ea5acc2/src/net/http/transport.go#L2699-L2715
I have got to say that is one tricky case, and I'm not sure whether it should be counted as an issue and be fixed cuz http.Transport.ResponseHeaderTimeout seems to that it's created for this kind of scenario (returning without waiting for persistConn.readResponse) originally (or intentionally) and the data race here is expected. I'm going to need more opinions from @neild and @bcmills.

I experimented with transport.go and had a change similar to this one - waiting for readResponse to finish if it is running. It seems to fix the race condition for ReverseProxy.

As I said above, we need to determine whether or not this "issue" should be fixed, if we reckon that this needs a fix and you're interested in making a contribution for it, please let me know and I'd be happy to close my CL and review yours, new contributors are always welcome.
Thanks again for all the effort about this! @mariash

El mar., 16 de enero de 2024 6:33 p. m., Maria Shaldybin <
@.***> escribió:

My understanding the first ReadResponse happens in the same goroutine
https://github.com/golang/go/blob/7e7b16c9723d946031803d46baac91dc1fa80812/src/net/http/transport.go#L1746.
Subsequent ReadResponse calls are happening in the separate goroutine
https://github.com/golang/go/blob/7e7b16c9723d946031803d46baac91dc1fa80812/src/net/http/transport.go#L1798.
Which eventually calls Got1xxResponse
https://github.com/golang/go/blob/7e7b16c9723d946031803d46baac91dc1fa80812/src/net/http/transport.go#L2360.
ReverseProxy configures Got1xxResponse to write to Headers map
https://github.com/golang/go/blob/7e7b16c9723d946031803d46baac91dc1fa80812/src/net/http/httputil/reverseproxy.go#L458C3-L465.
And then original goroutine modifies headers as well
https://github.com/golang/go/blob/7e7b16c9723d946031803d46baac91dc1fa80812/src/net/http/httputil/reverseproxy.go#L472-L491
.
—
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/65123#issuecomment-1894735376, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BEXBXBNCQD4TN2BUQQKOAKDYO4L5DAVCNFSM6AAAAABB5PZE6CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJUG4ZTKMZXGY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Thanks for all the nice analysis!
I think this is ultimately a fairly straightforward ReverseProxy bug. (Although replicating it is certainly not straightforward!)  ReverseProxy uses a httptrace.ClientTrace.Got1xxResponse hook to process 1xx responses. ClientTrace hooks are documented as not being synchronized with RoundTrip; they can execute in a separate goroutine and may be called after RoundTrip has returned. ReverseProxy doesn't account for that possibility.
https://go.dev/cl/567216 adds some synchronization to ReverseProxy to handle hooks executing after the request has completed. (Which should only be possible in the case of a request failing, for one reason or another.)

https://go.dev/cl/567216 adds some synchronization to ReverseProxy to handle hooks executing after the request has completed. (Which should only be possible in the case of a request failing, for one reason or another.)

I am wondering whether lock should also cover p.getErrorHandler() below:
https://github.com/golang/go/blob/a46ecdca36b2359e7496c6d694703a9a9706d760/src/net/http/httputil/reverseproxy.go#L481-L488
defaultErrorHandler writes 502 status
https://github.com/golang/go/blob/a46ecdca36b2359e7496c6d694703a9a9706d760/src/net/http/httputil/reverseproxy.go#L306-L316
which should fail if Got1xxResponse hook managed to run rw.WriteHeader(code):
https://github.com/golang/go/blob/a46ecdca36b2359e7496c6d694703a9a9706d760/src/net/http/httputil/reverseproxy.go#L463-L472

@neild thank you for your fix. We added similar workaround in our code so now we can remove it.

@AlexanderYastrebov

I am wondering whether lock should also cover p.getErrorHandler() below:

I don't think so, but perhaps I'm missing something?
ResponseWriter allows writing any number of 1xx statuses followed by at most one 2xx-5xx status, so it's fine if the Got1xxResponse hook has called WriteHeader prior to the error handler executing. The mutex and roundTripDone guard prevent a 1xx header from being written concurrently with an error.


Allow Creation of Uncharged Trident From Trident of The Seas (Full)

Description:
Added a creatable to craft the uncharged trident of the seas.  This is to fix the scenario where a kraken boss drops the full trident, but the toxic trident requires and uncharged trident to be made.
Changes:
Added a creatable item instance.
Other checks:

[ ] I have tested all my changes thoroughly.


AuthZ Namespace

Perhaps I do not see "the big picture" or my understanding of the naming is not that good, but looking into ASP.NET and especially Logging and DependencyInjection makes me assume that features, which are not "Web-only" get a namespace like Microsoft.Framework.Logging.
Now I am wondering about Microsoft.AspNet.Security.Authorization: since I'd assume that authorization is something which is probably used throughout multiple application layers, I would expect that in Microsoft.Framework.Security.AuthZ or something similar.
Am I missing something? Or are we supposed to stick to PrincipalPermissions in non-web layers?

The authorization types are indeed intended for ASP.NET scenarios only.


PapyrusAlamofire not working

Macro generated API struct tries to access Papyrus.Provider, but if we use PapyrusAlamofire, then we should access PapyrusAlamofire.Provider.
So, i just get:

Generated macro:

Thanks for the report @F0x1d 🙏  - fixed in v0.6.3