Failure to connect to AWS memoryDB

I'm attempting a cloud setup where sequin would use a MemoryDB cluster as its Redis backing store.
When attempting such configuration I see the following errors sequin's log
sequin-1        | 12:11:20.018 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:25.020 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:30.022 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:35.026 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:40.907 [notice] TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2182 generated CLIENT ALERT: Fatal - Handshake Failure
sequin-1        |  - {:bad_cert, :hostname_check_failed}
sequin-1        | 12:11:40.908 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:45.910 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:50.911 [error] Redis error while trying to acquire mutex
sequin-1        | 12:11:55.912 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:00.913 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:05.914 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:11.799 [notice] TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2182 generated CLIENT ALERT: Fatal - Handshake Failure
sequin-1        |  - {:bad_cert, :hostname_check_failed}
sequin-1        | 12:12:11.801 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:16.803 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:21.804 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:26.805 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:31.806 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:36.807 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:42.691 [notice] TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2182 generated CLIENT ALERT: Fatal - Handshake Failure
sequin-1        |  - {:bad_cert, :hostname_check_failed}
sequin-1        | 12:12:42.695 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:47.697 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:52.699 [error] Redis error while trying to acquire mutex
sequin-1        | 12:12:57.701 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:02.703 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:07.704 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:13.540 [notice] TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2182 generated CLIENT ALERT: Fatal - Handshake Failure
sequin-1        |  - {:bad_cert, :hostname_check_failed}
sequin-1        | 12:13:13.540 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:18.541 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:23.544 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:28.546 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:33.547 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:38.548 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:44.410 [notice] TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2182 generated CLIENT ALERT: Fatal - Handshake Failure
sequin-1        |  - {:bad_cert, :hostname_check_failed}
sequin-1        | 12:13:44.411 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:49.412 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:54.414 [error] Redis error while trying to acquire mutex
sequin-1        | 12:13:59.414 [error] Redis error while trying to acquire mutex
sequin-1        | 12:14:04.415 [error] Redis error while trying to acquire mutex
sequin-1        | 12:14:09.416 [error] Redis error while trying to acquire mutex

The env var is set as follows rediss://${REDIS_USERNAME}:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}
In order to discard problem with CA Root of trust I've attach a bash session to the sequin container and from there i've connected successfully using the following command.
openssl s_client -connect "${REDIS_HOST}:${REDIS_PORT}" -servername "${REDIS_HOST}"

and then with the session established
AUTH ${REDIS_USERNAME} ${REDIS_PASSWORD}

That works fine.
What's the appropriate way to configure sequin to use AWS MemoryDB?

Thanks for the detailed report, @angrifel ! We'll debug the issue with MemoryDB and update here when we've gotten it working

Hey @angrifel - can you try again with the latest version, v0.6.24? We made some updates after testing with MemoryDB's TLS
Updated docs on redis config here:
https://sequinstream.com/docs/reference/configuration#redis-configuration

Hey @angrifel – been looking into this, will have an update soon!

Hey @angrifel --
Double-checked, and we were able to use Sequin with MemoryDB. So something is probably up with either the config of Redis+Sequin or networking.
Agreed that our logging around this leaves much to be desired. Just pushed v0.6.28-alpha.1 which includes more logging/detail around our connection to Redis and Postgres. Also adds more detail at the /health endpoint.
Let me know what you see in the logs? Be sure to turn on SSL for Redis, which is required by MemoryDB.
One thing that's strange to me is that you're getting a 200 on the health check, but seeing that error. Unexpected. That suggests we can connect to Redis, but something is happening when we run the query to acquire a mutex.

Hi @acco ! using the version you suggested I'm able to see new information.
Starting: start_commands.sh
Starting migrations
17:43:57.934 [info] Migrations already up
Migrations complete
Applying config
17:43:58.371 [info] Applying config
17:43:58.443 [notice]     :alarm_handler: {:set, {:system_memory_high_watermark, []}}
17:43:58.698 [notice] SYN[nonode@nohost] Adding node to scope <account>
17:43:58.700 [notice] SYN[nonode@nohost] Creating tables for scope <account>
17:43:58.702 [notice] SYN[nonode@nohost|registry<account>] Discovering the cluster
17:43:58.703 [notice] SYN[nonode@nohost|pg<account>] Discovering the cluster
17:43:58.704 [notice] SYN[nonode@nohost] Adding node to scope <replication>
17:43:58.704 [notice] SYN[nonode@nohost] Creating tables for scope <replication>
17:43:58.704 [notice] SYN[nonode@nohost|registry<replication>] Discovering the cluster
17:43:58.704 [notice] SYN[nonode@nohost|pg<replication>] Discovering the cluster
17:43:58.704 [notice] SYN[nonode@nohost] Adding node to scope <consumers>
17:43:58.704 [notice] SYN[nonode@nohost] Creating tables for scope <consumers>
17:43:58.704 [notice] SYN[nonode@nohost|registry<consumers>] Discovering the cluster
17:43:58.704 [notice] SYN[nonode@nohost|pg<consumers>] Discovering the cluster
17:43:59.049 [info] [libcluster:sequin] Listening for notifications on Postgres database
17:43:59.067 [info] Configuration :server was not enabled for SequinWeb.Endpoint, http/https services won't start
17:43:59.087 [info] Posthog Telemetry Reporter Started
17:43:59.087 [info] No config file YAML or path, skipping config loading
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
Config applied
Starting the app
17:44:02.051 [notice]     :alarm_handler: {:set, {:system_memory_high_watermark, []}}
17:44:02.072 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Adding node to scope <account>
17:44:02.072 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Creating tables for scope <account>
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|registry<account>] Discovering the cluster
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|pg<account>] Discovering the cluster
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Adding node to scope <replication>
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Creating tables for scope <replication>
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|registry<replication>] Discovering the cluster
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|pg<replication>] Discovering the cluster
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Adding node to scope <consumers>
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl] Creating tables for scope <consumers>
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|registry<consumers>] Discovering the cluster
17:44:02.073 [notice] SYN[sequin@__app_name__-c9dbcccf8-ndwcl|pg<consumers>] Discovering the cluster
17:44:02.081 [info] Running SequinWeb.Endpoint with Bandit 1.5.5 at :::8080 (http)
17:44:02.082 [info] Access SequinWeb.Endpoint at https://[https://some-domain.io]:8080
17:44:02.096 [info] Posthog Telemetry Reporter Started
17:44:02.160 [error] Redis error while trying to acquire mutex: {:error, %Redix.Error{message: "MOVED 13559 __app_name__-120dcb9-0001-001.__app_name__-120dcb9.ld71gd.memorydb.us-west-2.amazonaws.com:6379"}}
17:44:02.214 [info] [libcluster:sequin] Listening for notifications on Postgres database
17:44:03.096 [info] Starting Tracer.Server for account e2638214-1f87-4090-84d7-8ade703477fc
17:44:03.553 [warning] [libcluster:sequin] unable to connect to :"sequin@__app_name__-7b5896958-fkkxx"
17:44:03.554 [error] [libcluster:sequin] Failed to connect to node: sequin@__app_name__-7b5896958-fkkxx
17:44:05.310 request_id=GBIH22HGx-9QKMkAAA-B [info] GET /health
17:44:05.315 request_id=GBIH22HGx-9QKMkAAA-B [info] Sent 200 in 4ms
17:44:06.107 request_id=GBIH25E_fFVQKMkAAA-h [info] GET /health
17:44:06.111 request_id=GBIH25E_fFVQKMkAAA-h [info] Sent 200 in 4ms
17:44:07.162 [error] Redis error while trying to acquire mutex: {:error, %Redix.Error{message: "MOVED 13559 __app_name__-120dcb9-0001-001.__app_name__-120dcb9.ld71gd.memorydb.us-west-2.amazonaws.com:6379"}}

@angrifel Ah! It appears you're running Redis in cluster mode, which our adapter doesn't currently support. Looking to this now.

@angrifel It's going to take a little effort to use our adapter with clustered Redis. Continuing our investigation tomorrow and I'll report back

@angrifel Just an update: We're still working on adding cluster support to our Redis connection.


Update developer guide for add, addmcq and delete command

Looks good! I will review it after lunch!

Everything looks good except that I think the arguments for the parse method in the sequence diagrams should have "".
i.e. it should be parseCommand("add q/question ans/ Answer") instead of just parseCommand(add q/question ans/ Answer)

From the diagrams in addressbook's documentation and the test command documentation, they don't seem to be using the "". I'm not so sure whether it would be best to follow their practices though.

The diagram looks good, however I think that the AddOpenEndedQuestionCommand should have a cross indicating that it is no longer referenced after the execute() method is called on it.

I'll do it in another branch, cause I try to solve the conflict locally but cannot push to my repo.


+traceprocessors  causes crash.

Original issue: https://charm.cs.illinois.edu/redmine/issues/834

No body.

Original date: 2015-09-18 13:17:11

Offloading Ronak.

Original date: 2015-09-18 13:18:27

