text:
[Bug]: /_redirects internal server error

Summary
When hitting the url /_redirects it get a internal server error
Steps to reproduce

move your file _redirects from the root folder to the public folder as instructed
hit the /_redirects url
internal server error

A link to a reproduction repository
No response
Plugin version
^4.2.7
More information about your build

[ ] I am building using the CLI
[X] I am building using file-based configuration (netlify.toml)

What OS are you using?
Mac OS
Your netlify.toml file

`netlify.toml`
[build]
    command = "npm run build"
    publish = ".next"

[[plugins]]
package = "@netlify/plugin-sitemap"
# https://github.com/netlify-labs/netlify-plugin-sitemap
    [plugins.inputs]
    prettyURLs = true
    trailingSlash = false
    exclude = [
        '**/404*',
        '**/thanks*',
        '**/legalNotice*',
        '**/nda*',
        '**/privacyPolicy*',
        '**/quiz/**'
    ]

# Disabled because it took forever and never finished
# [[plugins]]
# # https://www.npmjs.com/package/netlify-plugin-checklinks
# package = "netlify-plugin-checklinks"

#     [plugins.inputs]
#     # Recurse through all the links and asset references on your page, starting
#     # at the entrypoints
#     recursive = true

#     # Checklinks outputs TAP (https://testanything.org/tap-version-13-specification.html)
#     # by default. Enabling pretty mode makes the output easier on the eyes.
#     pretty = true

#     # Report on all broken links to external pages.
#     # Enabling this will make your tests more brittle, since you can't control
#     # external pages.
#     checkExternal = true

[[plugins]]
# https://github.com/Tom-Bonnike/netlify-plugin-inline-source#readme
package = "netlify-plugin-inline-source"

    # All inputs are optional, so you can omit this section.
    # Defaults are shown below.
    # You can also refer to the `inline-source` documentation: https://github.com/popeindustries/inline-source#usage.
    [plugins.inputs]
    # Attribute used to parse sources. All tags will be parsed if set to `false`.
    attribute = "inline"

    # Enable/disable compression of inlined content.
    compress = true

    # Maintain leading whitespace when `compress` is `false`.
    pretty = false

    # Disable inlining based on tag, type, and/or format.
    ignore = []

    # Convert `<img inline src="*.svg" />` to `<img>` and not `<svg>`.
    svgAsImage = false

[[plugins]]
# https://github.com/jonahsnider/netlify-cache-nextjs#readme
package = "netlify-plugin-cache-nextjs"

[[plugins]]
# https://github.com/philhawksworth/netlify-plugin-minify-html#readme
package = "netlify-plugin-minify-html"

    # Specify which deploy contexts we'll minify HTML in.
    # Supports any Deploy Contexts available in Netlify.
    # https://docs.netlify.com/site-deploys/overview/#deploy-contexts
    [plugins.inputs]
    contexts = [
        'production',
        'branch-deploy',
        'deploy-preview'
    ]

    # Optionally, override the default options for the minification
    # https://github.com/kangax/html-minifier#options-quick-reference
    [plugins.inputs.minifierOptions]
    removeComments = true
    collapseInlineTagWhitespace = true
    collapseWhitespace = true
    minifyCSS = true
    minifyJS = true
    sortAttributes = true
    sortClassName = true

Your public/_redirects file

`_redirects`
/root / 301
/home / 301

/blog a=:a /blog/:a 301
/blog /publicPresence

Your next.config.js file

`next.config.js`
const withPWA = require('next-pwa')

module.exports = withPWA({
    target: "serverless",
    pwa: {
        dest: 'public',
        publicExcludes: [

        ],
        cacheOnFrontEndNav: true,
        skipWaiting: false,
        register: false,
    }
})

Builds logs (or link to your logs)

