Database configuration could be improved and better documented

I am far from being an expert in databases or their configuration. The following observations should be taken as being meant to be constructive. I also appreciate that database pooling is almost exclusively a consideration for maintainers of DSpaces receiving high traffic.
DSpace supports two different database types, Postgres and Oracle.
Postgres is implicitly the recommended choice, it's configured as default settings in local.cfg.EXAMPLE.
Lines 97-108 provide three different parameters: db.maxconnections, db.maxwait and db.maxidle that are passed directly to the DBCP2 DataSource bean instantiated by Hibernate when a jdbc/dspace JNDI connection is not found.
db.maxwait
DSpace config : "Maximum time to wait before giving up if all connections in pool are busy (milliseconds)"
DBCP docs: "The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely."
This begs the question, what happens to the request that doesn't get a connection (what does giving up mean to DSpace?). If DBCP is to be taken seriously then an exception (SQLException?) is thrown. DBCP default is -1, unlimited whereas DSpace default is 5000.
There is a number of additional parameters that can be supplied to DBCP2 that should mitigate against databases running out of connections because of idling connections, I am especially curious about maxConnLifetimeMillis, an absolute limit to the length of a connection and timeBetweenEvictionRunsMillis which, if I understand correctly, runs a dedicated idle object evictor but there's also: validationQuery, removeAbandonedOnMaintenance, removeAbandonedOnBorrow. Is there any reason why these parameters should not be settable in the DSpace config?
The DBCP2 version being shipped with DSpace 6 is 2.1.1 from 2015 From version 2.5.0 it requires Java 8 (JDBC 4.2). Current version is 2.8.0.
And we have not even begun to discuss the pros and cons of using DBCP versus the Tomcat JDBC Connection Pool.
As a side note
The documentation for installation states that v. 9.4+ is needed for pgcrypto . In my opinion the Installation documentation should make more decisions for the reader. There should be a recommended stack of software for DSpace which IMO should be:
Postgres 9.5 at least (9.4 is not supported anymore)
Apache Tomcat 8, 8.5 or 9. (There are so many caveats for different issues with 7 for instance)
If a decision is made to have a recommended stack behind DSpace then that would simplify documentation greatly. Just a thought

I may have more to say later, but one thing caught my attention:
On Fri, Nov 27, 2020 at 04:04:12PM -0800, Hrafn Malmquist wrote:
[snip]

As a side note
The documentation for installation states that v. 9.4+ is needed for pgcrypto . In my opinion the Installation documentation should make more decisions for the reader. There should be a recommended stack of software for DSpace which IMO should be:
Postgres 9.5 at least (9.4 is not supported anymore)
Apache Tomcat 8, 8.5 or 9. (There are so many caveats for different issues with 7 for instance)

Tomcat 8+ makes the "overlay" method of local modification unreliable.
It may not work initially, or it may work initially and then stop
working after 'ant update' -- possibly after an unpredictable number
of 'ant update's.  It may start working again, seemingly at random,
after more updates.
Up through version 7, Tomcat sorts a directory by name when building a
classpath.  This behavior is not in the Servlet specification, and was
removed in Tomcat 8.  In Tomcat 8+, the classpath is constructed in
whatever order directory entries are returned by the filesystem.
Directory order is very difficult to predict or control, in some
filesystem implementations.  (We normally don't see this because 'ls'
and the shell sort entries by default.)
The "overlay" method relies on having 'additions-VERSION.jar' precede
dspace-*.jar in the classpath.  In Tomcat 8+ this condition is not
guaranteed, and the order can change whenever the directory is
updated.
We need to improve or retire the "overlay" method before recommending
Tomcat 8+.  This is a matter of some urgency:  the Tomcat 7.x EOL date
is 31-March-2021.
--
Mark H. Wood
Lead Technology Analyst
University Library
Indiana University - Purdue University Indianapolis
755 W. Michigan Street
Indianapolis, IN 46202
317-274-0749
www.ulib.iupui.edu