In order to get it running, I had done the following change:
diff --git a/src/ck-perf/trace-projections.C b/src/ck-perf/trace-projections.C
index 41c225e..5876e14 100644
--- a/src/ck-perf/trace-projections.C
+++ b/src/ck-perf/trace-projections.C
`` -1045,7 +1045,7 `` TraceProjections::TraceProjections(char **argv):
        currentPhaseID(0), lastPhaseEvent(NULL)
 {
   //  CkPrintf("Trace projections dummy constructor called on %d\n",CkMyPe());
-
+  _logPool = NULL;
   if (CkpvAccess(traceOnPe) == 0) return;

   CtvInitialize(int,curThreadEvent);

Original author: Probir Roy
Original date: 2015-09-24 21:46:41

I could not regenerate the bug. I ran "./charmrun ++local ./jacobi3d.prj 64 64 +p32 +traceprocessors 3 ++verbose". I am using netlrts build.
I have attached the output as reference.

Original author: Probir Roy
Original date: 2015-10-06 18:31:45

Nikhil to add the fix he has, the bug is not reproducible with simple cases

Original date: 2015-10-13 19:23:50

~~https://charm.cs.illinois.edu/gerrit/#/c/856/~~ https://github.com/UIUC-PPL/charm/commit/0e62935a5d15a0c86e9d7b4114c3a8ca38f33b2e

Original date: 2015-11-11 03:05:25

Set status back to Merged so that we can distinguish whether the code was changed in some way, or the fix was elsewhere. Both are non-open states from Redmine's perspective.


Trim lines for changelog content

We need to trim the line to eliminate extra spaces as more importantly we need to remove any extra whitespace like line endings.

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow


feature request Add .pylintrc to define formatting standards for PR's

Propose adding a .pylintrc file to define formatting standards for PR's if that is an interest of core developers.

Yes. Or the other way round: provide a .pylintrc which silences all the warning which the core developers ignore anyway, so that users/contributors don't get a full screen of warnings. My own .pylintrc for T2T code follows, but I am not a core developer and I guess it is missing many parts.
[FORMAT]

#max-line-length=100
indent-string='  '

[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
# Including TODO into the list of problems is a bad idea, I think.
notes=FIXME,XXX

[MESSAGES CONTROL]

# The purpose of locally disabling a warning is to disable it:-).
# If needed we can detect those places with `ack 'pylint: disable'`.
disable=locally-disabled,locally-enabled

Funny this came in today as I've just pushed out a pylintrc as well as adding pylint to the Travis tests which will auto-trigger for PRs.


Deprecation warning when installing pyperclip under Python 3.11.0

Probably you're already aware of this, but just in case not ...
I just installed Python 3.11.0, and next went to install pyperclip, using pip 22.3.  Got a deprecation warning from pip about having to use a legacy method.  See attached screenshot.  Basically, it looks like pip wants you to use a project.toml file and a wheel package.
hth!  And thanks, as always, for pyperclip.

I believe you can work around this locally by installing wheel yourself.
But both your suggestions are good, and see https://github.com/asweigart/pyperclip/issues/213 for uploading a wheel to PyPI.

Thanks, @hugovk.  I am happy enough for the moment to have pyperclip installed.  I just thought @asweigart might want to know about this for his own packaging purposes.

This issue could easily be resolved by replacing setuptools with flit as the build system.


Initial SymCrypt + SymCrypt-OpenSSL integration

Based on Spencer's previous work (#1833), but updated to pull jitterentropy-library separately, and address comments on that PR.
Still WIP:

Need to publish changes to SymCrypt and SymCrypt-OpenSSL repos that this PR relies on

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[ ] The toolchain has been rebuilt successfully (or no changes were made to it)
[ ] The toolchain/worker package manifests are up-to-date
[ ] Any updated packages successfully build (or no packages were changed)
[ ] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[ ] All package sources are available
[ ] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/tools/cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[ ] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[ ] All source files have up-to-date hashes in the *.signatures.json files
[ ] sudo make go-tidy-all and sudo make go-test-coverage pass
[ ] Documentation has been updated to match any changes to the build system
[ ] Ready to merge

Summary

What does the PR accomplish, why was it needed?
Change Log

Change
Change
Change

Does this affect the toolchain?

YES/NO
Associated issues

#xxxx

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-YYYY-XXXX

Test Methodology

Pipeline build id: xxxx

Thanks for making these changes and overall LGTM. I do see our cgmanifest action is unable to pull the tarball from the github URLs provided. Could you check and make sure we can pull the source tarball from the Symcrypt repo?

I have just published the required changes to the SymCrypt repo, and the cgmanifest action seems to be happy now.


Change Bundler from rollup to tsup

feat(lunox-core): ability to run command without service provider
chore(lunox-core): change bundler to tsup
chore(lunox-auth): change bundler to tsup
chore(lunox-eloquent): ignore database.sqlite
chore(lunox-eloquent): change bundler to tsup
chore(lunox-typeorm): change bundler to tsup
chore(lunox-prisma): change bundler to tsup
chore(lunox-auth): change bundler to tsup
chore: change .mjs to .js for consistency
chore(lunox-core): change output extension to .js
chore(lunox-test): change bundler to tsup
chore(lunox-eloquent): change build extension to .js
chore(lunox-typeorm): change build extension to .js
chore(lunox-prisma): change build extension to .js
chore(lunox-session): change bundler to tsup
chore(lunox-auth): change output extension to .js
chore(lunox-event): change bundler to tsup
chore(lunox-filesystem): change bundler to tsup
chore(lunox-view): change bundler to tsup
chore(lunox-view-plugin-svelte): change bundler to tsup
chore(lunox-view-plugin-react): change bundler to tsup
chore(lunox-filesystem): bump dependencies
chore(lunox-mail): change bundler to tsup
chore(lunox-validation): change bundler to tsup
chore(lunox-zod): change bundler to tsup
fix(lunox-core): Console Kernel not register providers
chore(preset-api): change bundler to tsup
refactor(lunox-core): move common types to contracts
chore(lunox-auth): change experimentalDts to dts for module augmentation
chore(lunox-session): change experimentalDts to dts for module augmentation
chore(lunox-validation): change experimentalDts to dts for module augmentation
chore(lunox-zod): change experimentalDts to dts for module augmentation
chore(preset-api): separate artisan command for production and development
chore(preset-react): change bundler to tsup
chore(preset-svelte): change bundler to tsup
docs: update README

Please not that tsup experimentalDts still have issue for same cases. Module augmentation not supported yet, so some packages type definition still bundled using dts
This PR remove tsc and rollup as dev dependency, switched to tsup for better bundling speed and emitDecorator support


Error: Required parameter: mimeType, even the fact it is provided.

I am creating new issue because I was able to track the code via chrome devtools, and it seems to me it is BE bug.
Previously I have mentioned it here: https://github.com/google/google-api-nodejs-client/issues/963#issuecomment-377154737
I used this code with combination with this code as starting point.
it looks like this:
// taken from https://developers.google.com/drive/v3/web/quickstart/nodejs

const fs = require('fs');
const path = require('path');
const os = require('os');
const uuid = require('uuid');
const readline = require('readline');
const google = require('googleapis');
const googleAuth = require('google-auth-library');

// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/drive-nodejs-quickstart.json
const SCOPES = [
    // 'https://www.googleapis.com/auth/drive',
    // 'https://www.googleapis.com/auth/drive.appdata',
    // 'https://www.googleapis.com/auth/drive.file',
    // 'https://www.googleapis.com/auth/drive.metadata',
    // 'https://www.googleapis.com/auth/drive.metadata.readonly',
    // 'https://www.googleapis.com/auth/drive.photos.readonly',
    'https://www.googleapis.com/auth/drive.readonly'
  ];
const TOKEN_DIR = './.credentials/';
const TOKEN_PATH = TOKEN_DIR + 'drive-nodejs-quickstart.json';

// Load client secrets from a local file.
fs.readFile('client_secret.json', function processClientSecrets(err, content) {
  if (err) {
    console.log('Error loading client secret file: ' + err);
    return;
  }
  // Authorize a client with the loaded credentials, then call the
  // Drive API.
  // authorize(JSON.parse(content), listFiles);
  // authorize(JSON.parse(content), listMajors);
  authorize(JSON.parse(content), (oauth2Client) => {
    const drive = google.drive({
      version: 'v3',
      // auth: sampleClient.oAuth2Client
      auth: oauth2Client
    });

    downloadFile(drive, '1n_8B1lQuXf69zfTwzvBMDkLFckeDq-UxnTvFaffWZvk', () => {
      console.log('test file donwloaded');
    });
  });
});

/**
 * Create an OAuth2 client with the given credentials, and then execute the
 * given callback function.
 *
 * @param {Object} credentials The authorization client credentials.
 * @param {function} callback The callback to call with the authorized client.
 */
function authorize(credentials, callback) {
  var clientSecret = credentials.installed.client_secret;
  var clientId = credentials.installed.client_id;
  var redirectUrl = credentials.installed.redirect_uris[0];
  var auth = new googleAuth();
  var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);

  // Check if we have previously stored a token.
  fs.readFile(TOKEN_PATH, function(err, token) {
    if (err) {
      getNewToken(oauth2Client, callback);
    } else {
      oauth2Client.credentials = JSON.parse(token);
      callback(oauth2Client);
    }
  });
}

/**
 * Get and store new token after prompting for user authorization, and then
 * execute the given callback with the authorized OAuth2 client.
 *
 * @param {google.auth.OAuth2} oauth2Client The OAuth2 client to get token for.
 * @param {getEventsCallback} callback The callback to call with the authorized
 *     client.
 */
function getNewToken(oauth2Client, callback) {
  var authUrl = oauth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: SCOPES
  });
  console.log('Authorize this app by visiting this url: ', authUrl);
  var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });
  rl.question('Enter the code from that page here: ', function(code) {
    rl.close();
    oauth2Client.getToken(code, function(err, token) {
      if (err) {
        console.log('Error while trying to retrieve access token', err);
        return;
      }
      oauth2Client.credentials = token;
      storeToken(token);
      callback(oauth2Client);
    });
  });
}

/**
 * Store token to disk be used in later program executions.
 *
 * @param {Object} token The token to store to disk.
 */
function storeToken(token) {
  try {
    fs.mkdirSync(TOKEN_DIR);
  } catch (err) {
    if (err.code != 'EEXIST') {
      throw err;
    }
  }
  fs.writeFile(TOKEN_PATH, JSON.stringify(token));
  console.log('Token stored to ' + TOKEN_PATH);
}

/**
 * Lists the names and IDs of up to 10 files.
 *
 * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
 */
function listFiles(auth) {
  var service = google.drive('v3');
  service.files.list({
    auth: auth,
    pageSize: 10,
    fields: "nextPageToken, files(id, name)"
  }, function(err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
      return;
    }
    var files = response.files;
    if (files.length == 0) {
      console.log('No files found.');
    } else {
      console.log('Files:');
      for (var i = 0; i < files.length; i++) {
        var file = files[i];
        console.log('%s (%s)', file.name, file.id);
      }
    }
  });
}