Build logs
4:13:12 PM: Build ready to start
4:13:14 PM: build-image version: 6ebfb829398e07eb99ad5455777162ff19838822 (xenial)
4:13:14 PM: build-image tag: v3.10.5
4:13:14 PM: buildbot version: b0c97e610018064036a967f277f8af9d873774d1
4:13:14 PM: Fetching cached dependencies
4:13:15 PM: Starting to download cache of 191.2MB
4:13:17 PM: Finished downloading cache in 2.450560082s
4:13:17 PM: Starting to extract cache
4:13:22 PM: Finished extracting cache in 5.017944689s
4:13:22 PM: Finished fetching cache in 7.487976531s
4:13:22 PM: Starting to prepare the repo for build
4:13:22 PM: Preparing Git Reference pull/6/head
4:13:23 PM: Parsing package.json dependencies
4:13:24 PM: Different publish path detected, going to use the one specified in the Netlify configuration file: '.next' versus 'out' in the Netlify UI
4:13:24 PM: Starting build script
4:13:24 PM: Installing dependencies
4:13:24 PM: Python version set to 2.7
4:13:25 PM: Started restoring cached node version
4:13:26 PM: Finished restoring cached node version
4:13:27 PM: v12.18.0 is already installed.
4:13:27 PM: Now using node v12.18.0 (npm v6.14.4)
4:13:27 PM: Started restoring cached build plugins
4:13:27 PM: Finished restoring cached build plugins
4:13:28 PM: Attempting ruby version 2.7.2, read from environment
4:13:29 PM: Using ruby version 2.7.2
4:13:29 PM: Using PHP version 5.6
4:13:29 PM: Started restoring cached node modules
4:13:29 PM: Finished restoring cached node modules
4:13:29 PM: Installing NPM modules using NPM version 6.14.4
4:13:40 PM: npm notice created a lockfile as package-lock.json. You should commit this file.
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-darwin-arm64@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-darwin-arm64):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-darwin-arm64@12.1.0: wanted {"os":"darwin","arch":"arm64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-win32-ia32-msvc@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-win32-ia32-msvc):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-win32-ia32-msvc@12.1.0: wanted {"os":"win32","arch":"ia32"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-win32-arm64-msvc@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-win32-arm64-msvc):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-win32-arm64-msvc@12.1.0: wanted {"os":"win32","arch":"arm64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-win32-x64-msvc@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-win32-x64-msvc):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-win32-x64-msvc@12.1.0: wanted {"os":"win32","arch":"x64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-darwin-x64@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-darwin-x64):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-darwin-x64@12.1.0: wanted {"os":"darwin","arch":"x64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-android-arm64@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-android-arm64):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-android-arm64@12.1.0: wanted {"os":"android","arch":"arm64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-linux-arm64-gnu@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-linux-arm64-gnu):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-linux-arm64-gnu@12.1.0: wanted {"os":"linux","arch":"arm64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-linux-arm64-musl@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-linux-arm64-musl):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-linux-arm64-musl@12.1.0: wanted {"os":"linux","arch":"arm64"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: @next/swc-linux-arm-gnueabihf@12.1.0 (node_modules/@netlify/plugin-nextjs/node_modules/next/node_modules/@next/swc-linux-arm-gnueabihf):
4:13:40 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for @next/swc-linux-arm-gnueabihf@12.1.0: wanted {"os":"linux","arch":"arm"} (current: {"os":"linux","arch":"x64"})
4:13:40 PM: npm WARN @apideck/better-ajv-errors@0.3.3 requires a peer of ajv@>=8 but none is installed. You must install peer dependencies yourself.
4:13:40 PM: npm WARN babel-loader@8.2.3 requires a peer of webpack@>=2 but none is installed. You must install peer dependencies yourself.
4:13:40 PM: npm WARN clean-webpack-plugin@4.0.0 requires a peer of webpack@>=4.0.0 <6.0.0 but none is installed. You must install peer dependencies yourself.
4:13:40 PM: npm WARN terser-webpack-plugin@5.3.1 requires a peer of webpack@^5.1.0 but none is installed. You must install peer dependencies yourself.
4:13:40 PM: npm WARN workbox-webpack-plugin@6.5.1 requires a peer of webpack@^4.4.0 || ^5.9.0 but none is installed. You must install peer dependencies yourself.
4:13:40 PM: audited 1228 packages in 9.621s
4:13:40 PM: 115 packages are looking for funding
4:13:40 PM:   run `npm fund` for details
4:13:40 PM: found 8 vulnerabilities (4 moderate, 4 high)
4:13:40 PM:   run `npm audit fix` to fix them, or `npm audit` for details
4:13:40 PM: NPM modules installed
4:13:41 PM: Started restoring cached go cache
4:13:41 PM: Finished restoring cached go cache
4:13:41 PM: go version go1.14.4 linux/amd64
4:13:41 PM: go version go1.14.4 linux/amd64
4:13:41 PM: Installing missing commands
4:13:41 PM: Verify run directory
4:13:42 PM:
4:13:42 PM: ────────────────────────────────────────────────────────────────
4:13:42 PM:   Netlify Build
4:13:42 PM: ────────────────────────────────────────────────────────────────
4:13:42 PM:
4:13:42 PM: ❯ Version
4:13:42 PM:   @netlify/build 26.4.0
4:13:42 PM:
4:13:42 PM: ❯ Flags
4:13:42 PM:   baseRelDir: true
4:13:42 PM:   buildId: 62277288f960c20007e7253d
4:13:42 PM:   deployId: 62277288f960c20007e7253f
4:13:42 PM:
4:13:42 PM: ❯ Current directory
4:13:42 PM:   /opt/build/repo
4:13:42 PM:
4:13:42 PM: ❯ Config file
4:13:42 PM:   /opt/build/repo/netlify.toml
4:13:42 PM:
4:13:42 PM: ❯ Context
4:13:42 PM:   deploy-preview
4:13:42 PM:
4:13:42 PM: ❯ Loading plugins
4:13:42 PM:    - @netlify/plugin-nextjs@4.2.7 from Netlify app and package.json
4:13:42 PM:    - @netlify/plugin-sitemap@0.8.1 from netlify.toml and package.json
4:13:42 PM:    - netlify-plugin-inline-source@1.0.4 from netlify.toml and package.json
4:13:42 PM:    - netlify-plugin-cache-nextjs@1.6.1 from netlify.toml and package.json
4:13:42 PM:    - netlify-plugin-minify-html@0.3.1 from netlify.toml and package.json
4:13:47 PM:
4:13:47 PM: ────────────────────────────────────────────────────────────────
4:13:47 PM:   1. @netlify/plugin-nextjs (onPreBuild event)
4:13:47 PM: ────────────────────────────────────────────────────────────────
4:13:47 PM:
4:13:49 PM: Next.js cache restored.
4:13:49 PM: Netlify configuration property "build.environment.NEXT_PRIVATE_TARGET" value changed.
4:13:49 PM:
4:13:49 PM: (@netlify/plugin-nextjs onPreBuild completed in 1.7s)
4:13:49 PM:
4:13:49 PM: ────────────────────────────────────────────────────────────────
4:13:49 PM:   2. netlify-plugin-cache-nextjs (onPreBuild event)
4:13:49 PM: ────────────────────────────────────────────────────────────────
4:13:49 PM:
4:13:51 PM: .next/cache exists on disk
4:13:51 PM: Restored the cached .next folder at the location .next/cache
4:13:51 PM:
4:13:51 PM: (netlify-plugin-cache-nextjs onPreBuild completed in 2.2s)
4:13:51 PM:
4:13:51 PM: ────────────────────────────────────────────────────────────────
4:13:51 PM:   3. build.command from netlify.toml
4:13:51 PM: ────────────────────────────────────────────────────────────────
4:13:51 PM:
4:13:51 PM: $ npm run build
4:13:52 PM: > learn-starter@0.1.0 build /opt/build/repo
4:13:52 PM: > next build
4:13:54 PM: info  - Using webpack 4. Reason: custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
4:13:56 PM: info  - Checking validity of types...
4:13:56 PM: info  - Creating an optimized production build...
4:13:56 PM: > [PWA] Compile client (static)
4:13:56 PM: > [PWA] Auto register service worker is disabled, please call following code in componentDidMount callback or useEffect hook
4:13:56 PM: > [PWA]   window.workbox.register()
4:13:56 PM: > [PWA] Service worker: /opt/build/repo/public/sw.js
4:13:56 PM: > [PWA]   url: /sw.js
4:13:56 PM: > [PWA]   scope: /
4:13:57 PM: > [PWA] Compile server
4:14:13 PM: warn  - Compiled with warnings
4:14:13 PM: ./node_modules/next/dist/next-server/server/load-components.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: ./node_modules/next/dist/next-server/server/load-components.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: ./node_modules/next/dist/next-server/server/load-components.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: ./node_modules/next/dist/next-server/server/require.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: ./node_modules/next/dist/next-server/server/require.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: ./node_modules/next/dist/next-server/server/require.js
4:14:13 PM: Critical dependency: the request of a dependency is an expression
4:14:13 PM: info  - Collecting page data...
4:14:17 PM: info  - Generating static pages (0/21)
4:14:19 PM: info  - Generating static pages (5/21)
4:14:20 PM: info  - Generating static pages (10/21)
4:14:20 PM: info  - Generating static pages (15/21)
4:14:21 PM: info  - Generating static pages (21/21)
4:14:21 PM: info  - Finalizing page optimization...
4:14:21 PM: Page                                                       Size     First Load JS
4:14:21 PM: ┌ ○ /                                                      159 B           328 kB
4:14:21 PM: ├   /_app                                                  0 B            68.1 kB
4:14:21 PM: ├ ○ /404                                                   162 B           328 kB
4:14:21 PM: ├ ○ /about                                                 164 B           328 kB
4:14:21 PM: ├ ○ /blog/as-a-cto-how-should-i-spend-my-time              192 B           328 kB
4:14:21 PM: ├ ○ /blog/create-winning-pitch-deck-raise-funds            192 B           328 kB
4:14:21 PM: ├ ○ /blog/emergent-behavior-to-supercharge-your-workplace  200 B           328 kB
4:14:21 PM: ├ ○ /blog/flow-state-enhancing-employee-engagement         194 B           328 kB
4:14:21 PM: ├ ○ /blog/from-idea-to-product-market-fit                  189 B           328 kB
4:14:21 PM: ├ ○ /blog/hacks-healthy-company-culture                    188 B           328 kB
4:14:21 PM: ├ ○ /contact                                               166 B           328 kB
4:14:21 PM: ├ ○ /fund                                                  162 B           328 kB
4:14:21 PM: ├ ○ /legalNotice                                           170 B           328 kB
4:14:21 PM: ├ ○ /nda                                                   162 B           328 kB
4:14:21 PM: ├ ○ /privacyPolicy                                         172 B           328 kB
4:14:21 PM: ├ ● /publicPresence                                        172 B           328 kB
4:14:21 PM: ├ ○ /quiz/from-idea-to-product-market-fit                  190 B           328 kB
4:14:21 PM: ├ ○ /scaleup                                               166 B           328 kB
4:14:21 PM: ├ ○ /startup                                               166 B           328 kB
4:14:21 PM: ├ ○ /thanks                                                165 B           328 kB
4:14:21 PM: └ ○ /tools/tech-skills                                     173 B           328 kB
4:14:21 PM: + First Load JS shared by all                              68.1 kB
4:14:21 PM:   ├ chunks/commons.472a4e.js                               13.6 kB
4:14:21 PM:   ├ chunks/framework.349d81.js                             42.3 kB
4:14:21 PM:   ├ chunks/main.967088.js                                  9.22 kB
4:14:21 PM:   ├ chunks/pages/_app.7816f5.js                            1.08 kB
4:14:21 PM:   ├ chunks/webpack.593d02.js                               1.91 kB
4:14:21 PM:   └ css/5e1766d73cdb68ceb0e2.css                           726 B
4:14:21 PM: λ  (Lambda)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
4:14:21 PM: ○  (Static)  automatically rendered as static HTML (uses no initial props)
4:14:21 PM: ●  (SSG)     automatically generated as static HTML + JSON (uses getStaticProps)
4:14:21 PM:    (ISR)     incremental static regeneration (uses revalidate in getStaticProps)
4:14:21 PM:
4:14:21 PM: (build.command completed in 29.3s)
4:14:21 PM:
4:14:21 PM: ────────────────────────────────────────────────────────────────
4:14:21 PM:   4. @netlify/plugin-nextjs (onBuild event)
4:14:21 PM: ────────────────────────────────────────────────────────────────
4:14:21 PM:
4:14:21 PM: Patching /opt/build/repo/node_modules/next/dist/next-server/server/next-server.js
4:14:21 PM: File was not changed
4:14:21 PM: Moving static page files to serve from CDN...
4:14:21 PM: Moved 20 files
4:14:21 PM: Netlify configuration property "redirects" value changed to [
4:14:21 PM:   { from: '/_next/static/*', to: '/static/:splat', status: 200 },
4:14:21 PM:   {
4:14:21 PM:     from: '/_next/image*',
4:14:21 PM:     query: { url: ':url', w: ':width', q: ':quality' },
4:14:21 PM:     to: '/_ipx/w_:width,q_:quality/:url',
4:14:21 PM:     status: 301
4:14:21 PM:   },
4:14:21 PM:   { from: '/_ipx/*', to: '/.netlify/builders/_ipx', status: 200 },
4:14:21 PM:   { from: '/cache/*', to: '/404.html', status: 404, force: true },
4:14:21 PM:   { from: '/server/*', to: '/404.html', status: 404, force: true },
4:14:21 PM:   { from: '/serverless/*', to: '/404.html', status: 404, force: true },
4:14:21 PM:   { from: '/traces', to: '/404.html', status: 404, force: true },
4:14:21 PM:   {
4:14:21 PM:     from: '/routes-manifest.json',
4:14:21 PM:     to: '/404.html',
4:14:21 PM:     status: 404,
4:14:21 PM:     force: true
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/build-manifest.json',
4:14:21 PM:     to: '/404.html',
4:14:21 PM:     status: 404,
4:14:21 PM:     force: true
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/prerender-manifest.json',
4:14:21 PM:     to: '/404.html',
4:14:21 PM:     status: 404,
4:14:21 PM:     force: true
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/react-loadable-manifest.json',
4:14:21 PM:     to: '/404.html',
4:14:21 PM:     status: 404,
4:14:21 PM:     force: true
4:14:21 PM:   },
4:14:21 PM:   { from: '/BUILD_ID', to: '/404.html', status: 404, force: true },
4:14:21 PM:   {
4:14:21 PM:     from: '/api',
4:14:21 PM:     to: '/.netlify/functions/___netlify-handler',
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/api/*',
4:14:21 PM:     to: '/.netlify/functions/___netlify-handler',
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/_redirects',
4:14:21 PM:     to: '/_redirects',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/robots.txt',
4:14:21 PM:     to: '/robots.txt',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/sw.js',
4:14:21 PM:     to: '/sw.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/workbox-75794ccf.js',
4:14:21 PM:     to: '/workbox-75794ccf.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/pure-lambda-logo-10-bottom.svg',
4:14:21 PM:     to: '/assets/pure-lambda-logo-10-bottom.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/pure-lambda-logo-10-circle.png',
4:14:21 PM:     to: '/assets/pure-lambda-logo-10-circle.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/pure-lambda-logo-10-square.png',
4:14:21 PM:     to: '/assets/pure-lambda-logo-10-square.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/pure-lambda-logo-10-top.svg',
4:14:21 PM:     to: '/assets/pure-lambda-logo-10-top.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/pure-lambda-logo-10.svg',
4:14:21 PM:     to: '/assets/pure-lambda-logo-10.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-114x114.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-114x114.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-120x120.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-120x120.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-144x144.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-144x144.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-152x152.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-152x152.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-57x57.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-57x57.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-60x60.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-60x60.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-72x72.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-72x72.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/apple-touch-icon-76x76.png',
4:14:21 PM:     to: '/favicon/apple-touch-icon-76x76.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/browserconfig.xml',
4:14:21 PM:     to: '/favicon/browserconfig.xml',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/code.txt',
4:14:21 PM:     to: '/favicon/code.txt',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon-128x128.png',
4:14:21 PM:     to: '/favicon/favicon-128x128.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon-16x16.png',
4:14:21 PM:     to: '/favicon/favicon-16x16.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon-196x196.png',
4:14:21 PM:     to: '/favicon/favicon-196x196.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon-32x32.png',
4:14:21 PM:     to: '/favicon/favicon-32x32.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon-96x96.png',
4:14:21 PM:     to: '/favicon/favicon-96x96.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/favicon.ico',
4:14:21 PM:     to: '/favicon/favicon.ico',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/logo-3000x3000.png',
4:14:21 PM:     to: '/favicon/logo-3000x3000.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/manifest.json',
4:14:21 PM:     to: '/favicon/manifest.json',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/mstile-144x144.png',
4:14:21 PM:     to: '/favicon/mstile-144x144.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/mstile-150x150.png',
4:14:21 PM:     to: '/favicon/mstile-150x150.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/mstile-310x150.png',
4:14:21 PM:     to: '/favicon/mstile-310x150.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/mstile-310x310.png',
4:14:21 PM:     to: '/favicon/mstile-310x310.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/favicon/mstile-70x70.png',
4:14:21 PM:     to: '/favicon/mstile-70x70.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/fonts/AlteHaasGroteskBold.ttf',
4:14:21 PM:     to: '/fonts/AlteHaasGroteskBold.ttf',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/rss/atom.xml',
4:14:21 PM:     to: '/rss/atom.xml',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/rss/feed.json',
4:14:21 PM:     to: '/rss/feed.json',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/rss/feed.xml',
4:14:21 PM:     to: '/rss/feed.xml',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/scripts/google.js',
4:14:21 PM:     to: '/scripts/google.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/scripts/linkedin_tracking.js',
4:14:21 PM:     to: '/scripts/linkedin_tracking.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/scripts/loggly.js',
4:14:21 PM:     to: '/scripts/loggly.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/scripts/loggly.tracker-2.2.3.min.js',
4:14:21 PM:     to: '/scripts/loggly.tracker-2.2.3.min.js',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/scripts/loggly.tracker-2.2.3.min.map',
4:14:21 PM:     to: '/scripts/loggly.tracker-2.2.3.min.map',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/degrees/certificat DEVFEST Conakry 2020 Leo Benkel.jpg',
4:14:21 PM:     to: '/assets/degrees/certificat DEVFEST Conakry 2020 Leo Benkel.jpg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/assets/degrees/certificat DEVFEST Conakry 2020 Leo Benkel.webp',
4:14:21 PM:     to: '/assets/degrees/certificat DEVFEST Conakry 2020 Leo Benkel.webp',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/AngelList-original.png',
4:14:21 PM:     to: '/images/icons/AngelList-original.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/AngelList.png',
4:14:21 PM:     to: '/images/icons/AngelList.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/LinkedIn.png',
4:14:21 PM:     to: '/images/icons/LinkedIn.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/Twitter.png',
4:14:21 PM:     to: '/images/icons/Twitter.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/electro-monkeys-logo.png',
4:14:21 PM:     to: '/images/icons/electro-monkeys-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/kintell-logo.png',
4:14:21 PM:     to: '/images/icons/kintell-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/luxembourg-original.png',
4:14:21 PM:     to: '/images/icons/luxembourg-original.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/luxembourg.png',
4:14:21 PM:     to: '/images/icons/luxembourg.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/medium-logo-full.svg',
4:14:21 PM:     to: '/images/icons/medium-logo-full.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/paperjam-logo.svg',
4:14:21 PM:     to: '/images/icons/paperjam-logo.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10-bottom.svg',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10-bottom.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10-circle.png',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10-circle.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10-square copy 4.png',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10-square copy 4.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10-square.png',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10-square.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10-top.svg',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10-top.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo-10.svg',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo-10.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/pure-lambda-logo.png',
4:14:21 PM:     to: '/images/icons/pure-lambda-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/questions.svg',
4:14:21 PM:     to: '/images/icons/questions.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/rd.svg',
4:14:21 PM:     to: '/images/icons/rd.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/silicon-luxembourg-logo.png',
4:14:21 PM:     to: '/images/icons/silicon-luxembourg-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/startup-grind-logo.svg',
4:14:21 PM:     to: '/images/icons/startup-grind-logo.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/team.svg',
4:14:21 PM:     to: '/images/icons/team.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/tech.svg',
4:14:21 PM:     to: '/images/icons/tech.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/icons/youtube-logo.png',
4:14:21 PM:     to: '/images/icons/youtube-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/contact.png',
4:14:21 PM:     to: '/images/img/contact.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/founders_map.png',
4:14:21 PM:     to: '/images/img/founders_map.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/leo.png',
4:14:21 PM:     to: '/images/img/leo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/panorama.png',
4:14:21 PM:     to: '/images/img/panorama.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/rd.png',
4:14:21 PM:     to: '/images/img/rd.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/team.png',
4:14:21 PM:     to: '/images/img/team.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/tech.png',
4:14:21 PM:     to: '/images/img/tech.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/tech_with_bckgrd.png',
4:14:21 PM:     to: '/images/img/tech_with_bckgrd.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/tech_with_bckgrd_zoomed.png',
4:14:21 PM:     to: '/images/img/tech_with_bckgrd_zoomed.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/tech_with_bckgrd_zoomed_comp.png',
4:14:21 PM:     to: '/images/img/tech_with_bckgrd_zoomed_comp.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/img/thanks.png',
4:14:21 PM:     to: '/images/img/thanks.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/500Startups-logo.png',
4:14:21 PM:     to: '/images/logos/500Startups-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/NewChip-logo.png',
4:14:21 PM:     to: '/images/logos/NewChip-logo.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/founder_institute.png',
4:14:21 PM:     to: '/images/logos/founder_institute.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/gbeta_cheyenne.png',
4:14:21 PM:     to: '/images/logos/gbeta_cheyenne.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/gdg_ratoma.svg',
4:14:21 PM:     to: '/images/logos/gdg_ratoma.svg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/loyal_vc.png',
4:14:21 PM:     to: '/images/logos/loyal_vc.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/recube-logo.jpeg',
4:14:21 PM:     to: '/images/logos/recube-logo.jpeg',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   {
4:14:21 PM:     from: '/images/logos/swg.png',
4:14:21 PM:     to: '/images/logos/swg.png',
4:14:21 PM:     conditions: { Cookie: [Array] },
4:14:21 PM:     status: 200
4:14:21 PM:   },
4:14:21 PM:   ... 39 more items
4:14:21 PM: ].
4:14:21 PM:
4:14:21 PM: (@netlify/plugin-nextjs onBuild completed in 244ms)
4:14:21 PM:
4:14:21 PM: ────────────────────────────────────────────────────────────────
4:14:21 PM:   5. Functions bundling
4:14:21 PM: ────────────────────────────────────────────────────────────────
4:14:21 PM:
4:14:21 PM: Packaging Functions from .netlify/functions-internal directory:
4:14:21 PM:  - ___netlify-handler/___netlify-handler.js
4:14:21 PM:  - ___netlify-odb-handler/___netlify-odb-handler.js
4:14:21 PM:  - _ipx/_ipx.js
4:14:21 PM:
4:14:53 PM:
4:14:53 PM: (Functions bundling completed in 31.6s)
4:14:53 PM:
4:14:53 PM: ────────────────────────────────────────────────────────────────
4:14:53 PM:   6. @netlify/plugin-nextjs (onPostBuild event)
4:14:53 PM: ────────────────────────────────────────────────────────────────
4:14:53 PM:
4:14:54 PM: Next.js cache saved.
4:14:54 PM:
4:14:54 PM: (@netlify/plugin-nextjs onPostBuild completed in 923ms)
4:14:54 PM:
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:   7. @netlify/plugin-sitemap (onPostBuild event)
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:
4:14:54 PM: Creating sitemap from files...
4:14:54 PM: Sitemap Built! sitemap.xml
4:14:54 PM:
4:14:54 PM: (@netlify/plugin-sitemap onPostBuild completed in 92ms)
4:14:54 PM:
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:   8. netlify-plugin-inline-source (onPostBuild event)
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:
4:14:54 PM: Sources successfully inlined!
4:14:54 PM:
4:14:54 PM: (netlify-plugin-inline-source onPostBuild completed in 348ms)
4:14:54 PM:
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:   9. netlify-plugin-cache-nextjs (onPostBuild event)
4:14:54 PM: ────────────────────────────────────────────────────────────────
4:14:54 PM:
4:14:54 PM: .next/cache exists on disk
4:14:55 PM: Cached the .next folder at the location .next/cache
4:14:55 PM:
4:14:55 PM: (netlify-plugin-cache-nextjs onPostBuild completed in 737ms)
4:14:55 PM:
4:14:55 PM: ────────────────────────────────────────────────────────────────
4:14:55 PM:   10. netlify-plugin-minify-html (onPostBuild event)
4:14:55 PM: ────────────────────────────────────────────────────────────────
4:14:55 PM:
4:14:55 PM: Minifiying HTML in the deploy context: deploy-preview
4:14:55 PM: Minifiying HTML with these options: {
4:14:55 PM:   removeComments: true,
4:14:55 PM:   collapseInlineTagWhitespace: true,
4:14:55 PM:   collapseWhitespace: true,
4:14:55 PM:   minifyCSS: true,
4:14:55 PM:   minifyJS: true,
4:14:55 PM:   sortAttributes: true,
4:14:55 PM:   sortClassName: true
4:14:55 PM: }
4:14:58 PM:
4:14:58 PM: (netlify-plugin-minify-html onPostBuild completed in 2.9s)
4:14:58 PM:
4:14:58 PM: ────────────────────────────────────────────────────────────────
4:14:58 PM:   11. Deploy site
4:14:58 PM: ────────────────────────────────────────────────────────────────
4:14:58 PM:
4:14:58 PM: Starting to deploy site from '.next'
4:14:58 PM: Creating deploy tree asynchronously
4:14:58 PM: Creating deploy upload records
4:15:01 PM: 33 new files to upload
4:15:01 PM: 2 new functions to upload
4:15:12 PM: Site deploy was successfully initiated
4:15:12 PM:
4:15:12 PM: (Deploy site completed in 13.9s)
4:15:12 PM:
4:15:12 PM: ────────────────────────────────────────────────────────────────
4:15:12 PM:   Netlify Build Complete
4:15:12 PM: ────────────────────────────────────────────────────────────────
4:15:12 PM:
4:15:12 PM: (Netlify Build completed in 1m 29.9s)
4:15:12 PM: Caching artifacts
4:15:12 PM: Started saving node modules
4:15:12 PM: Finished saving node modules
4:15:12 PM: Started saving build plugins
4:15:12 PM: Finished saving build plugins
4:15:12 PM: Started saving pip cache
4:15:13 PM: Finished saving pip cache
4:15:13 PM: Started saving emacs cask dependencies
4:15:13 PM: Finished saving emacs cask dependencies
4:15:13 PM: Started saving maven dependencies
4:15:13 PM: Finished saving maven dependencies
4:15:13 PM: Started saving boot dependencies
4:15:13 PM: Finished saving boot dependencies
4:15:13 PM: Started saving rust rustup cache
4:15:13 PM: Finished saving rust rustup cache
4:15:13 PM: Started saving go dependencies
4:15:13 PM: Finished saving go dependencies
4:15:13 PM: Build script success
4:15:39 PM: Finished processing build request in 2m25.269617282s
4:15:45 PM: Starting post processing
4:15:46 PM: Post processing - HTML
4:15:46 PM: Skipping form detection
4:15:58 PM: Post processing - header rules
4:15:58 PM: Post processing - redirect rules
4:15:59 PM: Post processing done
4:16:03 PM: Site is live ✨

Function logs

Function logs
# Paste logs here

.next JSON files

generated .next JSON files
# Paste file contents here. Please check there isn't any private info in them
# You can either build locally, or download the deploy from Netlify by clicking the arrow next to the deploy time.

Hi. Do you mean you're trying to load the URL _redirects? That file isn't meant to be publicly accessible. Could you post the fucntion logs that include the error?

yes this URL.
I know it is not meant to be available. But since we now have to put it in the public folder, it should become available. Right ? Or at least give a 404. But now it triggers a internal server error

We exclude it from being served. However you are correct that it should give a 404 not a server error. Can you share the function logs for the request? It will be the function called ___netlify-handler

hmm sure. How can I get it ?

authors: ascorbic leobenkel

repo: netlify/netlify-plugin-nextjs


text:
Updates for Ubuntu 16.04

Do not delete source iso if it existed before
Check that we are running under Ubuntu 16.04
If so:
a) Install syslinux AND syslinux-utils if not installed
b) Update "late" command (also installed wget into target system)

Any plans to merge this?

I'm really sorry, but you also took changes in the url in readme.md (.../skorzhevsky/) could you, please, change it back to "netson". Sorry again, i didn't know that changes after pull request are still propogated to it.

Fixed! 👍

source: gharchive/pull-request

authors: mkjaer netson skorzhevsky

repo: netson/ubuntu-unattended

license: mit

license_type: permissive

license_source: bigquery


text:
ErrorDataDecoderException

Expected behavior
Actual behavior
Steps to reproduce
Minimal yet complete reproducer code (or URL to code)
Netty version
4.1.53.Final
JVM version (e.g. java -version)
java8
OS version (e.g. uname -a)
win10
POST data
{
"drugResult": "=5%"
}
new HttpPostRequestDecoder(FACTORY, req);
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: Invalid hex byte at index '1' in string: '5%"'
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.decodeAttribute(HttpPostStandardRequestDecoder.java:674)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.setFinalBuffer(HttpPostStandardRequestDecoder.java:637)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributesStandard(HttpPostStandardRequestDecoder.java:451)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributes(HttpPostStandardRequestDecoder.java:519)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBody(HttpPostStandardRequestDecoder.java:375)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.offer(HttpPostStandardRequestDecoder.java:304)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.(HttpPostStandardRequestDecoder.java:158)
at io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.(HttpPostRequestDecoder.java:95)
at io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.(HttpPostRequestDecoder.java:69)
at top.hserver.core.server.handlers.HServerContentHandler.handlerBody(HServerContentHandler.java:80)
at top.hserver.core.server.handlers.HServerContentHandler.channelRead0(HServerContentHandler.java:38)
at top.hserver.core.server.handlers.HServerContentHandler.channelRead0(HServerContentHandler.java:20)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:253)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.lang.Thread.run(Thread.java:748)
at Invalid hex byte at index '1' in string: '5%"'

content-type = application/json

Please include more details.

Hello, I submit JSON data with playload. When JSON data contains =%, there will be an exception
And issue https://github.com/netty/netty/issues/6898 The problem is similar, but it is judged that the bug is not closed. I try to look at other people's open source web code and find that stable frameworks use their own decoders. It should be noted that there are some problems with the httppostrequest decoder, including some bugs when uploading files locally My English may not be good enough to show this problem perfectly

Can httppostrequest decoder be used only for standard decoding, and the data of playload cannot be decoded?

HttpPostRequestDecoder is meant for decoding HTTP Post from ByteBuf. It'll decode the entire HTTP Post Message not specifically payload. To decode JSON payload from HTTP Post, you need custom decoders.

OK, thank you for your help. I'll adjust my program

source: gharchive/issue

authors: heixiaoma hyperxpro

repo: netty/netty

license_source: github-api


text:
android studio  uses versions after 4.1.26.Final to report errors

Expected behavior
use netty-4.1.58.Final develop android  app
Actual behavior
log:
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.logging.log4j.spi.ExtendedLoggerWrapper" on path: DexPathList[[zip file "/data/app/com.wing.tvadmin-0m32SN1k7oCrKmWGnftx9Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.wing.tvadmin-0m32SN1k7oCrKmWGnftx9Q==/lib/arm64, /system/lib64, /product/lib64]]
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at io.netty.util.internal.logging.InternalLoggerFactory io.netty.util.internal.logging.InternalLoggerFactory.useLog4J2LoggerFactory(java.lang.String) (InternalLoggerFactory.java:75)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at io.netty.util.internal.logging.InternalLoggerFactory io.netty.util.internal.logging.InternalLoggerFactory.newDefaultFactory(java.lang.String) (InternalLoggerFactory.java:47)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at io.netty.util.internal.logging.InternalLoggerFactory io.netty.util.internal.logging.InternalLoggerFactory.getDefaultFactory() (InternalLoggerFactory.java:111)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at io.netty.util.internal.logging.InternalLogger io.netty.util.internal.logging.InternalLoggerFactory.getInstance(java.lang.String) (InternalLoggerFactory.java:134)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at io.netty.util.internal.logging.InternalLogger io.netty.util.internal.logging.InternalLoggerFactory.getInstance(java.lang.Class) (InternalLoggerFactory.java:127)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at void io.netty.channel.MultithreadEventLoopGroup.() (MultithreadEventLoopGroup.java:35)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at void com.wing.service.netty.AndroidHttpServer.start() (AndroidHttpServer.java:42)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at void com.wing.service.netty.AndroidHttpServer.main(java.lang.String[]) (AndroidHttpServer.java:34)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at void com.wing.tvadmin.MainActivity$3.run() (MainActivity.java:58)
2021-02-08 18:10:09.647 10160-10246/com.wing.tvadmin I/om.wing.tvadmi:     at void java.lang.Thread.run() (Thread.java:784)
Steps to reproduce

new  android studio project
MainActivity,java   add code:
 new Thread(() -> {
     try {
         AndroidHttpServer.main(null);
     } catch (Exception e) {
         e.printStackTrace();
     }
 }).start();

run the app , look loacat window

Minimal yet complete reproducer code (or URL to code)
AndroidHttpServer.java
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.*;
import java.net.InetSocketAddress;
public class AndroidHttpServer {
private final int port;
public AndroidHttpServer(int port) {
    this.port = port;
}

public static void main(String[] args) throws Exception {

    int port = Integer.parseInt("12319");
    new AndroidHttpServer(port).start();
}

public void start() throws Exception {

    final AndroidHttpServerHandler androidHttpServerHandler = new AndroidHttpServerHandler();

    EventLoopGroup group = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(group)
                .channel(NioServerSocketChannel.class)
                .localAddress(new InetSocketAddress(port))
                .childHandler(new ChannelInitializer<SocketChannel>() {
                    public void initChannel(SocketChannel channel) throws Exception {

                        ChannelPipeline pipeline = channel.pipeline();
                        pipeline.addLast(new HttpResponseEncoder());
                        pipeline.addLast(new HttpRequestDecoder());
                        pipeline.addLast(new HttpObjectAggregator(1024*1024*10));
                        pipeline.addLast(androidHttpServerHandler);
                    }
                });
        ChannelFuture f = b.bind().sync();
        System.out.println(AndroidHttpServer.class.getName() + " started and listening for connections on " + f.channel().localAddress());
        f.channel().closeFuture().sync();
    } finally {
        group.shutdownGracefully().sync();
    }
}

}
AndroidHttpServerHandler.java
import android.os.Environment;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.codec.http.;
import io.netty.util.CharsetUtil;
import java.io.;
import java.net.URLDecoder;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@Sharable
public class AndroidHttpServerHandler extends ChannelInboundHandlerAdapter {
private static final String CRLF = "\r\n";
private static final String BLANK = " ";

public void channelRead(ChannelHandlerContext ctx, Object msg) {

    if (msg instanceof FullHttpRequest) {

        FullHttpRequest req = (FullHttpRequest) msg;
        try {
            String uri = null;
            try {
                uri = URLDecoder.decode(req.uri(), "utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            ByteBuf buf = req.content();
            String content = buf.toString(CharsetUtil.UTF_8);
            HttpMethod method = req.method();
            HttpHeaders headers = req.headers();
            if (method.equals(HttpMethod.GET)) {
                responseStream(ctx, uri);
            }
            if (method.equals(HttpMethod.POST)) {
                responseText(ctx, uri);
            }

        } finally {
            req.release();
        }
    }
}

private void responseText(ChannelHandlerContext ctx, String c) {

    FullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
            HttpResponseStatus.OK,
            Unpooled.copiedBuffer(c, CharsetUtil.UTF_8));
    resp.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html; charset=UTF-8");
    ctx.writeAndFlush(resp).addListener(ChannelFutureListener.CLOSE);
}

public static String getRootDirectory() {
    String rootDirectory = "/storage/emulated/0/";
    if (!new File(rootDirectory).exists()) {
        rootDirectory = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "EMACRO" + File.separator;
    }
    return rootDirectory;
}

private void responseStream(ChannelHandlerContext ctx, String url) {

    if (url.equals("/image")) {

        File file = new File(getRootDirectory() + "image.jpg");
        ByteBuf respByte = Unpooled.buffer((int) file.length());

        try {
            FileInputStream fis = new FileInputStream(file);
            FileChannel channel = fis.getChannel();
            ByteBuffer allocate = ByteBuffer.allocate((int) file.length());
            try {
                channel.read(allocate);
            } catch (IOException e) {
                e.printStackTrace();
            }
            respByte.writeBytes(allocate.array());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        FullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
                HttpResponseStatus.OK,
                respByte
        );

        resp.headers().set(HttpHeaderNames.ACCEPT_RANGES, "bytes");
        resp.headers().set(HttpHeaderNames.CACHE_CONTROL, "no-cache, no-store, max-age=0, must-revalidate");
        resp.headers().set(HttpHeaderNames.CONNECTION, "keep-alive");
        resp.headers().set(HttpHeaderNames.CONTENT_LENGTH, respByte.capacity());
        resp.headers().set(HttpHeaderNames.CONTENT_TYPE, "image/jpeg");
        resp.headers().set(HttpHeaderNames.DATE, "Mon, 08 Feb 2021 05:14:21 GMT");
        resp.headers().set(HttpHeaderNames.EXPIRES, 0);
        resp.headers().set(HttpHeaderNames.KEEP_ALIVE, "timeout=60");
        resp.headers().set(HttpHeaderNames.LAST_MODIFIED, "Mon, 14 Dec 2020 01:59:59 GMT");
        resp.headers().set(HttpHeaderNames.PRAGMA, "no-cache");
        resp.headers().set(HttpHeaderNames.VARY, "Origin");
        resp.headers().set(HttpHeaderNames.VARY, "Access-Control-Request-Method");
        resp.headers().set(HttpHeaderNames.VARY, "Access-Control-Request-Headers");
        resp.headers().set("X-Content-Type-Options", "nosniff");
        resp.headers().set("X-Frame-Options", "DENY");
        resp.headers().set("X-XSS-Protection", "1; mode=block");
        resp.headers().set("Android_ID", "wang");

        ctx.writeAndFlush(resp).addListener(ChannelFutureListener.CLOSE);
    }

    if (url.equals("/video")) {

        File file = new File(getRootDirectory() + "video.mp4");
        ByteBuf respByte = Unpooled.buffer((int) file.length());

        try {
            FileInputStream fis = new FileInputStream(file);
            FileChannel channel = fis.getChannel();
            ByteBuffer allocate = ByteBuffer.allocate((int) file.length());
            try {
                channel.read(allocate);
            } catch (IOException e) {
                e.printStackTrace();
            }
            respByte.writeBytes(allocate.array());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        FullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
                HttpResponseStatus.OK,
                respByte
        );

        resp.headers().set(HttpHeaderNames.ACCEPT_RANGES, "bytes");
        resp.headers().set(HttpHeaderNames.CACHE_CONTROL, "no-cache, no-store, max-age=0, must-revalidate");
        resp.headers().set(HttpHeaderNames.CONNECTION, "keep-alive");
        resp.headers().set(HttpHeaderNames.CONTENT_LENGTH, file.length());
        resp.headers().set(HttpHeaderNames.CONTENT_TYPE, "video/mp4");
        resp.headers().set(HttpHeaderNames.DATE, "Mon, 08 Feb 2021 05:14:21 GMT");
        resp.headers().set(HttpHeaderNames.EXPIRES, 0);
        resp.headers().set(HttpHeaderNames.KEEP_ALIVE, "timeout=60");
        resp.headers().set(HttpHeaderNames.LAST_MODIFIED, "Mon, 14 Dec 2020 01:59:59 GMT");
        resp.headers().set(HttpHeaderNames.PRAGMA, "no-cache");
        resp.headers().set(HttpHeaderNames.VARY, "Origin");
        resp.headers().set(HttpHeaderNames.VARY, "Access-Control-Request-Method");
        resp.headers().set(HttpHeaderNames.VARY, "Access-Control-Request-Headers");
        resp.headers().set("X-Content-Type-Options", "nosniff");
        resp.headers().set("X-Frame-Options", "DENY");
        resp.headers().set("X-XSS-Protection", "1; mode=block");
        resp.headers().set("Android_ID", "wang");

        ctx.writeAndFlush(resp).addListener(ChannelFutureListener.CLOSE);
    }

}

public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {

    ctx.writeAndFlush(Unpooled.EMPTY_BUFFER)
            .addListener(ChannelFutureListener.CLOSE);
}

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
    cause.printStackTrace();
    ctx.close();
}

}
Netty version
netty-all:4.1.58.Final
JVM version (e.g. java -version)
jdk8
OS version (e.g. uname -a)
android 6-9

Can you tell me what error it shows ?

authors: DavidAwing normanmaurer


text:
version: remove Duplicating managed version

Motivation:
remove Duplicating managed version, cause it is already defined in the parent project.
Modification:

origin

<dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-dev-tools</artifactId>
      <scope>test</scope>
      <version>${project.version}</version>
      <optional>true</optional>
</dependency>

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.10</version>
</plugin>

after modify

<dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-dev-tools</artifactId>
      <scope>test</scope>
      <optional>true</optional>
</dependency>

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
</plugin>

Result:
remove Duplicating managed version

yeah, do it please.

Can one of the admins verify this patch?

@netty-bot test this please

@leeyazhou can you please sign our ICLA and let me know once done:
https://netty.io/s/icla

@leeyazhou ping ...

OK. I sign it just now.

@normanmaurer  I have sign it just now.

@leeyazhou thanks a lot!

authors: leeyazhou normanmaurer


text:
Sort cookies into order recommended by RFC6265

From RFC6265:
   2.  The user agent SHOULD sort the cookie-list in the following
   order:

   *  Cookies with longer paths are listed before cookies with
      shorter paths.

   *  Among cookies that have equal-length path fields, cookies with
      earlier creation-times are listed before cookies with later
      creation-times.

   NOTE: Not all user agents sort the cookie-list in this order, but
   this order reflects common practice when this document was
   written, and, historically, there have been servers that
   (erroneously) depended on this order.

Replacing this with a fixed PR.


text:
add protected for methods checkWaitReadTime and informReadOperation

I added protected for methods checkWaitReadTime and informReadOperation to allow override methods as an open issue #5155 .

@fredericBregier - WDYT?

@brunoroberto - Please sign the ICLA and follow the commit guidelines in http://netty.io/wiki/developer-guide.html

@brunoroberto @fredericBregier ping

Sorry to come back late...
I believe initially we design this to be package protected, not globally protected. They were originally made to allow GlobalTrafficShapingHandler to extend them, within the same package, meaning that it can allow it to access to protected attributed and methods, including package protected ones, which are pretty much used. This was meant to protect the implementation as it is a bit complex and could be misused.
If you think is it better to be able to extend those methods (which are made to be extended) including out of the package (meaning one is not obliged to extend within the same package), then it's fine for me to add protected to them.
You might consider however 2 points:

Is that enough ? Menaing that's all you need ? What about other package protected methods/attributes ?
What's the difficulty to create another TrafficShaping handler within the very same package for your own need ? Is that breaking some API rules ?

Let me close this until @brunoroberto still has the demand... If so please reopen

authors: Scottmitch brunoroberto fredericBregier normanmaurer


text:
Only use KeyManagerFactory in SniClientTest when supported by OpenSSL…

… version.
Motivation:
6ed7c6c75d458047adc37470697f215e9d7436ea added a test which blindly assumed we can use a KeyManagerFactory all the time. This is only true if have OpenSSL 1.0.2 or later, which may not be the case.
Modifications:
Only use KeyManagerFactory in test if the OpenSSL version does support it.
Result:
More robust tests.

I will just pull this in once the CI pass to make it happy again and its a test-case change only as well.


text:
Allow to specify a RedirectDnsServerAddressStreamProvider when buildi…

…ng a DnsNameResolver.
Motivation:
Sometimes users need to adjust the logic on how we should follow dns redirects (for example adjust the order of the tried nameservers). This is currently possible by extending DnsNameResolver and overriding a method. This is really a bit "odd" as constructing this class directly involves a constructor with a lot of different arguments. We should allow the user to do this via the builder.
Modifications:

Add a RedirectDnsServerAddressStreamProvider interface and a default implementation
Add the extra methods to DnsNameResolverBuilder to configure such a provider
Deprecate the public constructors of DnsNameResolver, as users should just us the builder.

Result:
Easier and cleaner way of adjusting the DnsNameResolver

Let me close this in favour of https://github.com/netty/netty/pull/8316


text:
ciscomeraki parser

The latest Cisco Meraki parser (v20) does not account for several categories of security events. Currently, all of the defined headers are expecting a header that starts with four header fields with a "." between header field 2 and header field 3. Not all syslog messages types begin with this pattern including
For Meraki MX Security Appliances

security_event ids_alerted
security_event security_filtering_file_scanned
security_event security_filtering_disposition_change

For Meraki MR Access Points

events rogue SSID detected
events SSID spoofing detected
urls HTTP GET requests

Meraki syslog types and logs samples can be found here
https://documentation.meraki.com/zGeneral_Administration/Monitoring_and_Reporting/Syslog_Event_Types_and_Log_Samples
Headers

An example of a header issue

Thanks for sharing this, we'll look into this.

Thanks!
FYI: Meraki logs can start one of three ways which matches the three highlights I made ( this is just on the MX Security Appliance message types)

GRAY: No timestamp
YELLOW: A default timestamp (which happens to be unix epoch, though it’s not noted)
GREEN: Emblem timestamp (i.e. no year)

Additionally, Meraki has this information about the messages starting with the unix epoch timestamp.

And, this is Meraki's response about their message headers in general ... essentially, they can start one of three ways as I mentioned at the top.

Regards,
Kevin

Additionally, I would advise caution when looking at the published Meraki samples from their website.
See https://documentation.meraki.com/zGeneral_Administration/Monitoring_and_Reporting/Syslog_Event_Types_and_Log_Samples
On looking at their samples more closely, I believe that they have errors and typos in their tables.
For example, here they have misspelled “flows”

Here, I believe they have included part of the output from their syslog collector (Dec 6 08:46:12 192.168.1.1)

On the MR Access Point table in the “urls” section, they have also included part of a syslog collector message PLUS they have two separate events from two different devices (an MX and an MR) in the message 1) an “events” message about “cellular connection down” from device MX84, and 2) a “urls” message of “request: UNKNOWN” from device MR18.

This request is being looked into under ticket SMC-13872.
Thanks for sharing this update with us.

authors: jnjkcole manish-rsa

repo: netwitness/nw-logparsers


text:
Add feature to add new transit route / delete service

This PR adds the ability to add a new transit route via a project card that looks like the one below.
Fixes #13 and #30
Transit Addition
project: New Green Transit
tags:
   - new transit
transit_add_new_route:
  routes:
    - route_id: abc
      route_long_name: green_line
      route_short_name: green
      route_type: 3
      agency_id: The Bus
      trips:
        - direction_id: 0
          headway_secs:
            ('6:00','12:00'): 600
            ('12:00','13:00'): 900
          routing:
            - '1':
              stop: True #when stop is set to True, defaults to allow both boarding and alighting
            -  2
            - 3
            - "4":
              stop: True # default to False, specify only when stopping
              alight: False  # default to True, specify only when not default
            - 5
            - "6":
              stop: True

Transit Deletion

project: Remove AM service on the Green Line
transit_service_deletion:
  service:
    trip_properties:
      route_short_name: "green"
    timespans:
      - ['06:00:00', '09:00:00']
  clean_shapes: false
  clean_routes: false

I'm not sure we need this, see my latest comment: https://github.com/network-wrangler/projectcard/issues/13#issuecomment-2287105932

@i-am-sijia @yueshuaing please review

I also made some other changes in PR https://github.com/network-wrangler/projectcard/pull/27, and it's ready for review now.

kk - i think we are good with two outstanding questions (i don't have a big opinion on either of these):

headway_secs as array of single-length objects, or object
default values for clean_routes and clean_shapes

I prefer array of single-length objects, following the Option A-1 format, because all current functions handle headway_secs as a list
setting the default values for clean_routes and clean_shapes to false sounds good to me

But I'm flexible, can make these changes as needed

authors: e-lo i-am-sijia yueshuaing

repo: network-wrangler/projectcard


text:
谢谢开源，并请教两个问题

1、当模型的属性发生变化（如增加、减少、更名）时，是否有方法进行数据迁移（将变化之前已存储的数据直接通过某种规则迁移至新的模型结构中，迁移规则可借鉴 realm 直接已 block 交给业务方）？
2、是否需要业务方自己处理多线程资源竞争问题？

你如果有这两个疑问说明你根本还没深入了解本项目，模型属性的删除或者增加只需要修改model类的VEASION方法版本号即可也是github所说智能数据库字段更新机智，这库会自动进行数据库更新字段并保留历史记录，该项目是线程安全不存在资源竞争问题

authors: netyouli xpsuper


text:
Add new reference to the Prompt2Model readme

Description
Adding a new paper to the Prompt2Model references to cite.
References
N/A
Blocked by
N/A

@neubig done!

Looks good, I approve but linting is failing!

authors: neubig viswavi


text:
[MNT] Updated compatibility.yaml file and e2e tests

Changes proposed in this pull request:

Updated e2e tests
Updated compatibility.yaml file

Added a step to modify the NB_API_QUERY_URL env var before bringing the stack up
Renamed the workflow from Compatibility of to Tool version compatibility test

Added badge for Tool version compatibility test to README.md

Checklist
This section is for the PR reviewer

[x] PR has an interpretable title with a prefix ([ENH], [FIX], [REF], [TST], [CI], [MNT], [INF], [MODEL], [DOC]) (see our Contributing Guidelines for more info)
[ ] PR has a label for the release changelog or skip-release (to be applied by maintainers only)
[ ] PR links to GitHub issue with mention Closes #XXXX
[ ] Tests pass
[ ] Checks pass

For new features:

[ ] Tests have been added

For bug fixes:

[ ] There is at least one test that would fail under the original bug conditions.

We should also add an internal release label

We should also add an internal release label

Do u mean to release off of this PR?

authors: rmanaem surchs

repo: neurobagel/recipes

license: MIT


text:
Unable to type tilde

On a German (QWERTZ) keyboard layout, you press AltGr + "+" to type ~. Using flow --show-input, this is shown as "~", but when in the editor or opening a file a "+" comes out. I'm using ghostty, if that's relevant, but since show-input gives the correct output I assume it isn't.
This issue extends to all characters typed via AltGr.
Additionally, the file open dialog seems to insert extra spaces for non-ascii characters such as ß.

This might be a libvaxis keyboard input problem. I'm not sure

Trying the libvaxis text_input demo seems to work fine.

I reported it here: https://github.com/ghostty-org/ghostty/issues/2981

I will close this here as I don't think there is anything flow can do to fix it. It works fine in kitty and foot.

It looks to me that this is also a problem with flow's new dynamic keybinding system, so I have reopened.
If there is a flow fix, it may solve the issue independently of the ghostty issue.

authors: VisenDev edwloef neurocyte

repo: neurocyte/flow


text:
extraction of partial overlapping subvolumes

Let's assume I would like to cut out subvolumes of 128x128x128 voxels from a dataset with size 168x208x142 voxels (e.g. kasthur11, at magnification 7).
I can extract subvolumes, that are fully overlapping with the dataset, for example:
GET http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/000,128/000,128/001,129/neariso/
However, I cannot extract any subvolumes that are only partially overlapping with the dataset, e.g.:
http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/128,256/000,128/001,129/neariso/
http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/128,256/128,256/001,129/neariso/
This would necessary in order to extract 128x128x128 JPEG stacks for (Py)KNOSSOS at the borders of a dataset.

Context: I am currently working on an interface to ocp from PyKnossos (the little python brother of Knossos) which is especially well suited for neurite tracing in (near-)isotropic datasets.

The dimensions of the image at res7 are 168,208,1850(You can look at the dims by using the info query).  When you make a request for [128,256] in the x-dimension you are going out of bounds and that query will not work.  The queries you should be using are:
http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/128,168/000,128/001,129/neariso/
http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/128,168/128,208/001,129/neariso/
To answer in short, is that we do not pad our cutouts to meet multiples of 128,128,128. It is important to note that  if you want to efficiently use the system then your queries in general should be multiples of 128,128,16 in x,y,z dimension. So 128,128,128 queries being done by KNOSSOS work fine.

@adwanner Great to hear about PyKNOSSOS. We did have someone from scalable minds who contributed a service called RAW which downloads a 3D/4D region of data for of a specified channel, resolution and bounds in a web readable raw binary representation numpy array format.
Currently this service lives on the dev branch but will be rolled out soon. Are you aware of this?
Also, one question we had was how does KNOSSOS or PyKNOSSOS deal with the annotation data generated? We also store annotations in ndstore which can be written and read via RESTful services.

@kunallillaney Thanks for the detailed answer. The JPEG cutout service does currently not work if  xdim != ydim (see issue 275). It would be great if you could fix that such that I could use queries like
http://openconnecto.me/ocp/ca/kasthuri11/image/jpeg/7/128,168/000,128/001,129/neariso/
Regarding annotation data: PyKnossos is mainly file system based, but I am planning to incorporate ndstore and catmaid support these days.

@adwanner When you say incorporate, do you mean to enable PyKnossos to read data from these stores or also write data back to them? What format do you use to store annotations on the file-system?

The first step would be to enable PyKnossos to read data, the second would be to also write data back. Currently, the annotation objects are saved in the nml format of Knossos which is based on XML. Because PyKnossos is currently only used for skeleton tracing and synapse annotation, all PyKnossos annotation objects consist of nodes with attributes and edges that connect pairs of nodes.

@adwanner Sounds awesome! Someone will help you ingest the skeleton data in ndstore and we can take it from there.

authors: adwanner kunallillaney

repo: neurodata/ndstore


text:
Document usage for config file .sctrc

Feature justification: Is your feature request related to a problem? Please describe.
The config file .sctrc is useful, but is not documented.
Describe the solution you'd like
Document it in README and wiki

Closing (somewhat duplicate of #2829)

repo: neuropoly/spinalcordtoolbox


text:
Feature-Request: Better debug log messages for TLS connection issues. (Connection with Microsoft Remote Desktop fails with Error 0x2104)

When I tried to connect to my xrdp server running on Ubuntu 20.04 from remmina on Ubuntu, everything works fine. But from Microsoft Remote Desktop it fails with "Protocol error" and "error 0x2104"
Looking into it, it was a problem of the self-signed certificate of the server. Running
sudo make-ssl-cert generate-default-snakeoil --force-overwrite
and accepting the new certificate on the mac when prompted by Microsoft Remote Desktop solved the problem.
It would be great if xrdp could give some information about the status of the TLS connection. Even on loglevel DEBUG there is no indication what is wrong, and debugging TLS connections is not a normal user skill. Of course, the same holds true for MS RD, their messages in the console are neither helpful.

I agree with this - I has a similar experience while debugging #1776, but lacked the OpenSSL knowledge to improve it then.
I'll mark this as an 'enhancement request'.

@ingokeck - do you have the certificate (and private key) which was failing for you still about by any chance?
I've added some logging to the SSL stack and I'd like to test it in a real-world situation.

@matt335672 Sorry, I did not keep a copy. It probably was the "snakeoil" crt/key that came with the then newest Ubuntu install two years ago in February. Now that I think of it, the machine received a new IP and hostname some months ago. Maybe this generated a mismatch with the certificate and this was the problem?

Well, that's fair enough - I thought it was worth asking anyway.
If the hostname which is used to connect the machine doesn't match one of the names in the certificate, it's really up to the client what to do - the server doesn't know what name the client used to get to it, and in fact the client and server don't necessarily share the same naming infrastructure.
On the Microsoft client there's an option under the Advanced tab to say what to do when the authentication of the server fails. I've tried setting this to 'Do not connect' (the strictest setting), and I get the following dialog box on a name mismatch:-

So no sign of an error x2104 there.
In any case I'll beef up the logging a little and maybe next time it happens to someone we can get more info.

repo: neutrinolabs/xrdp


text:
What's the role of Consul in NeuVector?

I can see a lot config about Consul in the source code of Controller, and the logs show that Controller did initialize with the process of Consul set up. All i know is Consul is a open source project which works in service discover and service registry, so what's the relationship between agent in Consul and controller in NeuVector? And how NeuVector make use of the Consul to achieve what kind of purpose?

NeuVector makes use of Consul mainly for key value store & leader election.

NeuVector makes use of Consul mainly for key value store & leader election.

How does neuvector handle events in protected mode? No specific code was found

What's the issue?

What's the issue?

Is there any good architecture diagram or documentation for me to read the source code better? I read the source code with a lot of confusion

Currently the document is unavailable

@chunyenlin  Thank your for your reply? But after I read the main function of Controller, there are some question:
What's the main purpose of controller/kv/conig.go ? Because I can see the kv.init() with a start of newConfigHelper

func

func newConfigHelper(id, version string, persist bool) ConfigHelper {
  c := new(configHelper)
  c.id = id
  c.version = version
  c.persist = persist
  c.backupTimer = time.NewTimer(backupDelayIdle)
  c.backupTimer.Stop()
  c.cfgChanged = utils.NewSet()
  c.startBackupThread()
  cfgHelper = c
  return c}

but the startBackUpThread() make me confuse? Why we need this step?

authors: brness chunyenlin longpi1

repo: neuvector/neuvector


text:
[nri-bundle] helm uninstall fails

Bug description
Running helm uninstall fails
Version of Helm and Kubernetes
helm version
version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", GitTreeState:"clean", GoVersion:"go1.16.10"}

kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:59:11Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.11-eks-f17b81", GitCommit:"f17b810c9e5a82200d28b6210b458497ddfcf31b", GitTreeState:"clean", BuildDate:"2021-10-15T21:46:21Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

Which chart?
The chart is nri-bundle-3.3.0
What happened?
The helm uninstall fails, waiting for the vizier-deleter job to finish.
In the events for the job I see:
Events:
  Type     Reason        Age                   From            Message
  ----     ------        ----                  ----            -------
  Warning  FailedCreate  2m58s (x6 over 8m8s)  job-controller  Error creating: pods "vizier-deleter-" is forbidden: error looking up service account newrelic/updater-service-account: serviceaccount "updater-service-account" not found

What you expected to happen?
I would expect the chart to be uninstalled successfully
How to reproduce it?
Just a normal helm uninstall as mentioned in the readme.
I'm using the same setup as described in https://github.com/newrelic/helm-charts/issues/661

Fixed with #683

Hi, with nri-bundle-3.4.0 the vizier-deleter does start now but it just stays running until helm times out, how long is it supposed to take?
So different issue but same end result.

authors: kang-makes luisdavim

repo: newrelic/helm-charts


text:
Update quickstart workflow failures

Description
We are seeing some failures in the quickstart update workflow, this is an umbrella issue to track what we are seeing.

Unable to submit a "New Relic" and "Verified" support level to EU

https://github.com/newrelic/newrelic-quickstarts/runs/5368282007?check_suite_focus=true
https://github.com/newrelic/newrelic-quickstarts/runs/5368282007?check_suite_focus=true

Timed out submitting to staging

https://github.com/newrelic/newrelic-quickstarts/runs/5368386872?check_suite_focus=true
https://github.com/newrelic/newrelic-quickstarts/runs/5368321417?check_suite_focus=true
https://github.com/newrelic/newrelic-quickstarts/runs/5336540875?check_suite_focus=true
https://github.com/newrelic/newrelic-quickstarts/runs/5336540875?check_suite_focus=true

Time out while pulling down artifact with PR number

This is due to PRs being closed without merging, not a problem, but could be worth cleaning up.
https://github.com/newrelic/newrelic-quickstarts/runs/5368267158?check_suite_focus=true

@aswanson-nr make sure you're using an API key with NR admin privileges and that should fix the issue.

Updates:

Admin privileges for the EU api key (in progress)
Staging timeouts (investigation in progress)

Resolution plan:

Update EU API key
Rerun failed jobs to deploy changes to the catalog
If we're still seeing staging timeouts, refocus on this issue and then retry step 2

Update:

EU API key has been fixed
Workflows have been rerun
Staging timeouts were not observed, so we will continue to keep an eye on that
Merging PRs can now continue as normal

@nr-kkenney @jpvajda @zstix for visibility

Runbook has been updated with a link to the dashboard to track workflow events https://staging.onenr.io/0kLwGkzNew6

authors: aswanson-nr jerelmiller

repo: newrelic/newrelic-quickstarts


text:
Gridgain quickstart, data source and dashboard

Summary
Includes a quickstart, data-source and dashboard to integrate New Relic with GridGain and Apache Ignite.

Pre merge checklist

[X] Did you check you NRQL syntax? - Does it work?
[X] Did you include a Data source and Documentation reference?
[X] Are all documentation links publicly accessible?
[ ] Did you check your descriptive content for voice and tone?
[ ] Did you check your descriptive content for spelling and grammar errors?
[ ] Did you review your content with a subject matter expert? (e.g. a Browser agent quickstart is reviewed with a member of the Browser Agent team)

Dashboards

[ ] Does the PR contain a screenshot for each of your dashboards?
[ ] Do your screenshots show data?
[ ] Has the sanitization script been run on each dashboard?

Alerts

[ ] Did you check that your alerts actually work?

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

authors: CLAassistant sdarlington


text:
Rails notifications: investigate subscribe to custom event topics

Rails' ActiveSupport::Notifications will allow users to set up the publication of and subscription to custom event topics. See Creating custom events.
We should investigate if there is a good way to ask an app for a list of custom events it has on the go and then subscribe to those. Alternatively, we could offer an allow list of topic names to subscribe to in the agent configuration.
Tasks

[ ] Determine if a Rails app can be asked for a list of custom topics
[ ] Determine the best way to instruct the agent to subscribe to custom topics

[ ] All custom topics?
[ ] Allowlist of topics?
[ ] Blocklist of topics?

[ ] Should we expose our subscriptions API in a manner similar to our tracer API and allow the customer to have complete control over the monitoring of custom notifications? Perhaps a user could specify a datastore segment or use a generic span.

Some example custom events as described here:

User login and logout
Password change success or fail
User login failed or succeeded
OR any other user activity

Determine if a Rails app can be asked for a list of custom topics

The public API for events seems to want the caller to already be aware of the name of an event.
We can get at the list of string events with ActiveSupport::Notifications.notifier.instance_variable_get(:@string_subscribers).keys

The other type of events besides "string" events is "other" events, which are stored in @other_subscribers

The list of events will be mix of default Rails events AND custom events.

There does not appear to be way to differentiate the default ones from the custom ones.
We could potentially keep a predefined list of all known Rails events and suspect all others to be custom

This approach would only work if the instrumented Rails app was at or below the latest version known to the agent. Otherwise, we couldn't rule out new default events having been added by a newer Rails version.

Determine the best way to instruct the agent to subscribe to custom topics

All custom topics?
Allowlist of topics?
Blocklist of topics?

Given that the list can not be separated into custom and non-custom events, the event list is not exposed via a public API, and any automated determination cannot be easily futureproofed, I'm currently leaning to requiring an allowlist of custom events to monitor in the config.

Investigation and implementation complete. See #1659.

repo: newrelic/newrelic-ruby-agent


text:
Add support for getting render timing information with view_component

Feature Description
A clear and concise description of the feature you want or need.
Describe Alternatives
When viewing a response time chart in new relic you can see how much time the view takes to render, since view_components are is a very popular library used with rails, it would be beneficial to view_component users to see how much time is spent rendering the component just like they can do with their views
Additional context
Add any other context here.
Priority
Really Want

Hi @reeganviljoen,
Thanks very much for your feature request! Render timing for ViewComponent certainly sounds like a great candidate for metrics collecting.
The maintainers will discuss this one for consideration for inclusion on our roadmap and we'll use comments like this one here to keep you posted.
Feel free to ping us here any time if you have any questions or more details to share, and feel free to direct other ViewComponent users here to lend their support (via emoji and/or comments) for the feature.

@fallwith I dont have access to this jira board but its no stress, would you let me know if possible what is happening with this request

Hi @reeganviljoen,
This feature request discussed internally has been accepted / approved for our Ruby agent dev team to work on and we're excited to get after it.
Right now the request is sitting on our todo list with a number of other items that we hope to get to before 2023 is over. Once it gets picked up the issue will see changes to its Assignees or Status fields, and you can subscribe to the issue if you want to be alerted to when those fields change.
The Jira board will just receive copies of anything taking place in GitHub. Any dev chatter or notes about ViewComponent when we're working on this one will show up here. Once we have a PR ready, it'll be linked to this issue as well.

Hey, thanks for all the great work being done at NewRelic! ❤
At CoinGecko, we are gradually adopting ViewComponent as an internal component library, and we'd love to see instrumentation metrics for the renders to figure out how we can improve performance.
Do we have an update on the timeline for the release of this feature? 🙏

If it helps, ViewComponent supports ActiveSupport instrumentations, enabled manually in the config:-
https://viewcomponent.org/guide/instrumentation.html

Hi @ervinchai 👋 We're planning to work on this before the end of the year and should see a release in early 2024. Updates will be posted here on this issue. Thanks for sharing the ViewComponent instrumentation guide—that is good information to have and we will take a look!

Hi reeganviljoen and ervinchai!
We have a working branch for ViewComponent instrumentation! If you'd like to test it out and provide feedback, we'd love to hear any thoughts you have. To do this, point the newrelic_rpm gem in your Gemfile to our view_component branch like so:
gem 'newrelic_rpm', git: 'https://github.com/newrelic/newrelic-ruby-agent', branch: 'view_component'

Here's an example from what we're seeing on a test application:

@hannahramadan This is awesome, I will check this in a test application when I get some time and tell you what I think 🙏

Hi @reeganviljoen! We're planning our next release and would like to include ViewComponent instrumentation. Have you had a chance to test?

@hannahramadan sorry for the late reply,I have just tested it and it works 😄

Thanks @reeganviljoen and @ervinchai! We will ping you here once this is released and would love to know of any feedback or enhancement opportunities you may come across. Thanks again for submitting this feature request and a happy new you to you both 🎆

@hannahramadan just want to confirm if this has been released ?

@reeganviljoen

hannahramadan just want to confirm if this has been released ?

Hello! Thanks for checking in! issues get automatically closed when the associated PRs are merged, but we haven't released yet. It will be included in our next release though, which will be released soon, probably later this week or next week. We'll update this issue to let you know once the release is out.
Thank you!

Hello @reeganviljoen and @ervinchai
Just wanted to let you know that 9.7.0 has been released with this change!

authors: ervinchai fallwith hannahramadan reeganviljoen tannalynn


text:
CI: resume JRuby testing with Rails 7

JRuby 9.4.0.0 was known to have GitHub Actions issues with our Rails 7 tests. Let's try things with JRuby 9.4.3.0

relates to #1633


text:
fix(level4: Discover Attributes): Invalid systanx for NRQL query

Current behaviour

Click "Try this query"

Fix

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Ah yes, a mistake in the fall back NRQL. Thanks for spotting.

authors: CLAassistant jdvr jsbnr


text:
CORS errors for some status pages

https://status.slack.com/ will fail with a CORS error, many others status pages have the same problem. This is a known issue since browser will block any server call that is not initiated from the same domain when the server does not allow CORS. I've encountered this issue many times, there is no easy way around it!
I can think only about 2 options:
1- See if RSS Feed helps
2- Create and use a proxy server

Hi, having the same problem while trying to implement AWS service into the Status Page.

I think having a generic RSS Feed parser would help with a lot of these sites.

Targets
Slack
Website
Atom Feed
RSS Feed
Zendesk (Issue #38 )
Website
Incidents JSON Feed - utilizes parameters as_of_date=2020-03-23 and days_back=90
Gitlab (Issue #34)
Website
RSS Feed - Has a hash in the url - will need to keep in mind this could change... could also just be where/how they're hosting it.

Closing. Tracking the broader issue in #45.

authors: aminoz007 borregovenegas devfreddy ericSpence


text:
Cannot import istio

Full logs here:
# python manage.py import istio
Importing data from istio
Traceback (most recent call last):
  File "/opt/vulnerablecode/vulnerabilities/management/commands/import.py", line 110, in _import_data
    ImportRunner(importer, batch_size).run(cutoff_date=cutoff_date)
  File "/opt/vulnerablecode/vulnerabilities/import_runner.py", line 89, in run
    process_advisories(data_source)
  File "/usr/local/lib/python3.8/contextlib.py", line 75, in inner
    return func(*args, **kwds)
  File "/opt/vulnerablecode/vulnerabilities/import_runner.py", line 116, in process_advisories
    advisory_batches = chain(data_source.updated_advisories(), data_source.added_advisories())
  File "/opt/vulnerablecode/vulnerabilities/importers/istio.py", line 61, in updated_advisories
    processed_data = self.process_file(f)
  File "/opt/vulnerablecode/vulnerabilities/importers/istio.py", line 89, in process_file
    data = self.get_data_from_md(path)
  File "/opt/vulnerablecode/vulnerabilities/importers/istio.py", line 183, in get_data_from_md
    return saneyaml.load(front_matter)
  File "/usr/local/lib/python3.8/site-packages/saneyaml.py", line 62, in load
    return yaml.load(s, Loader=loader)
  File "/usr/local/lib/python3.8/site-packages/yaml/__init__.py", line 114, in load
    return loader.get_single_data()
  File "/usr/local/lib/python3.8/site-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
  File "yaml/_yaml.pyx", line 719, in yaml._yaml.CParser.get_single_node
yaml.composer.ComposerError: expected a single document in the stream
  in "<unicode string>", line 1, column 1
but found another document
  in "<unicode string>", line 7, column 1
Failure to import data from istio. Continuing...
CommandError: 1 failed!: istio

Thank you for the report.

repo: nexB/vulnerablecode


text:
Step2 서비스 배포하기 리뷰 요청드립니다

안녕하세요, Step2 서비스 배포하기 리뷰 요청드립니다!

Step1 리뷰에서 EC2의 스펙 관련해서 코맨트 주셨었는데요, 강의 해주신 이동규님께서 ec2 권한에대해 아래와 같이 공지해주셔서 부득이하게 t3로 인스턴스를 띄웠었습니다..!(지금 와서 생각해보니 bastion 서버는 t4로 띄웠어도 됐을것 같네요 ㅎ)

#11월 18일 공지
추가적으로, ec2 관련 권한을 일부 수정했는데요.

t4g -> t3 권한으로 변경해두었어요. t4g가 arm 기반이라 실습 컨테이너가 뜨지 않아서요. 다시 빌드하기엔 데이터 셋업하는데 시간이 걸려서 > 정책 바꿔뒀으니 참고바래요 (이미 t4g에서 내부망 서버 띄우신 분들은 중지하고 다시 생성 바래요~)

그런 히스토리가 있었군요 ㅎㅎ;
거기까지는 공지되지 않아서 잘 몰랐었네요.
저번 피드백에서도 남겼듯 굳이 다시 띄우실 필요까지는 없었다고 생각하지만 학습을 위한 좋은 태도라고 생각됩니다 👏👏👏👏

repo: next-step/infra-subway-deploy