@mwoodiupui : The overlay issues with Tomcat 8+ and the "additions" module were already solved in https://jira.lyrasis.org/browse/DS-2437
@J4bbi : I'm not sure how to "resolve" this ticket as it seems more like a discussion.  I will note though that we tend to note the minimal requirements in our installation documentation.  That said, I'm perfectly OK with us saying something like "Postgres 9.4 or above (recommended v 9.5)" (as a simple example).  All these versions have been updated in the DSpace 7 docs, but as you point out have not received updates in the DSpace 6 docs since the 6.0 release.
In any case, flagging this simply as "needs discussion".  I'd recommend talking with the 6.4 release team about doc updates to make as part of the 6.4 release.

To be clear, I am part of the 6.4 release team (this is Hrafn Malmquist ;), and I have been updating the DSpace 6 docs.
To give some context, we run DSpaces with Atmire's IRUS patch applied, about a week ago a couple of production servers became unreachable because of the maximum number of idle connections had been reached. In this case it we think the cause was a combination of network issues, very slow network, and the Atmire code not being resilient enough to handle such circumstances (see here). This led me to look pretty closely at how DSpace uses database pooling.
I was helped in part by @alanorth, who was experimenting with configuration because of the same problem three years ago (see here)
So, because database connection pooling is a context specific configuration, I am guessing there are quite simply, no one size fits all answers to the questions I have. I could put forward a PR to change configuration possibilities, I am already experimenting with that, but I thought it would be better to discuss first (I forgot to create a JIRA ticket, suppose it doesn't matter?)
I'll list here clearly my questions:

Is providing DSpace with a preconfigured pool via JNDI seen as the better or more efficient way to set up a database connection?

DSpace looks for the jndi/dspace preconfigured connection by default, this can not be switched off. DSpace will  "fall back to creating its own pool" if it doesn't find it.
As @mwoodiupui and @alanorth have pointed out in the Advanced Installation#External Database Connection Pool part of the documentation, using a JNDI pool brings much more granular control of parameters per webapp.
Using the DSpace configuration instantiated bean, each webapp and each CLI instance uses the same parameters.
Then the number of maxconnections is in fact:
total maximum connections = (db.maxconnection * [number of webapps) + (db.maxconnection * [number of CLI commands running)
This shouldn't then exceed the max_connections in the Postgres Configuration. ?
There's clearly nothing wrong with skipping JNDI configured connections but my own experience when browsing through the Installation manual months ago was that setting it up was considered an unnecessary option.
But because to me at least, it is unclear whether all possible instances of DSpace webapps and CLI instances could result in an aggregation of connections exceeding maxconnections or max idle connections, for instance if a couple of cron jobs run and overlap and there is usage of several webapps at the same time....

Why are only these three connection pooling settings configurable ?

Apache Commons DBCP provides several other configurable parameters.

Parameter
Configurable in DSpace
Default
Description

initialSize
N
0
The initial number of connections that are created when the pool is started.Since: 1.2

maxTotal
Y
8
The maximum number of active connections that can be allocated from this pool at the same time, or negative for no limit.

maxIdle
Y
8
The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.

minIdle
N
0
The minimum number of connections that can remain idle in the pool, without extra ones being created, or zero to create none.

maxWaitMillis
Y
indefinitely
The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.

maxConnLifetimeMillis
N
-1
The maximum lifetime in milliseconds of a connection. After this time is exceeded the connection will fail the next activation, passivation or validation test. A value of zero or less means the connection has an infinite lifetime.

softMinEvictableIdleTimeMillis
N
-1
The minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle connection evictor, with the extra condition that at least "minIdle" connections remain in the pool. When minEvictableIdleTimeMillis is set to a positive value, minEvictableIdleTimeMillis is examined first by the idle connection evictor - i.e. when idle connections are visited by the evictor, idle time is first compared against minEvictableIdleTimeMillis (without considering the number of idle connections in the pool) and then against softMinEvictableIdleTimeMillis, including the minIdle constraint.

removeAbandonedOnMaintenance removeAbandonedOnBorrow
N
false
Flags to remove abandoned connections if they exceed the removeAbandonedTimout.A connection is considered abandoned and eligible for removal if it has not been used for longer than removeAbandonedTimeout.Creating a Statement, PreparedStatement or CallableStatement or using one of these to execute a query (using one of the execute methods) resets the lastUsed property of the parent connection.Setting one or both of these to true can recover db connections from poorly written applications which fail to close connections.Setting removeAbandonedOnMaintenance to true removes abandoned connections on the maintenance cycle (when eviction ends). This property has no effect unless maintenance is enabled by setting timeBetweenEvictionRunsMillis to a positive value.If removeAbandonedOnBorrow is true, abandoned connections are removed each time a connection is borrowed from the pool, with the additional requirements thatgetNumActive() > getMaxTotal() - 3; andgetNumIdle() < 2

removeAbandonedTimeout  N

300
Timeout in seconds before an abandoned connection can be removed.

I think more, possibly all configurable parameters should be configurable via DSpace. Why not?
First when I came across this issue with our production servers, I thought the three settings in the DSpace configuration were all that mattered.

How have the defaults for the database connection pooling parameters been chosen?
maxWaitMillis aka db.maxwait is set too 5000 by DSpace by default. Why was this number chosen? Default value is indefinite!! A quick Google for how others configure this shows 10000! Is a relatively low setting of this property not likely to impact availability greatly?

The final note about the documentation was meant as a side note. I became a bit frustrated because there are different issues for different configurations.

@J4bbi : Thanks for clarifying the questions.  I still would flag this a needs discussion, simply because I don't think any of your (very good, well thought out) questions have clear answers.  I'd also look to you & others who maintain DSpace sites on a daily basis for your expertise/recommendations here, as it sounds like our docs have become "dated" in this area.
That said, here's my immediate response to your questions:

Is providing DSpace with a preconfigured pool via JNDI seen as the better or more efficient way to set up a database connection?

My response to this sort of question is that it's hard to have a "one size fits all approach here".  Generally speaking, we try to have DSpace "easy" (or semi-easy) to install & get started with.  I suspect that's why JNDI is not documented as "the best way" is simply because it's an additional step, and small sites (which are still the vast majority of DSpace installs) may not really need it, as they don't have "significant user activity" to warrant it (so default pooling is "good enough").
However, if many other sites have found JNDI to be a better approach (and that's a question I'd ask to anyone finding this ticket), then maybe we should (1) document it more clearly, and (2) make it clear that many/most larger sites should be using JNDI.  So, I don't have the answer here, but it sounds like this needs feedback to make a decision.

Why are only these three connection pooling settings configurable ?

I suspect this is literally just because we didn't have a "need" for other settings at the time.  Many of these configurations were added 5+ years ago (maybe even much longer).  I'm not against adding more if it makes sense to do so (again, I'd look to everyone reading this ticket for advice here).

How have the defaults for the database connection pooling parameters been chosen?

Again, I suspect this is just a decision from long ago that needs re-analysis & re-thinking.  I don't know why those defaults were selected, but, based on you notes it sounds like we should change the current defaults to better align with "best practices" out on the web.
Thanks again @J4bbi for starting the discussion here.  It may still be useful to bring this up to the 6.4 team internally to get additional advice on how to update the docs.  Honestly, your ideas/questions make a lot of sense to me.  However, since I no longer manage/maintain DSpace sites myself, I cannot speak from any experience on what "works best"...therefore, I'd look to others to provide advice based on their experiences.


chore: print correct logs for failed PipelineRun

Signed-off-by: Zbynek Roubalik<EMAIL_ADDRESS>
Changes
If Tekton Task consists of multiple Steps and there is a failure in one of the steps, the ExitCode on this step Step is set to number != 0.  ExitCode == 1 is set on the last failed Step.
So if there are for example 3 steps and the 2nd step fails, this causes failure in the 3rd step as well. In this case the ExitCodes are set this way:
step1: ExitCode: 0
step2: ExitCode: 145 (and maybe random? number != 0)
step3: ExitCode: 1

The previous implementation printed logs for step3, but we are more interested in the step2 logs.  This PR fixes this problem.

/lgtm
/hold for CI

/unhold


mantainer: add santiagoalvarez

Motivation for this change
On my quest to get pmemkv build I will have to introduce a few new packages related to the pmdk family of projects
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

Notify maintainers
cc @

just a personal preference, but please attempt to put it in it's alphabetical order :)


PPF-246: handles PDF form with pages without elements

Codecov Report

Merging #247 (35071b9) into master (b368420) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master      #247   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           18        18
  Lines          857       858    +1
=========================================
+ Hits           857       858    +1

Impacted Files
Coverage Δ

PyPDFForm/__init__.py
100.00% <100.00%> (ø)

PyPDFForm/core/template.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


update core-arm dependency in client sdks

I previously assumed that we are not shipping core-arm as there were no changes made there, but looks like we have to release an update as the underlying core-http got updated


Add Manyverse

Adds Manyverse

why one pr for each icon?

I made them all at separate times
If the maintainers want to merge some but not all, multiple PRs will allow the maintainers to individually review each icon instead of having to make an all-or-none decision


Multiple classes

Are multiple classes supported? e.g.
/* input.css */
.class,
[type="text"],
[class*="lorem-1 lorem-2"],
[id^="myID"] {
    color: red;
}

/* Output example */
.class,
[type="text"],
[class*="test-lorem-1, test-lorem-2"],
[id^="test-myID"] {
    color: red;
}

@dominicjameskelly hi, not yet, but soon will be. Thanks for the feedback.

Excellent, thanks!

@dominicjameskelly Enjoy :)

Thanks so much! I'll give it a go :)

Trying to grab this from npm:
npm update postcss-attribute-selector-prefix --save-dev
But it's fetching<EMAIL_ADDRESS>which doesn't seem to include the changes in GIT?

Ignore, got it pulled in fine now.

👍

Thanks again!


Fix react-router active (context)

https://twitter.com/dan_abramov/status/579915473632010240

Have you looked at the React 0.13 branch for react-resolver? Seems to go away from a this.context.resolver and instead simply don't render async components on the server.

Yes. I decided not to use PureComponent where isn't required (simple list of app links) and for long lists, replace active state with custom logic.


Uncommented tables with links.

Docs Build status updates of commit 8beb53f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/bots/bot-basics.md
:white_check_mark:Succeeded

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

Docs Build status updates of commit 935df78:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/bots/bot-basics.md
:white_check_mark:Succeeded

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


High GC rate and slow processing during altair blocks sync

Machine:
Intel Core i5-11400
32 GB DDR4 3200mhz RAM
2TB WD Black SN850 M.2 2280 PCIe Gen4 NVMe SSD
Specs:

OS: Ubuntu 20.04.3
Version: 0.29.3
Branch: master/+24
Commit hash: 2c9ebf74

Tested on Prater: After starting Altair sync roughly 1900hrs, notice the changes in above screenshots for GC. Slower processing of post-Altair blocks. Sync completes around 0000hrs.
Screenshots

Fixed with https://github.com/ChainSafe/lodestar/pull/3760 :tada:


Fix bug: handle case switching between different trade count

Coverage decreased (-0.02%) to 29.048% when pulling a9ea2b98b1023840925fc355367da4a86e6da105 on qingweibinary:qingwei/fix_diff_asset into e25ad2ac2a088ddb31d160db124e806ed134e98f on binary-com:master.

Coverage decreased (-0.02%) to 29.048% when pulling a9ea2b98b1023840925fc355367da4a86e6da105 on qingweibinary:qingwei/fix_diff_asset into e25ad2ac2a088ddb31d160db124e806ed134e98f on binary-com:master.


ExtAuthz: Client cert not available to the external Authz service

Title: ExtAuthz: Client cert not available to the external Authz service
Description:
Our usecase is mentioned here: https://github.com/envoyproxy/envoy/issues/20533 and I was exploring if I can use an external gRPC service that can get an ext authz request from envoy with the client cert and extract the CN to make a decision of proxying or not.
I tried to follow this guide: https://medium.com/google-cloud/envoy-external-authorization-server-envoy-ext-authz-helloworld-82eedc7f8122
And my config is below:
admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      address: <IP_ADDRESS>
      protocol: TCP
      port_value: 9901
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: <IP_ADDRESS>
        protocol: TCP
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          '@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: http
              domains:
              - '*'
              routes:
              - match:
                  connect_matcher:
                    {}
                route:
                  cluster: dynamic_forward_proxy_cluster
                  upgrade_configs:
                  - upgrade_type: CONNECT
                typed_per_filter_config:
                  envoy.filters.http.dynamic_forward_proxy:
                    '@type': type.googleapis.com/envoy.extensions.filters.http.dynamic_forward_proxy.v3.PerRouteConfig
          http_filters:
          - name: envoy.filters.http.ext_authz
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz
              grpc_service:
                envoy_grpc:
                  cluster_name: ext-authz
                # Default is 200ms; override if your server needs e.g. warmup time.
                timeout: 0.5s
              include_peer_certificate: true
              transport_api_version: V3
          - name: envoy.filters.http.dynamic_forward_proxy
            typed_config:
              '@type': type.googleapis.com/envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig
              dns_cache_config:
                name: dynamic_forward_proxy_cache_config
                dns_lookup_family: V4_ONLY
          - name: envoy.filters.http.router
  clusters:
  - name: ext-authz
    type: static
    typed_extension_protocol_options:
      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
        explicit_http_config:
          http2_protocol_options: {}
    load_assignment:
      cluster_name: ext-authz
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 50051
  - name: dynamic_forward_proxy_cluster
    connect_timeout: 1s
    lb_policy: CLUSTER_PROVIDED
    cluster_type:
      name: envoy.clusters.dynamic_forward_proxy
      typed_config:
        '@type': type.googleapis.com/envoy.extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig
        dns_cache_config:
          name: dynamic_forward_proxy_cache_config
          dns_lookup_family: V4_ONLY
  - name: dynamic_forward_proxy_cluster_tls
    connect_timeout: 1s
    lb_policy: CLUSTER_PROVIDED
    cluster_type:
      name: envoy.clusters.dynamic_forward_proxy
      typed_config:
        '@type': type.googleapis.com/envoy.extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig
        dns_cache_config:
          name: dynamic_forward_proxy_cache_config
          dns_lookup_family: V4_ONLY

However, the client cert (peer certificate) is not being passed to my Auth server.
My sample requests:
curl https://www.google.com --proxy http://<IP_ADDRESS>:10000 --cacert cert.pem
I know here is where the cert should be available: https://github.com/envoyproxy/go-control-plane/blob/main/envoy/service/auth/v3/attribute_context.pb.go#L170 but it is null.
Can anyone please help!
[optional Relevant Links:]

Any extra documentation required to understand the issue.

@pradeepcrao this seems to be in an area you worked on, thoughts?
cc @mattklein123

Hey @pradeepcrao @mattklein123 @adisuissa, Did you guys get a chance to look at this?

Hey guys bumping this again as I am urgent need of this feature to correctly work! Thank you!

@batistado
There are several factors to make it work here:

The CheckRequestUtils::setAttrContextPeer asks for urlEncodedPemEncodedPeerCertificate() from the underlying (downstream) connection, and it needs to be a TLS connection. Hence the downstream connection needs to be TLS'd and ask for a valid client cert pair.
Given the point above, you need to send the client cert pair, optionally with the ca-cert too.

To suffice the first condition above, you need to add something (hint: DownstreamTlsContext)  like the following to your listener filter chain:
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
          require_client_certificate: true
          common_tls_context:
            validation_context:
              trusted_ca:
                filename: path/to/ca.crt

            tls_certificates:
            - certificate_chain:
                filename: path/to/server.crt
              private_key:
                filename: path/to/server.key

And for the second one, your client needs to send the cert pair to the proxy (not to the upstream). Using curl, it is something like:
curl https://www.google.com --proxy https://test.local:10000 --proxy-cert path/to/client.crt --proxy-key path/to/client.key --proxy-cacert path/to/ca.crt -v

Note: you can map <IP_ADDRESS> to test.local in your /etc/hosts.
Good luck!

This worked like a charm. Thank you so much!!

+1 to @dio's explanation, excellent to understand how passing the peer certificate as an attribute of the request to ext-authz works.
I wonder whether there is a way to avoid validating the client certificate in the downstream TLS context, and still get the peer certificate passed to the external authorization service. Say, e.g., the ext-authz service expects to validate the peer certificate by its own means regardless. I see a redundancy with the same also done at Envoy.
If I understand correctly, without downstream common_tls_context.validation_context, ext-authz's principal won't refer to the leaf subject and certificate will be completely absent.
In other words, is there a config for just normal server TLS (not mTLS) and still get the client cert (non-validated by Envoy) passed to the ext-auth (if sent)?
I'm looking for something like the following:
  listeners:
  - name: listener_0
    address: {...}
    filter_chains:
    - transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
            require_client_certificate: false
            common_tls_context:
              # no validation_context here
              tls_certificates:
              - certificate_chain:
                  filename: path/to/server.crt
                private_key:
                  filename: path/to/server.key
      filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          '@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          route_config: {...}
          http_filters:
          - name: envoy.filters.http.ext_authz
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz
              transport_api_version: V3
              grpc_service:
                envoy_grpc:
                  cluster_name: ext-authz
              include_peer_certificate: true # still get the peer certificate passed to the ext-authz service

I would expect certificate to be available, containing the PEM and URL encoded public client cert, and I wouldn't care about principal.


ASP.NET Core Web App | .NET Framework | ASP.NET Core 2.1 | Web Application template issue

When I create a new project in VS with this configuration:

ASP.NET Core Web App
.NET Framework
ASP.NET Core 2.1
Web Application

The package versions cause a NuGet restore error:
Error	NU1605	Detected package downgrade: Microsoft.AspNetCore.Hosting from 2.1.2 to 2.1.1. Reference the package directly from the project to select a different version.
 WebApplication208 -> Microsoft.AspNetCore 2.1.4 -> Microsoft.AspNetCore.Server.Kestrel 2.1.3 -> Microsoft.AspNetCore.Hosting (>= 2.1.2)
 WebApplication208 -> Microsoft.AspNetCore 2.1.4 -> Microsoft.AspNetCore.Hosting (>= 2.1.1)

Here is a .csproj file from the project with this issue:
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    <UserSecretsId>aspnet-WebApplication208-B1DBF9F7-91DD-4C54-9477-614FBA26C82C</UserSecretsId>
    <DebugType>full</DebugType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.4" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.1.1"/>
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.4" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.5" PrivateAssets="All" />
  </ItemGroup>

</Project>

I cleared all my NuGet caches just before creating this project and encountering the issue, to avoid a false positive.
Note: I receive the same error whether selecting No Auth or Individual Auth.

@natemcmaster - any idea?

Looks like the same issue we discussed in https://github.com/aspnet/Templating/issues/753. I haven't been able to reproduce this on my own.

@natemcmaster - I agree, it does seem similar, but I am consistently reproducing this error.

Just tried it on my laptop. No repro  ¯\_(ツ)_/¯. I wonder if there is something running on your box that messes with the NuGet cache.

@seancpeters, did you try to clean the NuGet cache a is suggested in the referenced issue?
@natemcmaster, you can sync up with @seancpeters and see what's going on his machine.

Yes, I cleared my nuget cache just before repro'ing. I have just tried again:

Clear all nuget cachge
Create new project with the same configuration as mentioned above.
Same error occurs.

But, after messing around with my nuget sources, I have found a configuration where the error does not occur.


ARROW-9353: [Python][CI] Disable known failures in dask integration tests

Also removed the previously disabled tests (ARROW-5730 / from https://github.com/apache/arrow/pull/4718), because in the meantime those should be fixed.

@github-actions crossbow submit test-conda-python-3.7-dask-latest test-conda-python-3.8-dask-master

So both are now only failing for the test_illegal_column_name test (which I didn't skip yet as I don't understand why it is failing)

@github-actions crossbow submit test-conda-python-3.7-dask-latest test-conda-python-3.8-dask-master


Make a rot13 example

I'll do this when string in lasm will implemented

create issue with requirement for string implementation?


Diag considered harmful

While writing linalg operations I face the question of how to handle the various numpy functions concerning matrix/tensor diagonals. The three in question are:

diagonal(data, offset, axis1, axis2), which extracts the offset'th diagonal from the matrix slice of data specified by the axis arguments.

diagflat(data, k), which flattens data and places it in the k'th diagonal of a new matrix of zeros.

diag(data, k), which acts like diagonal if data is a matrix and like diagflat if it is a vector.

In my opinion diag is entirely redundant and too specialized to a matrix-vector setting for our purposes. More importantly, the fact that it does two completely different things depending on the specific shape of data is a source of bugs, which I've run into in practice. It's hard to imagine a scenario where a user would actually want a specific line to oscillate between the diagonal and diagflat behaviour depending on input shape, but quite easy to imagine one where a user forgot they had flattened their tensor and ended up doing the opposite thing they hoped for.
I therefore propose we support only the former two functions. It's true that this breaks from NumPy somewhat, but NumPy itself only includes this function to maintain equivalence with Matlab. How long will we keep paying for MathWorks' sins?
@mganahl @Thenerdstation @gevenbly

SGTM, diagonal and diagflat are sufficient.

@alewis I understand your reasoning entirely, although I personally quite like diag as is convenient for operations on diagonal matrices. For instance, if I have a diagonal matrix S of singular values then I will often have to construct the inverse:
S_inv = diag(1 / diag(S))

Having a single function diag that both extracts and then recasts the diagonal elements is easier to work with (and there are several other use cases for operations on diagonal matrices). However, it is not such a big deal to separate into two distinct functions, so I am in favor that you proceed with your proposal.


Repository javadoc

Codecov Report

Merging #283 into support-cosmosdb-async-sdk will increase coverage by 1.27%.
The diff coverage is n/a.

@@                      Coverage Diff                       @@
##           support-cosmosdb-async-sdk     #283      +/-   ##
==============================================================
+ Coverage                       84.21%   85.49%   +1.27%
==============================================================
  Files                              41       41
  Lines                            1128     1351     +223
  Branches                          132      156      +24
==============================================================
+ Hits                              950     1155     +205
- Misses                            113      125      +12
- Partials                           65       71       +6

Impacted Files
Coverage Δ

...repository/support/SimpleDocumentDbRepository.java
88.17% <0%> (-5.04%)
:arrow_down:

.../spring/data/cosmosdb/core/DocumentDbTemplate.java
95.79% <0%> (+1.09%)
:arrow_up:

Continue to review full report at Codecov.

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


Create initial microservice skeleton code

As a Developer
I need a microservice skeleton code
So that all the members on the team can have a standard starter code to start adding features
Details and Assumptions

The code will be in Python and Flask.
It should have code for CRUD operations.
It should have all the software dependencies in the requirements.txt file.

Acceptance Criteria
Given the initial microservice skeleton code GitHub repository
When I issue a `git clone` on the repository
Then I should get a copy of a Flask application with the initial microservice skeleton code
When Docker is running on the system and I run `code .` inside the project folder
Then the project should install all the software prerequisites for the project and start the container with the development environment setup
When I run `flask run -h <IP_ADDRESS> -p 8000` on the `bash` terminal
Then it should run the service on `http://localhost:8000/`

Not needed as we have project template