// src: https://github.com/google/google-api-nodejs-client/blob/master/samples/drive/download.js
function downloadFile (drive, fileId, callback) {
  // const filePath = path.join(os.tmpdir(), uuid.v4());
  const filePath = path.join(__dirname, 'test' + uuid.v4() + '.csv');
  console.log(`writing to ${filePath}`);
  const dest = fs.createWriteStream(filePath);
  let progress = 0;
  // https://github.com/google/google-api-nodejs-client/blob/53149a164ab2972c7f821bb98444efd643ae471e/samples/drive/export.js
  // https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents
  drive.files.export({
      fileId: fileId,
      mimeType: 'text/csv' // <----------------------------------- MIME type PROVIDED, look ma :)
  }, {
      responseType: 'stream'
  },function(err, response){
      if(err) throw err;

      response.data.on('error', err => {
          console.error('Error downloading file.');
          throw err;
      }).on('end', ()=>{
          console.log('Done downloading file.');
          callback(filePath);
      })
      .pipe(dest);
  });
}

but getting error:
quickstart.js:166
      if(err) throw err;
              ^

Error: Required parameter: mimeType
    at RequestError.Error (native)
    at new RequestError (/path/node_modules/google-auth-library/lib/transporters.js:34:42)
    at Request._callback (/path/node_modules/google-auth-library/lib/transporters.js:96:27)
    at Request.self.callback (/path/node_modules/request/request.js:186:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (/path/node_modules/request/request.js:1163:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at IncomingMessage.<anonymous> (/path/node_modules/request/request.js:1085:12)

I was inspecting the code by using:
node --inspect --debug-brk quickstart.js
steping trough export method and mimeType was all the time there..
I dont know how to check the request from node using this example code.. because the devTools does not have network tab in this mode :/
But it really seems the error comes from backend.
Or at least could you provide me a hint how to check the request send to BE, wheather it has mimeType param attached?
Many thanks :)

I have also found the SO question here The answer provided did not helped.

Greetings!  We have a working example of this right a here:
https://github.com/google/google-api-nodejs-client/blob/master/samples/drive/export.js
From your callstack, it looks like either a.) you have an old version of googleapis installed, or b.) you have an old version of google-auth-library installed.
Check to make sure in your package.json you have:

Version 28.0.1 of googleapis
NO VERSION of google-auth-library in your package.json.

Please try this and let me know how it goes 👍

I did not expected that I could have outdated packages.. because my colleague make the  repo just one or two weeks ago.. he made an example with listing the files from drive, my task is to export google docs sheet as csv into our node server.. so I am here now.. :)
after updating packages as you suggested, my code has this error:
quickstart.js:59
  var auth = new googleAuth();
             ^

TypeError: googleAuth is not a constructor
    at authorize (/path/quickstart.js:59:14)
    at processClientSecrets (/path/quickstart.js:35:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:447:3)

and so I was trying to make your example from link to work, and I am stuck in there too, on:
400. That’s an error.
Error: invalid_request
Missing required parameter: client_id

even the fact that there is clinet_id in oauth2.keys.json, under web namespace as your sampleClient is expecting.. :/
All I need is to read a sheet as csv, why is this so hard :/


Is it possible to export the details of all the jobs that has been processed in the queue in an excel file from bull-board?

Hey, currently we are not supporting the option to export any data from bull-board and it's not really in our plans for now 😅


Properly pop scope on empty elements

The previous behavior would add a scope to the stack when opening a self closing element, but wouldn't pop it after the element was written, this caused the scope stack to desync with the document.

An embarrassing mistake! Thank you very much!


✨ Making experimental factory functions of NotEmptyList.Companion available on Java

📝 Description
We would like to make the experimental factory functions of the NotEmptyList.Companion type with the following signature available for Java users:
fun <E> NotEmptyList.Companion.create(collection: Collection<E>): NotEmptyList<E>
fun <E> NotEmptyList.Companion.createOrNull(collection: Collection<E>): NotEmptyList<E>?

fun <E> NotEmptyList.Companion.of(head: E, vararg tail: E): NotEmptyList<E>

This means that their compatibility should be tested and their documentation should indicate their usage from Java code.
🔗 Dependencies
This issue is blocked by the following ones:

[x] #352
[x] #435

✅ Checklist

[ ] Make the create(Collection<E>) function available for Java users, test its compatibility, update the public API binaries and update the unreleased changelog.
[ ] Make the createOrNull(Collection<E>) function available for Java users, test its compatibility, update the public API binaries and update the unreleased changelog.
[ ] Make the of(E, vararg E) function available for Java users, test its compatibility, update the public API binaries and update the unreleased changelog.
[ ] Close this issue as completed and update tracking ones if present.

Another issue for stabilizing these functions will be created while resolving #619.


Update 05-sqlite.mdx

fixing a typo

Duplicate of #819

didn't check before opening pr, closing.


update() does not actually update peers.json, prints them though

We can get the list of peers of a node. It would be useful to contact them to see if they're up. Problem is, most don't expose their 26657 RPC interface. No problem, we just set timeout of 2 seconds on the HTTP request (actually 1s is enough, we just want GET /status)
Not so experienced with goroutines and channels though.
Here I clearly close the channel in the wrong place, so the function returns earlier than it should.
It should be called by the last goroutine that contacts a peer but that doesn't work because no goroutine knows if it's the last one or not. Must be a different way of doing this.

maybe @alexanderbez 's node crawler implementation at https://github.com/cosmos/atlas/tree/main/server/crawl being used at https://atlas.cosmos.network/nodes would be a good example to base it off of?
I'm not sure how to handle your issue with goroutines but imagine stackoverflow or traditinal golang support channels might also be good to try: https://stackoverflow.com/questions/tagged/go
I'll post this issue in the discord as well

Fixed with 4f3caa5f053fd487d04ef2498c9cc4867bdaeb15


Remove "Inner Circle" and "Outer Circle"

Since Homebrew is an Open-Source community, we want to promote equality between all members.
In the Members page, The HackerSpace Core Team and Moderators can be assigned a separate tag that makes the community more inclusive.

just clearing up, we want the two tabs 'inner' and 'outer' circle to be removed and all participants come under a common tag 'members' or something like that?

yes.

check out PR #57  :)

hey, why was the PR reverted? any changes?


Bj task 20111

What I Did
I added a max-height rule to make sure the page isn't super long when someone is viewing a long README.md file in the Helm Chart editor.
How I Did it

Add a max-height value to the HelmChartInfo component to add a scrollbar for long README files
Put a ternary on a new line so it's easier to compare the string values
Removed an unnecessary anonymous function
added the lovely classnames package to the init package.

How to verify it

Create a new watch by adding a popular Helm chart URL like DataDog or Graphana
Go through the flow until you get to the editor page.

Description for the Changelog
Fixed an issue where long README.md files on the helm chart editor page would make the page extremely long when viewing the README.md file with the YAML editor.
Picture of a Ship (not required but encouraged)

NOTE: Force push was used to rebase the cypress fixes from #949


agate: 2.3.0 -> 2.4.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/mbrubeck/agate/releases.
meta.description for agate is: "Very simple server for the Gemini hypertext protocol"
meta.homepage for agate is: "https://proxy.vulpes.one/gemini/gem.limpet.net/agate"
meta.changelog for agate is: "https://proxy.vulpes.one/gemini/gem.limpet.net/agate"
Updates performed

Rust version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 2.4.1 with grep in /nix/store/q4j0r8yfc26310c5fam7rikfv3njd6c0-agate-2.4.1

directory tree listing: https://gist.github.com/164619ab0a760008f24ff994f0965cb4

du listing: https://gist.github.com/71bf4bb5bef1f32c28c282a2b9f072de

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
agate

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/q4j0r8yfc26310c5fam7rikfv3njd6c0-agate-2.4.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A agate https://github.com/r-ryantm/nixpkgs/archive/a0d20c72d94e99b58d7a810072eb7a870eadbc33.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/q4j0r8yfc26310c5fam7rikfv3njd6c0-agate-2.4.1
ls -la /nix/store/q4j0r8yfc26310c5fam7rikfv3njd6c0-agate-2.4.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

agate

Maintainer pings
cc @06kellyjac for testing.

Result of nixpkgs-review pr 112468 at a0d20c72 run on aarch64-linux 1

1 package built:

agate

Result of nixpkgs-review pr 112468 run on x86_64-linux 1

1 package failed to build:

agate

Result of nixpkgs-review pr 112468 run on x86_64-linux 1

1 package failed to build:

agate

Had some troubles with nixpkgs-review failing for some reason but I did a nix-build of these changes in a container and it worked well


console error on deployer API endpoint

The browser console keeps showing error messages accessing the deployer api which is not good. I think that the project should only access the deploy api (using POST) method to create new nodes based on a flag (such as DEPLOYER_ENABLED=yes or no). This should not be removed, rather only access it if deployer is enabled.

The configurable deploy api should include fqdn so that the deploy service is separate from console.

The body of the request should be very well defined so that the implementation can be compatible cross different implementations.

Hmm this already exist, the flag import_only_enabled is set in the default settings.

https://github.com/hyperledger-labs/fabric-operations-console/blob/main/packages/athena/json_docs/default_settings_doc.json#L109

This disables the deployer calls, however it will log a warning for the deployer calls.

https://github.com/hyperledger-labs/fabric-operations-console/blob/main/packages/athena/libs/deployer_lib.js#L872

Can you post an example?

closing, inactivity


Pagination doesn't work when Restangular is used for ajax request

Hi,
I am trying to load my data with Restangular get request. It loads the data, but it doesn't slice although I set the slicing for pagination.
My code looks like this:
$scope.tableParams = new ngTableParams({
    page: 1,            // show first page
    count: 10,          // count per page
    sorting: {
        name: 'asc'     // initial sorting
    }
}, {
    total: 0,           // length of data
    getData: function($defer, params) {

		Restangular.one('users').getList()
		.then(function(response) {
			$scope.userList = response;
			params.total(response.length);

			var orderedData = params.sorting() ? $scope.userList = $filter('orderBy')($scope.userList, params.orderBy()) :  $scope.userList;

			$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));

		});

    }
});

I use ng-repeat like this:
   ng-repeat="u in userList"

Does ngTable work with Restangular(promise out of box in each request) or should I use ngResource+promise?

Sorry for the bump, but with $defer being deprecated a new solution is used. Restangular's promise does not seem to work when provided as getData parameter.

for micros123 message


PLT-8076 create marconi sidechain experimental

Provides a skeleton marconi-sidechain-experimental package using the marconi-chain-index interface, rather than the marconi-chain-index-legacy interface of the original marconi-sidechain.
The package currently:

provides echo, target addresses and epoch nonce endpoints
creates stubs for other endpoints just to fix the module structure as in marconi-chain-index.
runs the indexers successfully when executed (so long as there is a running node to communicate with)
provides an identical CLI to marconi-sidechain and includes two CLI-related golden tests from the original

I reset the version clock to 0.0.1 somewhat arbitrarily.
Pre-submit checklist:

Branch

[X] Tests are provided (if possible)
[X] Commit sequence broadly makes sense and have useful messages
[ ] Important changes are reflected in changelog.d of the affected packages
[X] Relevant tickets are mentioned in commit messages

PR

[ ] (For external contributions) Corresponding issue exists and is linked in the description
[X] Targeting main unless this is a cherry-pick backport
[X] Self-reviewed the diff
[X] Useful pull request description
[ ] If relevant, reference the ADR in the PR and reference the PR in the ADR
[X] Reviewer requested

@neilmayhew Thanks as always for the comments.
We likely will want to wait on merging this until after a brief team discussion tomorrow morning about the versioning approach. Right now the new package's version is 0.0.1 but might instead be set to be the same as for marconi-core and the rest.

It looks like you had to make the version number the same as the rest of the packages in order to get CI pass. Is that correct?

It looks like you had to make the version number the same as the rest of the packages in order to get CI pass.

I did that while investigating the CI issue, but in the end I don't believe that was the problem. I did not put it back to 0.0.1 since we will have a follow-up anyway to determine the versioning. But I can if you prefer it.


Use ariadne to produce pretty diagnostics

TODO:

[ ] handle all of the TypeErrors
[ ] handle provenance chains so that we can report errors on inferred types, e.g. let add = (a, b) => a + b; add("hello", "world")

Codecov Report

Merging #351 (3dd670f) into main (8fbd8b2) will decrease coverage by 0.00%.
The diff coverage is 92.85%.

@@            Coverage Diff             @@
##             main     #351      +/-   ##
==========================================
- Coverage   88.87%   88.87%   -0.01%
==========================================
  Files          39       40       +1
  Lines        5647     5671      +24
==========================================
+ Hits         5019     5040      +21
- Misses        628      631       +3

Impacted Files
Coverage Δ

crates/crochet/src/lib.rs
0.00% <0.00%> (ø)

crates/crochet_infer/src/unify.rs
91.08% <ø> (ø)

crates/crochet/src/diagnostics.rs
100.00% <100.00%> (ø)

crates/crochet/tests/fixture_tests.rs
77.19% <100.00%> (ø)

crates/crochet_ast/src/types/provenance.rs
50.00% <100.00%> (+16.66%)
:arrow_up:

crates/crochet_infer/src/infer_type_ann.rs
82.91% <100.00%> (+0.21%)
:arrow_up:

crates/crochet/src/compile_error.rs
0.00% <0.00%> (-100.00%)
:arrow_down:

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


Feature: Add a timer to spells

When a character casts a spell with a set duration of rounds, the system displays a timer next to the spell with the remaining rounds.
Added bonus feature: the timer counts down automatically, when it's the characters turn.

Would it at least be possible to show a timer field that the user can countdown manually? Otherwise, there is no really good place to track the spell.

This can now be solved by the user creating an associated "Spell Effect" that has the same settings as the spell (See the Spell Effects compendium in 1.3.0 for inspiration). Those effects can then be dragged onto the target or the caster, or whoever you want, and if you're in combat, it will track the duration in the Effect Panel when selecting a token for that actor.
Closing this with that remark!

See the following clip (And yes, I noticed it says Seconds instead of Rounds!)
https://user-images.githubusercontent.com/105067023/233906628-75262142-3bf7-4aa9-9986-a4dcabc29553.mp4


Attach_device not working

I'm currently on iOS 10.x, compiling release/3.5 for the iOS app and have a GitLab mattermost server 3.7. Most features work correctly except for the attach_device endpoint.
I get the following error after that endpoint is being called:

Error: statusCode=404 data=Optional({"id":"api.context.404.app_error","message":"Sorry, we could not find the page.","detailed_error":"There doesn't appear to be an api call for the url='/api/v3/users/attach_device'.  Typo? are you missing a team_id or user_id as part of the url?","status_code":404})

Hi @migue1s - when are you getting that error?
Nothing has changed there, so not sure what could be causing it. Push notifications are working on the compiled apps in the app store, so the attach_device seems to be working for us

I am getting the error as soon as I log in or restart the app. It seems like many requests are being sent to that endpoint but after a while they will all error out with that json.

have you tried to hit the above url manually? if so what response do you get?

I get the same response as doing it via iOS @enahum. The team/userId isn't being sent, however I tried to manually look them up in the UserDefaults and they simply are never being set nor are they set to be part of the body of the request either... I'm doing a Gitlab login by the way.

After rechecking on iOS, it seems that the following logs are also getting printed out as part of the error handling:

Failed attaching device id to session
Sorry, we could not find the page.

Further testing revealed that this doesn't happen with email/pass auth, only when logging in through gitlab.

Hi @migue1s,
The GitLab login for Mattermost was fixed with version 3.8 released April 16th.  Are you still experiencing a problem?
I'm not sure whether GitLab has updated yet but that might be the problem is you're still experiencing this.

Hi @migue1s,
Circling back to find out how it's going and whether your issue is solved?

Closing this issue off due to inactivity.  Please feel free to reopen it if you are still experiencing issues.


Ucontext creates reference to uninitialized memory

See https://github.com/nix-rust/nix/blob/50f55e77df63ed7ab9b8aad348653d44dce80ab2/src/ucontext.rs#L17
You probably want to use mem::zeroed() here.
Note also that newer ucontext_t have a shadow stack field that's not available in older versions. Since the ucontext_t struct becomes larger, this should be able to work in a backward compatible way.

Also, Ucontext appears to be untested.

That shouldn't be a problem.  The value is only uninitialized until it gets initialized two lines lower.  Or is there something else I'm missing?

If one uses mem::uninitialized or mem::zeroed, one needs to check for all ucontext_t on all platforms that these bit-patterns aren't invalid. If they are, the behavior is undefined, and this is a type of UB that LLVM exploits (e.g. if uncontext_t contains a bool).
The easiest safest way of creating an uninitialized or zero-initialized libc::ucontext_t is via MaybeUninit, which also provides an API to initialize the bytes of its contents without invoking UB, e.g., due to the creation of references to an invalid value, which is also another type of UB that LLVM exploits (e.g. by assuming dereferenceable).
Since ucontext_t is kind of outside of nix control, I'd say use MaybeUninit if you can, and otherwise do something like this to avoid all UB:
union MaybeUninit_ { x: ucontext_t, y: () }
// initialize the storage of ucontext_t to uninitialized, while initializing the union:
let mut context = MaybeUninit { y: () };
// create a raw pointer to ucontext_t without creating a reference to it:
let ptr = &mut context as *mut _ as *mut ucontext_t;
// ...use ptr...
// Once ucontext_t properly initialized, pull it out
let context = unsafe { context.x };

Closing in favor of #1096 .


change package_source_code.sh to include tests subdir in releases

Seemed like the discussion on [1] ended with a consensus to include tests in source releases, so submitting a PR to do that.
[1]<EMAIL_ADDRESS>


refactor ioutil usage

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
ioutil functions have been deprecated. This MR replaces usages of those functions with the recommended ones. More details are present in the linked issue
Which issue(s) this PR fixes:

Fixes https://github.com/kubernetes/utils/issues/298
Special notes for your reviewer:
Release note:

/lgtm


Increment version for textanalytics releases

Increment version for textanalytics releases

Dihantar daripada telefon Huawei saya-------- Mesej asal --------Daripada: Azure SDK Bot<EMAIL_ADDRESS>Kha, 28 Mei 2020, 3:23 PGKepada: Azure/azure-sdk-for-js<EMAIL_ADDRESS>Subscribed<EMAIL_ADDRESS>[Azure/azure-sdk-for-js] Increment version for textanalytics releases (#9136)Increment version for textanalytics releases
You can view, comment on, or merge this pull request online at:
  https://github.com/Azure/azure-sdk-for-js/pull/9136
Commit Summary
Increment package version after release of azure-ai-text-analytics
File Changes
M
sdk/textanalytics/ai-text-analytics/CHANGELOG.md
(3)

M
sdk/textanalytics/ai-text-analytics/package.json
(2)

M
sdk/textanalytics/ai-text-analytics/src/constants.ts
(2)

M
sdk/textanalytics/ai-text-analytics/src/generated/generatedClientContext.ts
(2)

Patch Links:
https://github.com/Azure/azure-sdk-for-js/pull/9136.patchhttps://github.com/Azure/azure-sdk-for-js/pull/9136.diff
—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or unsubscribe.

never merged because this library went GA shortly after preview.5


Reposition Compass OSM Droid

I want to reposition compass in corner of the map with current height that has been set based on height of device, but it's always failed, the compass is never shown. Can you help me, how to set the compass position, so it will be responsive in any device. Best regard from me. Thank You

@kurniawanrizzki  are you referring to org.osmdroid.views.overlay.compass.CompassOverlay?
I think the solution would be to extend that class and override the bits in the constructor. There's also the setCompassCenter method. There's no javadocs so I'm not entirely sure. If you come up with a solution, please let us known so we can update the docs

Thank you for your advice, yup it can, but too complex for me. I was solve the problem with current formula depend on device density.

I'm going to reopen this as a place holder for figuring this out in the future

with my solution, the issue still occurred when the app run at different resolution, have any idea to solve it?
In past, i solve with this formula
compassPadding = (osmMapView.getProjection().getScreenReact().getExactCenterY()/3.4f)/deviceDensity

@spyhunter99 one question, is possible to apply map rotation when pinch to the map similar google maps?

https://github.com/osmdroid/osmdroid/wiki/How to use the osmdroid library#how-to-enable-rotation-gestures

Is it use pinch (two finger) to rotate the map?I have try, but it still not working. Is there difference between osm bonuspack by MKergall and osmdroid, please tell me about it, because there are some different issue when i try install them. Thank You

@kurniawanrizzki sorry i missed this one. This should do it
 mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
          mRotationGestureOverlay.setEnabled(true);

          mMapView.setBuiltInZoomControls(true);
          mMapView.setMultiTouchControls(true);

@kurniawanrizzki sorry i missed this one. This should do it
 mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
          mRotationGestureOverlay.setEnabled(true);

          mMapView.setBuiltInZoomControls(true);
          mMapView.setMultiTouchControls(true);

Repositioning the compass overlya... whats the simplemost way to do it?

Osm bonus pack depends on the project and adds  routing, kml processing and a bunch of other stuff
Moving the compass is not simple unfortunately

Right, you have to calculate the screen device weather the orientation change or not, and finally we done with it.
Sent from my Xiaomi Redmi 3 using FastHub

i think this is resolved with https://github.com/osmdroid/osmdroid/pull/907


Add note about iframe tags

Adds a note about how to embed Streamlit / Gradio Spaces in other webpages with <iframe> tags.
Related Slack thread: https://huggingface.slack.com/archives/C02EMARJ65P/p1667902642770909

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

I'm ok with merging this but @lewtun has to commit to update it (with screenshots) when (internal issue)  is shipped :)
Deal?

Deal :)


Cannot create environment variable for logging category with periods

The logging configuration often uses namespaces (or namespace like strings, separated by periods) as category keys.
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}

The logging and configuration docs agree on creating environment variables for deep configuration structures.
Logging__LogLevel__Microsoft=Information

But, you can't use a period in a variable or environment variable name in any shell that I know of. It's not disallowed by the spec, apparently, but the various shells seem to avoid period in their implementations.
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02
https://tldp.org/LDP/abs/html/gotchas.html
# Logging__LogLevel__Microsoft.Hosting.Lifetime=Information
bash: Logging__LogLevel__Microsoft.Hosting.Lifetime=Information: command not found

So, how do we do this?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 346bbcf3-9f8e-b253-09fe-906195392783
Version Independent ID: 0e787ac2-1108-1d94-d62f-ccffa93e06c3
Content: Logging in .NET
Content Source: docs/core/extensions/logging.md
Product: dotnet-fundamentals
GitHub Login: @IEvangelist
Microsoft Alias: dapine

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7184a308-a254-9350-a5cd-5bced1f369ae
Version Independent ID: 726e3bf1-f367-d733-8933-bccc04da0e16
Content: Logging in .NET Core and ASP.NET Core
Content Source: aspnetcore/fundamentals/logging/index.md
Product: aspnet-core
Technology: aspnetcore-fundamentals
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@IEvangelist  @Rick-Anderson do you have an idea as to the answer? What does the environment variable system use to replace . when the setting contains a .?

@serpent5 can probably figure it out.

The environment variable provider doesn't give special treatment to a .: It only substitutes __ for :. @Rick-Anderson and I looked into this before, but couldn't find a way to make this particular setup work. I can't see that anything has changed here, either.

While this is a good question and fair observation to call attention to it, I do not believe it is a problem. Logging is the only example that I'm aware that has namespaces or various patterns like this within their configuration settings. And since it is logging, there is no real value in keeping it a secret, or securing it away in an environment variable - you know? I'd argue that is should remain in an appsettings.json file.

@IEvangelist fair points... but, we're not supposed to use environment variables for secrets (and that's not the only reason they're used, see DOTNET_ENVIRONMENT and others) and we don't always have an easy way to override or provide an appsettings file (thinking some CI/CD scenarios where your "services" like linked containers syntax is limited).

I was able to set an environment variable locally in my bash environment with this name (based on this SO), it just needed quotes around it:
env "Logging__LogLevel__Microsoft.Hosting.Lifetime=Information"

I confirmed that I see it in the env vars too.

Good find, thanks!

Can you set it to
env "Logging__LogLevel__Microsoft.Hosting.Lifetime=Error"

and verify it's working?

Can you set it to
env "Logging__LogLevel__Microsoft.Hosting.Lifetime=Error"

and verify it's working?
Nice work @IEvangelist

I've been testing it a lot this morning, I'm updating the article to also include cross-plat env var setting with notes/link to the SE bits I stumbled upon. See proposed changes here.

I think this needs to be evaluated again, specifically for apps running in containers. We are not able to set an environment variable that contains a period for a container. So, we are not able to configure logging upon deployment. In our case we only want to turn on Informational logging for a specific library, so not to flood the logs.

I've ran into exactly that this morning. We have a local development setup that overrides the appsettings through environment. It works with every variables but the log levels, which is quite ridiculous. While working with containers, you want to test your environment variables does not contain typos.
Would it be possible to translate the log levels '.' in '__' just like the ':' ?

This might only be tangentially related, but I'm having problems as well overriding logging configuration for certain namespaces through 'Application settings' (=environment variables) on Azure App Service.
In Kudu, the App Service SCM, I can see periods in the variable names get replaced with single underscores, which causes these override rules to not match anything and be ignored completely.

@IEvangelist your workaround you mentioned in your comment does not work for container deployments. This needs a code fix internally, so that periods are treated the same way as colons. Can this get looked at again?

Hi @johnwc, I did a bit of digging. I'm curious does this help you?

[Question] Allowed characters in Linux environment variable names: Accepted SO answer
[Question] Allowed characters in Linux environment variable names: Explanation and example of setting env var in UNIX

Also, What exactly have you tried in terms of setting env var? Did you define them in the ENV of a Dockerfile, or what?

K8 does not define environment variables in dockerfile. It generates the docker file based on automation, and it has no way of quoting values when creating the env variable. This issue needs to be handled on the .Net side of things, exactly how they currently handle the issue of colons in the name.

See also https://github.com/dotnet/AspNetCore.Docs/issues/17378 - systemd also does not allow dots in env names.

@IEvangelist this issue is not resolved, I reviewed your doc update and it did not cover anything about what everyone is stating does not work. And that is, using periods in environment variable names. Surrounding the entire my.var.name=value with quotes as you describe as a workaround only works in shell environments, and not with things like Kubernetes deployments.
@Rick-Anderson @IEvangelist can you please reopen this issue?

Hi @johnwc, Thanks for the follow-up. If that is the case, I'm not sure if this is a docs issue, it might need to get transferred to the product team if you believe that they'll need to change how env vars are parsed. Let's ask @maryamariyan, she might know.

We are running into a similar issue. We are running into a kubernetes environment and there is no way to configure the LogLevel for anything within a subsystem (e.g. this does not work Logging__LogLevel__System.Net.Http.HttpClient=Warning.  Trying to change this value with appsettings.json requires a change that goes through the entire CICD pipeline, rather than a configuration change that can be done at runtime as needed for production debugging (i.e. temporarily changing the LogLevel of a service to get more information).

We are also running into this issue.
Our existing deployment strategy relies on environment variables to change the logging levels which means relying appsettings.json would bring a lot more complexity into our solution. It really feels like environment variables should have a different strategy for parsing . so that we can safely setup logging levels for different categories.

@IEvangelist it's been a few months now with no response from @maryamariyan or product team. How can we get better attention for this issue?


Deprovision does not clarify how to handle active bindings

While reading the specification it was not clear to me what happens to bindings during a deprovision call. Are the bindings orphaned? or are they actively deleted by the broker? or should deprovision be disallowed if there are active bindings?

The implementation in Cloud Foundry is that the platform will not request a broker to delete the service that has existing bindings.
However, the broker could also choose to be defensive about not deleting a service with existing bindings.

I think that we should at least clarify this in the spec; it currently says two different things in two different places.
@avade since you're most familiar with the current behavior, would you mind making a PR to clarify?

I'd like to suggest the following outline of a proposal:

clarify in the spec that it is RECOMMENDED that platforms delete all Bindings prior to deleting an Instance
brokers MAY support deleting an Instance that still has bindings (causing a cascading delete), but if they don't then we'll specify the exact error that MUST be returned
platforms MAY attempt to delete an Instance that still has Bindings, but if they get the well defined error then they MUST delete the bindings first.

On this week's call we decided to force platforms to delete all bindings before they could delete an instance. I think there's a problem with this approach. Since there is no requirement or method by which a broker can return the list of existing bindings, if the platform loses track of all of the bindings for an Instance, it could get into a situation where it can never delete an instance because it can't delete bindings it doesn't know about.
While the more clean approach (no cascading deletes) might be preferred, given the current state of the spec I'm not sure we can make that change, so I'm inclined to think we're back to what I proposed in the previous comment.  I'll add this to the agenda for next week's f2f.


Added copy button to resource ID on resource page

This PR adds a copy button to the resource ID on the resource page and fixed branch issues from last PR - https://github.com/medplum/medplum/issues/2606

coverage: 94.301% (-0.02%) from 94.317% when pulling 525afa9741290a086104ee97d6745f28d3571adb on Abi-Liu:Copy-Button into 2b7c4b46ff001f718ecc4612d62c772917d0a43a on medplum:main.

Hi @Abi-Liu  - Awesome, thanks for submitting!
Normally I'd push for tests.  However, this one is surprisingly tricky to write tests for, because Mantine does some weird stuff with hover events and clipboard events.  I sat down and tried to write the tests myself, but it looks like it would be quite annoying to do with fireEvent.  Internally, Mantine uses user-event, which we should probably migrate to at some point.  I filed a ticket for that seperately: https://github.com/medplum/medplum/issues/2637
Thanks again!

Hey @codyebberson, I'll definitely keep tests in mind in the future. I need to get better at writing test cases so this will be good practice for me.


Enabled Glamor - Fails to take device /dev/dri/card0

I built xrdp + xorgrdp from the most recent releases utilizing this guide: https://gist.github.com/ehoppmann/0b10bcaa1e793f757d1caddbd7ec2300
However I seem to get permission errors for accessing /dev/dri/card0 but glamor_init returns ok, I don't see any improvement with CPU usage when moving windows around making me believe it's not actually accelerating anything.
I have made sure my user is in the video/render groups, I have also changed xorg to /usr/lib/xorg/Xorg. However thing seems to help.
[    83.230] Build Operating System: linux Ubuntu
[    83.230] Current Operating System: Linux nuc8i5beh 5.4.0-100-generic #113-Ubuntu SMP Thu Feb 3 18:43:29 UTC 2022 x86_64
[    83.230] Kernel command line: BOOT_IMAGE=/vmlinuz-5.4.0-100-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro
[    83.230] Build Date: 14 December 2021  02:14:13PM
[    83.230] xorg-server 2:1.20.13-1ubuntu1~20.04.2 (For technical support please see http://www.ubuntu.com/support)
[    83.230] Current version of pixman: 0.38.4
[    83.230]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[    83.230] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    83.230] (++) Log file: ".xorgxrdp.10.log", Time: Wed Mar  2 22:16:55 2022
[    83.231] (++) Using config file: "/etc/X11/xrdp/xorg.conf"
[    83.231] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    83.233] (**) Option "defaultserverlayout" "X11 Server"
[    83.233] (**) ServerLayout "X11 Server"
[    83.233] (**) |-->Screen "Screen (xrdpdev)" (0)
[    83.233] (**) |   |-->Monitor "Monitor"
[    83.236] (**) |   |-->Device "Video Card (xrdpdev)"
[    83.236] (**) |-->Input Device "xrdpMouse"
[    83.236] (**) |-->Input Device "xrdpKeyboard"
[    83.236] (**) Option "DontVTSwitch" "on"
[    83.236] (**) Option "AutoAddDevices" "off"
[    83.236] (**) Not automatically adding devices
[    83.236] (==) Automatically enabling devices
[    83.236] (==) Automatically adding GPU devices
[    83.236] (==) Automatically binding GPU devices
[    83.236] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    83.236] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    83.236]    Entry deleted from font path.
[    83.236] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[    83.236]    Entry deleted from font path.
[    83.237] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[    83.237]    Entry deleted from font path.
[    83.237] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[    83.237]    Entry deleted from font path.
[    83.237] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[    83.237]    Entry deleted from font path.
[    83.237] (==) FontPath set to:
        /usr/share/fonts/X11/misc,
        /usr/share/fonts/X11/Type1,
        built-ins
[    83.237] (==) ModulePath set to "/usr/lib/xorg/modules"
[    83.237] (II) Loader magic: 0x55b5865a7020
[    83.237] (II) Module ABI versions:
[    83.237]    X.Org ANSI C Emulation: 0.4
[    83.237]    X.Org Video Driver: 24.1
[    83.237]    X.Org XInput driver : 24.1
[    83.237]    X.Org Server Extension : 10.0
[    83.239] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c2
[    83.239] (II) xfree86: Adding drm device (/dev/dri/card0)
[    83.240] (EE) systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
[    83.240] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
[    83.242] (--) PCI:*(0@0:2:0) 8086:3ea5:8086:2074 rev 1, Mem @ 0xbf000000/16777216, 0x80000000/268435456, I/O @ 0x00004000/64, BIOS @ 0x????????/131072
[    83.242] (II) "glx" will be loaded. This was enabled by default and also specified in the config file.
[    83.242] (II) LoadModule: "dbe"
[    83.242] (II) Module "dbe" already built-in
[    83.242] (II) LoadModule: "ddc"
[    83.242] (II) Module "ddc" already built-in
...skipping...
[    83.278] (II) Loading sub module "glamoregl"
[    83.278] (II) LoadModule: "glamoregl"
[    83.278] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[    83.284] (II) Module glamoregl: vendor="X.Org Foundation"
[    83.284]    compiled for 1.20.13, module version = 1.0.1
[    83.284]    ABI class: X.Org ANSI C Emulation, version 0.4
[    83.284] rdpPreInit: glamor module load ok
[    83.305] (II) XRDPDEV(0): glamor X acceleration enabled on Mesa Intel(R) Iris(R) Plus Graphics 655 (CFL GT3)
[    83.305] rdpPreInit: glamor init ok
[    83.308] rdpScreenInit: virtualX 800 virtualY 600 rgbBits 8 depth 24
[    83.308] rdpScreenInit: pfbMemory bytes 1920000
[    83.308] rdpScreenInit: pfbMemory 0x7f7778038010
[    83.311] rdpSimdInit: assigning yuv functions
[    83.311] rdpSimdInit: cpuid ax 1 cx 0 return ax 0x000806ea bx 0x04100800 cx 0x7ffafbbf dx 0xbfebfbff
[    83.311] rdpSimdInit: sse2 amd64 yuv functions assigned
[    83.334] rdpScreenInit: glamor_init ok

First, what video card(s) are you using? Glamor only works for AMD/Intel cards right now, not Nvidia. If you want Nvidia, there's a special prototype that you can use.

This one is with a Intel Iris 655 I have also tried a Radeon Pro V520 and get it to the same point with glamor init ok but high cpu usage and can't even move a window around without stuttering.

My bad! I see it in the logs now. I was searching for it :). Anyway, I assume that XRDP works if you disable glamor?

it actually works even like this just don't see any performance improvement. I have also tried the standard apt-get xrdp way and that works fine as well (lacking glamor though)

@Xboarder56 - depending on how you user is added to those groups, the X server may not have inherited them. There are a few gremlins in this area (e.g. #1978)
You could try setting the permissions on the devices in /dev/dri/ directly with sudo chmod 666. It won't survive a reboot, but it might at least see if we can get over the permissions errors, and you can see if the performance is any better.

Thanks for the suggestion I tried changing it, then doing a sudo systemctl restart xrdp and no luck. Still getting the same permission denied error but further down in the xorg log glamor init ok.

It may not be a file permissions issue then. Or indeed, it might not be a problem at all. I don't personally know that bit of the code well enough to be sure.
You can find out whether the X server has got the correct group memberships by using ps -ef | grep Xorg to find the PID, and then looking in /proc/<pid>/status at the Groups line. More info on the proc status file is here.

Glamor uses /dev/dri/renderD128 which is the render node.  /dev/dri/cardX is used for 'mode setting'.  Mode setting is changing the resolution and other things.  xorgxrdp does not need access to /dev/dri/cardX, that error is normal.  I don't know how to tell Xorg to not query those.  I think it's trying to auto-detect stuff even tho we set that off in xorg.conf.
I think you are getting an accelerated session.  I like to use xvinfo to look for "GLAMOR Textured Video" to see if I got a glamor session.  If it's software, it says xorgxrdp something.  NVidia wrapper says nv something.
Use glxgears to test performance, moving a window around might not be obvious.
Note, an easy way to turn glamor off for testing, edit /etc/X11/xrdp/xorg.conf and change the renderD128 to something that does not exist.

So I actually ended up resolve this, but it seems to have hardly increased performance if at any. Is there anything specific I could check to try and see what the issue might be?
This is ubuntu 20.04 + ubuntu gnome variant. I also tried to get audio redirection working and modules are compiled but just doesn't seem to work. Checking audio settings I don't see any output device (not sure if this is an issue?)


Add AM test

Codecov Report

Merging #34 (fc24827) into master (2bac1cc) will decrease coverage by 0.82%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #34      +/-   ##
==========================================
- Coverage   54.25%   53.42%   -0.83%
==========================================
  Files           6        5       -1
  Lines         634      627       -7
==========================================
- Hits          344      335       -9
- Misses        290      292       +2

Impacted Files
Coverage Δ

src/UCX.jl
71.96% <0.00%> (-0.39%)
:arrow_down:

src/api/libucp_api.jl
10.88% <0.00%> (-1.04%)
:arrow_down:

src/api.jl

Continue to review full report at Codecov.

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


Fix new clippy warnings

Rust 1.64 brought new Clippy warnings, this change addresses them.

Looks good! Please push out this change


Set discovery plugins in configuration

To speed up a Statick run when using the configurations provided by web-config.yaml it would help to explicitly list the discovery plugins to use. For example, the web level could be
levels:
  web:
    discovery:
      javascript:
        flags: ""
      html:
        flags: ""
      css:
        flags: ""
    tool:
      eslint:
        flags: ""
      htmllint:
        flags: ""
      jshint:
        flags: ""
      stylelint:
        flags: ""

Similarly, the web_with_pylint level could add python to the discovery plugins enabled.

Fixed in #5.


OverrideSpecifiedNames and ProcessDictionaryKeys default value on CamelCasePropertyNamesContractResolver

Hi,
I was just wondering whether there is a reason for defaulting the ProcessDictionaryKeys and OverrideSpecifiedNames settings in the CamelCasePropertyNamesContractResolver class to true:
https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Serialization/CamelCasePropertyNamesContractResolver.cs#L49-L50
I recently discovered an issue in a messaging library that uses JSON.NET for json serialization/deserialization and was able to trace it to its use of the above class with the default options. The issue itself resulted in Dictionary<string,TValue> changing keys (all keys were camel-cased) after being sent through the message bus.
The decision to make these values true by default on the contract resolver seems unintuitive to me, as it means that serializing and then deserializing dictionaries does not get you back to where you started. Though I am not certain of the behaviour of OverrideSpecifiedNames, I imagine the same might be true when using custom serialization via JsonProperty attributes if deserialization then relies on a custom constructor.
Is there something I am missing?
Thanks,
Alex

To reproduce the issue:
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

namespace ConsoleApp
{
    class Program
    {
        static T SerializeAndDeserialize<T>(T obj, JsonSerializerSettings settings)
        {
            return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(obj, settings), settings);
        }

        static void Main(string[] args)
        {
            var dict = new Dictionary<string, string> {{"Foo", "Bar"}};

            var settingsWithDictKeysCamelCased = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            var settingsWithDictKeysUnchanged = new JsonSerializerSettings
            {
                ContractResolver = new DefaultContractResolver
                {
                    NamingStrategy = new CamelCaseNamingStrategy()
                }
            };

            var result1 = SerializeAndDeserialize(dict, settingsWithDictKeysCamelCased);
            var result2 = SerializeAndDeserialize(dict, settingsWithDictKeysUnchanged);

            Console.WriteLine(string.Join(", ", result1.Select(kvp => $"{kvp.Key}: {kvp.Value}"))); // foo: Bar
            Console.WriteLine(string.Join(", ", result2.Select(kvp => $"{kvp.Key}: {kvp.Value}"))); // Foo: Bar

            Console.ReadLine();
        }
    }

}

I also am seeing this behavior where a public Dictionary<string, bool> Blah { get; } keys are being changed and I've tried setting ProcessDictionaryKeys to false.

They're set to true because that has always been the default behavior of CamelCasePropertyNamesContractResolver. I added naming strategies later and decided to make them behave differently, however I couldn't change the resolver for backwards compatibility reasons.

Yep. This should go into the documentation (pretty please). I would say this flag should be a part of the CamelCasePropertyNamesContractResolver constructor. I have never noticed this behavior as I rarely use this resolver (instead controlling naming via annotations).
I though I was insane and spent a lot of effort to figure it out (coming to the same root cause as @alexdawes).
Once identified, the fix took 5m but oh do I wish I found this post sooner...

The docs are a bit confusing regarding this setting.
https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Serialization_CamelCaseNamingStrategy.htm
Here the docs says its default value is false.
However it is set to true as default.
https://github.com/JamesNK/Newtonsoft.Json/blob/01e1759cac40d8154e47ed0e11c12a9d42d2d0ff/Src/Newtonsoft.Json/Serialization/CamelCasePropertyNamesContractResolver.cs#L49-L50

@hartmark the doc link is about the naming strategy. The code you link is the contract resolver, which is overriding that correctly documented default.
While it would be nice if that code provided more detailed documentation, the existing documentation is not actually wrong as you suggest?

I agree with you, but the thing is that the default is overridden in CamelCasePropertyNamesContractResolver without mentioning it.
Only way to know it's been overridden is by checking the code.


Update CXX compiler to 7.5.0 in Conda version of SINGA to fix compile error

For conda version of SINGA:
This is to fix the issue in https://github.com/apache/singa/pull/758
It requires to use explicit type in cuda kernal, which cannot use "auto" instead
Upgrade the CXX compiler to 7.5.0 can solve the problem (note that the docker version of singa currently using 7.5.0 also)
[ 14%] Building NVCC (Device) object src/CMakeFiles/cuda_compile_1.dir/core/tensor/cuda_compile_1_generated_math_kernel.cu.o
/root/miniconda/conda-bld/singa_1593705642277/work/src/core/tensor/math_kernel.cu(143): error: explicit type is missing ("int" assu                                                               med)

1 error detected in the compilation of "/tmp/tmpxft_00000574_00000000-6_math_kernel.cpp1.ii".
CMake Error at cuda_compile_1_generated_math_kernel.cu.o.cmake:280 (message):
  Error generating file
  /root/miniconda/conda-bld/singa_1593705642277/work/build/src/CMakeFiles/cuda_compile_1.dir/core/tensor/./cuda_compile_1_generated                                                               _math_kernel.cu.o

can we change the 'auto' to the specific type to fix this issue?
if we upgrade the gcc, we the compiled .so file may require higher versions of libstc++, which may not be available in some systems.

i see, then can close this PR, shicong PR has already changed to spefcific type


Ran the same Demo code and got bad results

Hi I ran the same Demo code of Colab in my remote machine. As shown here, the results are worse after the optimiation steps than the input. Could we discuss what could cause this failure?
https://github.com/user-attachments/assets/7e1d8ab5-acc8-43f1-94a6-4ecf0e1687ec
https://github.com/user-attachments/assets/e3be053a-f957-4e8a-9729-383f06a87c95

I ran the same code today again and got a better result. I gauess some parts of the process are very stochastic.
https://github.com/user-attachments/assets/afaa34b6-678a-40a1-838c-6c60095a4bbc


Update SSDT-Xhci.asl

Forked from Osy86, changed HS07 and HS08 to be copies of HS04 in the hopes of enabling additional ports from motherboard header cable.
I have no clue what I'm doing. There are a lot of differences with Osy's original code and I don't know how that happened.

@osy86 I have no idea why my copy+paste from my .asl file is so wildly different from your current code.

Fixed with dba685663b2544635603aaf0cca59c05f6040676


IntBigArrayBigList.listIterator does not check the index paremeter when called with a long

As per the documentation:

ListIterator listIterator(int index) ... Throws: IndexOutOfBoundsException - if the index is out of range (index < 0 || index > size())

However the following tests fail:
  @Test(expected=IndexOutOfBoundsException.class)
  public void testListIterator_tooLow() {
    new IntBigArrayBigList().listIterator(-1L);
  }

  @Test(expected=IndexOutOfBoundsException.class)
  public void testListIterator_tooHigh() {
    new IntBigArrayBigList().listIterator(1L);
  }

Note that they pass in longs not ints. This calls listIterator( final long index ) from AbstractIntBigList which does not have bounds checking (as opposed to the int version - listIterator( final int index ) on IntBigArrayBigList which does). While the fix is simple (adding ensureIndex( index ); to the former), perhaps some kind of code reuse can be achieved here (why isn't the method with int just calling the long method? why does it need a different implementation?)

That's SO embarrassing. The listInterator(int) in BigArrayBigList.drv is clearly a piece of code copied from ArrayList.drv in which I forgot to change the int's in long's.


Throttle KP calls

We may have recently sent 16k requests to a single KP in a very short span. It was understandably disconcerted. Let's look into how we may throttle requests on a per-KP basis.

Note that we are getting blocked at bte with 429 Client Error: Too Many Requests for url: https://api.bte.ncats.io/v1/query (1039 times)

See also https://github.com/RENCI-AUTOMAT/Automat-server/issues/5


Not possible to open the settings

Hey there,
it isn't possible for me to open the extension settings:

The displayed Technical Details:
The settings of extension<EMAIL_ADDRESS>had an error:
TypeError: session.send_message is not a function

Stack trace:
discoverBridges@/home/sam/.local/share/gnome-shell/extensions/hue-lights@chlumskyvaclav.gmail.com/phueapi.js:58:30
checkBridges@/home/sam/.local/share/gnome-shell/extensions/hue-lights@chlumskyvaclav.gmail.com/phue.js:209:33
HuePrefs@/home/sam/.local/share/gnome-shell/extensions/hue-lights@chlumskyvaclav.gmail.com/prefs.js:126:19
buildPrefsWidget@/home/sam/.local/share/gnome-shell/extensions/hue-lights@chlumskyvaclav.gmail.com/prefs.js:2021:20
_init@resource:///org/gnome/Shell/Extensions/js/extensionsService.js:209:40
OpenExtensionPrefsAsync/<@resource:///org/gnome/Shell/Extensions/js/extensionsService.js:122:28
asyncCallback@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:115:22
run@resource:///org/gnome/Shell/Extensions/js/dbusService.js:177:20
main@resource:///org/gnome/Shell/Extensions/js/main.js:19:13
run@resource:///org/gnome/gjs/modules/script/package.js:206:19
start@resource:///org/gnome/gjs/modules/script/package.js:190:8
@/usr/share/gnome-shell/org.gnome.Shell.Extensions:1:17

I use Arch with Gnome 40.4.

Hi @sam9032! Thank you for reporting the issue! I can confirm the issue. As I can see, Arch Linux has just updated the libsoup2.4 to the new libsoup3. It brings major changes and backward incompatibilities. I am going to fix it as soon as possible (depends on my free time). Unfortunately, It requires a significant amount of work.

@sam9032 I have a workaround for you or others with the same issue... You can install the package libsoup 2 like this:
sudo pacman -S libsoup
and run following command:
sed -i '/const Soup = imports.gi.Soup;/i imports.gi.versions.Soup = "2.4";'<EMAIL_ADDRESS>

I did some research. libsoup 3 seems to be very rare in Linux distributions yet. Seems like Arch and ALT provide it only (today), and the libsoup 2 is not removed yet. I added the preference to use version 2.4 and partial implementation of libsoup 3.
Seems like libsoup 3 can be used only in the settings, which works with the last patch. In the extension menu, I wasn't able to use and debug libsoup 3 even with imports.gi.versions.Soup = "3.0". It uses version 2 anyway. (on arch linux)
The libsoup 3 proper support will come once needed. For now, this is resolved. I will keep an eye on libsoup 3 spreading. Thanks again for reporting.


Un-gayed name

shut up

Description:

Benefits of this PR and context:

Source / References:

That's quite the overhaul you've got there
/s


Leading and Trailing icons in scrollable text field

Hello
I'm using your library to achieve the following layout:
https://github.com/user-attachments/assets/d53ec66f-6f54-473d-9cfb-29acf27f85d4
However, I updated from chiptextfield:0.4.0-alpha to chiptextfield-m3:0.7.0-alpha05. As expected, I made a lot of changes and I noticed a little issue that I'm expecting that is possible to fix - comparing to the previous video, the trailing and leading icons does not move along the scroll like ChipTextField does
https://github.com/user-attachments/assets/16326a6f-ec89-46a2-bf44-b274e596b105
If it helps, this is what I am doing.
ChipTextField(
        state = textFieldState,
        value = value,
        onValueChange = { valueChanged(it) },
        onSubmit = {
            Chip(it.trim())
        },
        modifier = Modifier
            .fillMaxWidth()
            .wrapContentHeight()
            .heightIn(max = 90.dp)
            .focusRequester(focusRequester)
            .focusable(interactionSource = interactionSource)
            .verticalScroll(state = scrollableState),
        readOnlyChips = true,
        textStyle = MaterialTheme.typography.bodyLarge.copy(
            color = MaterialTheme.colorScheme.MessageField,
            fontSize = dimensions.normalText
        ),
        chipTrailingIcon = { chip ->
            CloseButton(onClick = {

            })
        },
        colors = TextFieldDefaults.colors(
            unfocusedContainerColor = Color.Transparent,
            disabledContainerColor = Color.Transparent,
            focusedContainerColor = Color.Transparent,
            unfocusedLabelColor = Color.Transparent,
            cursorColor = Grey3,
            focusedIndicatorColor = Color.Transparent,
            unfocusedIndicatorColor = Color.Transparent,
            disabledTextColor = PrimaryGrey,
            disabledLabelColor = Color.Transparent,
            disabledIndicatorColor = Color.Transparent
        ),
        leadingIcon = {
            Text(
                text = stringResource(id = R.string.new_message_to),
                modifier = Modifier.padding(start = dimensions.extraSmallPadding),
                style = MaterialTheme.typography.bodyLarge.copy(
                    color = DarkGrey,
                    fontSize = dimensions.normalText
                )
            )
        },
        trailingIcon = {
            IconButton(onClick = {

            }) {
                Icon(
                    painterResource(id = R.drawable.ic_contacts),
                    contentDescription = stringResource(id = R.string.contacts),
                    tint = OnPageGreen
                )
            }
        },
        enabled = true,
        interactionSource = interactionSource
    )

Let me know if you need more information, and thank you for your support!

I noticed what was my problem… It is supposed to use innerModifier instead.


Swapping units

When the swap button is pressed, the units are changed over, but the values are not recalculated, this should be done to preserve the function of the system.

Swapping issue sorted


extensibility bug - page 256 "Payment Journal" - Apply Entries action not enabled for Account Types = Employee (but page 39 "General Journal" does enable it!)

We cannot view Apply Entries for Employee payments. I thought maybe that functionality was not implemented, but the General Journal page does allow it! Shouldn't these pages both agree, especially the Payment Journal since that's most relevant to paying employees..?

Please can the action in page 256 be updated to match page 39?
I would hugely appreciate if, as it's relatively simple / no-brainer, this can be dealt with here... I used to have the ability to submit application bugs via Partner Centre, but this has mysteriously vanished, and our partner-partner who apparently should report these things for us is not replying to my attempts to get a login set up :-(
It kind of is an extensibility bug, in that now we have to make an extension just to fix the action, update the boolean whenever a relevant field changes or record is loaded, etc....

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Css is too complex to permit anyone to create new theme

Detailed description of the problem
Hello, i wanted to use lychee for a drawing gallery. I wanted a light theme. I checked https://github.com/LycheeOrg/Lychee-front/issues/67 but don't see any good solution.
My idea was simple, just changing the color used, nothing else.
Working on css directly is very hard, we get a 4000 line css which is hard to understand.
Working on scss look a bit simpler, but for my simple change, it's still really hard to do:

There are a big number of color:  > 44, which look to me probably unnecessary.
There are color using different color syntax making harder to replace them.

So i try something, reading this article : https://codepen.io/jakealbaugh/post/css4-variables-and-sass .
I just put most of the color in one place, there are still some rgba and named color missing because i was a bit tired at the end, there probably some kind of script to do this automatically.
I create a PR to show this idea:

use css var or at least scss var for color.
rationate color if possible.
find some other way to make customization of the current theme less painfull.
here: https://github.com/LycheeOrg/Lychee-front/issues/269

Edit: Please note i'm not very competent at css (this is the first time i see scss), i'm more a backend guy.
Edit 2: Also, apart from this technical debt issue there in CSS, lychee >4 is awesome :+1:  .

This is a good first step but you lose the semantic of the color.
What I mean by that is what does color a corresponds to ?
If you provide a solution which allow to more easily set-up the colors while preserving their meaning then yes this will be considered.
As is, there is absolutely no way to know which colors corresponds to what. :|

This is a good first step but you lose the semantic of the color.
What I mean by that is what does color a corresponds to ?
If you provide a solution which allow to more easily set-up the colors while preserving their meaning then yes this will be considered.
As is, there is absolutely no way to know which colors corresponds to what. :|

I don't think we loose the semantic of the color, as there is not real semantic now. I can replace "a" by color name, but it's not really what we would expect for a semantic naming. But i can try it just to make thing a bit easier for now.
The problem i do face now, is that the css code is heavy, and i'm really new to the project, so i don't have clear clue about how to properly rationate color. In some case, we may expect 2 named colors for one real color (for example white foreground vs white background) and have naming more accordingly to the usage we do of the color than to the color itself like: "primary_background", "primary_foreground"… and with around 50 colors, it's really complicated to do so.

"primary_background", "primary_foreground"… and with around 50 colors, it's really complicated to do so.

That is indeed my intent.
You can also use the information where this color appear:
color--base--background
color--sidebar--background
color--album--thumb-border
etc...

I agree that 50 colors seems unnecessary and I would sure like to see that number brought down to something more manageable. But first we need to understand how those colors are currently used...

Hello all !
I made a big update of my POC.
I did 2 scss list:

color name list with most color used (this probably need to be completed) using naming found with https://chir.ag/projects/name-that-color/ . I also organised these color by color, to make easier to find very close color. From the color only point of view, it easy to see that some color are too close to make sense to be keep. note: I don't remove any color, i'm waiting for suggestion.
semantic-color list with semantic name of usage of the color

naming is far from perfect, so be free to suggest or just modify naming in place, after posting a comment here if you decide to do so.
This part is really hard for me, so i did just a part of the process. I will try to do some other part if i found some time to do so.

Note: i have removed the old color variable.

Thank you @inkhey for working on this issue! I was going to suggest that a collection of themes would also made lychee more attractive and this is a great start. To add to the discussion, we might want to look to other projects and how colors are done there to ease the transition for others and perhaps make porting of themes easier. Eg. https://getbootstrap.com/docs/5.0/customize/color


"ES6: Use export to Reuse a Code Block" doesn't pass the test

Describe your problem and - if possible - how to reproduce it
When attempting to export the variable, the challenge fails with error "foo is exported.
bar is exported."
Add a Link to the page with the problem
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/use-export-to-reuse-a-code-block
Tell us about your browser and operating system

Browser Name: Google Chrome
Browser Version: Latest
Operating System: Windows 7 SP1

If possible, add a screenshot here

You need to add export before the variable as you are exporting variables here and not functions( check example 1).

Still getting this error

Still getting this error

According to the challenge, you are right. Now, it accepted the solution. But in the example, it is said that "Either approach is perfectly acceptable." why is the second approach not working?

@StubRavi Both the methods work but you are supposed to do it using the first one as instructed.
@QuincyLarson @Bouncey @raisedadead I think it will be better if the challenge accepted both types ie. foo should be exported using first method and bar should be exported using second method. Or the challenge should be split up into two sub-challenges.
Also there should be a space after bar and ‘=‘ .

Removing the space before the equals sign allowed my test to pass but I thought I should mention this.

The spacing issue was fixed. Please close the issue @StubRavi

"use strict";
export const foo = "bar";
export const bar = "foo";


chrome >> chrome_legacy - automatically supported

Pull request
Proposed changes
chrome >> chrome_legacy - should be automatically supported user should not bother about this
Checklist

[x] I have read and noticed the CODE OF CONDUCT document
[x] I have read and noticed the CONTRIBUTING document
[ ] I have added necessary documentation or screenshots (if appropriate)

Types of changes

[ ] Bugfix (change which fixes an issue)
[x] Feature (change which adds functionality)
[ ] Code style update (formatting, renaming)
[ ] Refactoring (functional, structural)
[ ] Documentation content changes
[ ] Other (please describe)

What is the current behavior?
you need to check which version of Chrome browser you have and specify this by choosing chrome or chrome_legacy
What is the new behavior?
chrome >> chrome_legacy - automatically done
Additional context
https://www.autoitscript.com/forum/topic/208640-webdriver-udf-help-support-iv/?do=findComment&comment=1521299
https://www.autoitscript.com/forum/topic/208640-webdriver-udf-help-support-iv/?do=findComment&comment=1521377
System under test
Chrome Browser v114... v115
REMARK
consider to check for $_WD_SupportedBrowsers if there is a need to add accordingly some additionall checking

The chrome_legacy entry will be removed in the near future once everyone has had the opportunity to upgrade to newer versions of Chrome.

Why in near future ?
I would like to prospose to leave this functionality as long as chromedriver.exe download links are available/active.

So as I understand your statement user should check it by his own route

There are several way to tackle this problem --

Read the target browser from an INI file, where the end user could easily switch between chrome and chrome_legacy
Perform the check (similar to what you posted above) at the beginning of the script to determine chrome vs chrome_legacy. Then use this stored value throughout the rest of the script.

Why in near future ?
I would like to prospose to leave this functionality as long as chromedriver.exe download links are available/active.

For multiple reasons --

As indicated in the change log, this was a solution that was temporarily added to support both old and new download locations of Chromedriver.
IMO, it is unrealistic to expect the UDF to continue to support an outdated browser.
Anyone needing this "legacy support" can maintain their own copy of the UDF

Ok.
I have one conception to do, propose, and we will be able to close this PR in max next 2 days.

As for now it can be closed.


About Us section UI Improvement

Issue Template
Issue type

UI Improvement

Expected behavior
What should happen?
Create a visually appealing UI for About Us page.

Hi @AnupK1234  I would like to work on this issue. Can you please assign it to me ?

Hey @iSubhamMani,
Sure! You can start working on this issue.
Kindly read the Contributing Guidelines carefully.
Thank You

Hi @AnupK1234 can you tell me what improvements do you want in the about page ?

See if you can add images in about us along with some UI changes which makes the about us section look good.


Potential new feautres

[ ] current time
[ ] PyBispectrum: https://github.com/braindatalab/PyBispectra/tree/main
[ ] EMD? https://emd.readthedocs.io/en/stable/

Pyspectrum added in #267.


More example code

A number have people have requested example code to better illustrate nact's use cases. I think it's a good idea.
Proposal for sample code:

A basic multiuser chat server with persistence
Some browser based multiplayer game?

How to deal (connect and send private and public message) with websocket protocol between nact server and a web client such as Angular or React.


Rewrite and lint - cleanup

I cleaned up the original PR #74 here to focus just on the linter and setting up the linter rules. Here is all the work, complete and operational :+1:

You may want to take a look at the CI system there, @fr1zle .
Thanks for looking this over!

I added one more commit because I forgot to add the elixirSense subscriptions to the vscode language providers. If you clone down my branch you should see parity and functionality with the current plugin. Cheers!

@untra can you rebase this agains #80 ?
I will then pull this, after releasing #80 for some bugfixes.

@fr1zle rebased and tests passing :+1:

Merged, thanks so much :-)

@untra i just notice, that this somehow broke autocomplete. When pressing '.' after typing a module name it doesnt suggest any function anymore. Even pressing ctrl+space won't trigger it.
Any idea how that happened?

Thank you for the cleaning!
However I just checked the file:
https://github.com/fr1zle/vscode-elixir/blob/master/src/elixirSenseDefinitionProvider.ts#L37
and found this windows go to definition bug be reversed back.
Just replace:
const [filePath, lineNumberStr] = result.split(':');
with
const filePath = result.substring(0, result.lastIndexOf(":"));
const lineNumberStr = result.substring(result.lastIndexOf(":") + 1, result.length);
Thank you very much! = )

@fr1zle I opened a new PR to refactor the elixirSenseClient to use promises. I'll add changes to look into the missing autocomplete later tonight. Whoops! #81
@PotterDai I put the goto definition fix for windows back in. Good catch :+1: