Compare commits

...

9 Commits

Author SHA1 Message Date
Asher
26c763485b Update JSON parse error matcher
Looks like this text changed?
2024-06-21 09:52:42 -08:00
Asher
d431c9cd9d Fix log file path
The first argument is a file name, not a path.  When the log gets
rotated it prepends the date which ends up creating a path in the
current working directory.
2024-06-21 09:47:44 -08:00
Olivier Benz
c26ac35b25 Update Code to 1.90.2 (#6853) 2024-06-20 14:14:21 -08:00
dependabot[bot]
d449729e18 chore: bump braces from 3.0.2 to 3.0.3 in /test (#6844)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 10:43:23 -08:00
Asher
ed069310a4 v4.90.2 2024-06-17 10:42:09 -08:00
Olivier Benz
dce1d6e172 Update Code to 1.90.1 (#6840) 2024-06-14 11:31:58 -08:00
Asher
a73549539b Cache unchanging telemetry data
Might make sense to cache the rest as well, and evict from the cache
periodically.  For now this is enough to fix a hang I often see in our
deployment of Coder.  Might only be surfacing now because new telemetry
calls were added to startup.
2024-06-12 15:09:45 -08:00
Asher
e7ca9cd6ac Fix changelog heading indentation 2024-06-12 13:05:41 -08:00
Asher
9da9f2029c v4.90.0 2024-06-12 13:03:51 -08:00
8 changed files with 88 additions and 52 deletions

View File

@@ -22,14 +22,33 @@ Code v99.99.999
## Unreleased ## Unreleased
## [4.90.2](https://github.com/coder/code-server/releases/tag/v4.90.2) - 2024-06-14
Code v1.90.1
### Changed
- Updated to Code 1.90.1.
## [4.90.1](https://github.com/coder/code-server/releases/tag/v4.90.1) - 2024-06-12
Code v1.90.0 Code v1.90.0
## Changed ### Fixed
- Cache a call to get CPU information used in telemetry that could result in a
lack responsiveness if it was particularly slow.
## [4.90.0](https://github.com/coder/code-server/releases/tag/v4.90.0) - 2024-06-11
Code v1.90.0
### Changed
- Updated to Code 1.90.0. - Updated to Code 1.90.0.
- Updated Node to 20.11.1. - Updated Node to 20.11.1.
## Added ### Added
- Send contents to the clipboard in the integrated terminal by piping to - Send contents to the clipboard in the integrated terminal by piping to
`code-server --stdin-to-clipboard` or `code-server -c`. `code-server --stdin-to-clipboard` or `code-server -c`.
@@ -45,7 +64,7 @@ Code v1.90.0
Code v1.89.1 Code v1.89.1
## Changed ### Changed
- Updated to Code 1.89.1. - Updated to Code 1.89.1.
@@ -53,7 +72,7 @@ Code v1.89.1
Code v1.89.0 Code v1.89.0
## Changed ### Changed
- Updated to Code 1.89.0. - Updated to Code 1.89.0.
@@ -61,7 +80,7 @@ Code v1.89.0
Code v1.88.1 Code v1.88.1
## Changed ### Changed
- Updated to Code 1.88.1. - Updated to Code 1.88.1.
@@ -69,12 +88,12 @@ Code v1.88.1
Code v1.88.0 Code v1.88.0
## Changed ### Changed
- Updated to Code 1.88.0. - Updated to Code 1.88.0.
- Updated Node to 18.18.2. - Updated Node to 18.18.2.
## Fixed ### Fixed
- Fix masking the exit code when failing to install extensions on the command - Fix masking the exit code when failing to install extensions on the command
line outside the integrated terminal. Installing extensions inside the line outside the integrated terminal. Installing extensions inside the
@@ -84,7 +103,7 @@ Code v1.88.0
Code v1.87.2 Code v1.87.2
## Changed ### Changed
- Updated to Code 1.87.2. - Updated to Code 1.87.2.
- Enable keep-alive for proxy agent. - Enable keep-alive for proxy agent.
@@ -93,7 +112,7 @@ Code v1.87.2
Code v1.87.0 Code v1.87.0
## Changed ### Changed
- Updated to Code 1.87.0. - Updated to Code 1.87.0.
@@ -101,7 +120,7 @@ Code v1.87.0
Code v1.86.2 Code v1.86.2
## Changed ### Changed
- Updated to Code 1.86.2. - Updated to Code 1.86.2.
@@ -109,12 +128,12 @@ Code v1.86.2
Code v1.86.1 Code v1.86.1
## Changed ### Changed
- Updated to Code 1.86.1. - Updated to Code 1.86.1.
- Updated to Node 18.17.1. - Updated to Node 18.17.1.
## Added ### Added
- Docker images for Fedora and openSUSE. - Docker images for Fedora and openSUSE.
@@ -122,7 +141,7 @@ Code v1.86.1
Code v1.86.0 Code v1.86.0
## Changed ### Changed
- Updated to Code 1.86.0. - Updated to Code 1.86.0.
@@ -130,11 +149,11 @@ Code v1.86.0
Code v1.85.2 Code v1.85.2
## Changed ### Changed
- Updated to Code 1.85.2. - Updated to Code 1.85.2.
## Fixed ### Fixed
- Query variables are no longer double-encoded when going over the path proxy. - Query variables are no longer double-encoded when going over the path proxy.

View File

@@ -15,9 +15,9 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 3.20.0 version: 3.21.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 4.89.1 appVersion: 4.90.2

View File

@@ -6,7 +6,7 @@ replicaCount: 1
image: image:
repository: codercom/code-server repository: codercom/code-server
tag: '4.89.1' tag: '4.90.2'
pullPolicy: Always pullPolicy: Always
# Specifies one or more secrets to be used when pulling images from a # Specifies one or more secrets to be used when pulling images from a

View File

@@ -50,50 +50,66 @@ Index: code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ code-server/lib/vscode/src/vs/server/node/telemetryClient.ts +++ code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
@@ -0,0 +1,55 @@ @@ -0,0 +1,71 @@
+import { AppInsightsCore, IExtendedTelemetryItem, ITelemetryItem } from '@microsoft/1ds-core-js'; +import { AppInsightsCore, IExtendedTelemetryItem, ITelemetryItem } from '@microsoft/1ds-core-js';
+import * as https from 'https'; +import * as https from 'https';
+import * as http from 'http'; +import * as http from 'http';
+import * as os from 'os'; +import * as os from 'os';
+ +
+interface SystemInfo {
+ measurements: Record<string, number | undefined>;
+ properties: Record<string, string | boolean | null | undefined>;
+}
+
+export class TelemetryClient extends AppInsightsCore { +export class TelemetryClient extends AppInsightsCore {
+ private readonly systemInfo: SystemInfo = {
+ measurements: {},
+ properties: {},
+ };
+
+ public constructor( + public constructor(
+ private readonly endpoint: string, + private readonly endpoint: string,
+ private readonly machineId: string, + machineId: string,
+ private readonly isContainer: Boolean | undefined) { + isContainer: boolean | undefined) {
+ super(); + super();
+
+ // os.cpus() can take a very long time sometimes (personally I see 1-2
+ // seconds in a Coder workspace). This adds up significantly, especially
+ // when many telemetry requests are sent during startup, which can cause
+ // connection timeouts. Try to cache as much as we can.
+ try {
+ const cpus = os.cpus();
+ this.systemInfo.measurements.cores = cpus.length;
+ this.systemInfo.properties['common.cpuModel'] = cpus[0].model;
+ } catch (error) {}
+
+ try {
+ this.systemInfo.properties['common.shell'] = os.userInfo().shell;
+ this.systemInfo.properties['common.release'] = os.release();
+ this.systemInfo.properties['common.arch'] = os.arch();
+ } catch (error) {}
+
+ this.systemInfo.properties['common.remoteMachineId'] = machineId;
+ this.systemInfo.properties['common.isContainer'] = isContainer;
+ } + }
+ +
+ public override track(item: IExtendedTelemetryItem | ITelemetryItem): void { + public override track(item: IExtendedTelemetryItem | ITelemetryItem): void {
+ const options = item.baseData || {} + const options = item.baseData || {}
+ if (!options.properties) { + options.measurements = {
+ options.properties = {}; + ...(options.measurements || {}),
+ ...this.systemInfo.measurements,
+ } + }
+ if (!options.measurements) { + options.properties = {
+ options.measurements = {}; + ...(options.properties || {}),
+ ...this.systemInfo.properties,
+ } + }
+ +
+ try { + try {
+ const cpus = os.cpus();
+ options.measurements.cores = cpus.length;
+ options.properties['common.cpuModel'] = cpus[0].model;
+ } catch (error) {}
+
+ try {
+ options.measurements.memoryFree = os.freemem(); + options.measurements.memoryFree = os.freemem();
+ options.measurements.memoryTotal = os.totalmem(); + options.measurements.memoryTotal = os.totalmem();
+ } catch (error) {} + } catch (error) {}
+ +
+ try { + try {
+ options.properties['common.shell'] = os.userInfo().shell;
+ options.properties['common.release'] = os.release();
+ options.properties['common.arch'] = os.arch();
+ } catch (error) {}
+
+ options.properties['common.remoteMachineId'] = this.machineId;
+ options.properties['common.isContainer'] = this.isContainer;
+
+ try {
+ const request = (/^http:/.test(this.endpoint) ? http : https).request(this.endpoint, { + const request = (/^http:/.test(this.endpoint) ? http : https).request(this.endpoint, {
+ method: 'POST', + method: 'POST',
+ headers: { + headers: {

View File

@@ -248,9 +248,10 @@ export class ParentProcess extends Process {
const opts = { const opts = {
size: "10M", size: "10M",
maxFiles: 10, maxFiles: 10,
path: path.join(paths.data, "coder-logs"),
} }
this.logStdoutStream = rfs.createStream(path.join(paths.data, "coder-logs", "code-server-stdout.log"), opts) this.logStdoutStream = rfs.createStream("code-server-stdout.log", opts)
this.logStderrStream = rfs.createStream(path.join(paths.data, "coder-logs", "code-server-stderr.log"), opts) this.logStderrStream = rfs.createStream("code-server-stderr.log", opts)
this.onDispose(() => this.disposeChild()) this.onDispose(() => this.disposeChild())

View File

@@ -29,7 +29,7 @@ describe("settings", () => {
const settings = new SettingsProvider<CoderSettings>(pathToMockSettingsFile) const settings = new SettingsProvider<CoderSettings>(pathToMockSettingsFile)
await settings.read() await settings.read()
// This happens when we can't parse a JSON (usually error in file) // This happens when we can't parse a JSON (usually error in file)
expect(logger.warn).toHaveBeenCalledWith("Unexpected token t in JSON at position 29") expect(logger.warn).toHaveBeenCalledWith(expect.stringMatching(/Unexpected token/))
}) })
}) })
describe("with invalid settings file path", () => { describe("with invalid settings file path", () => {

View File

@@ -1198,11 +1198,11 @@ brace-expansion@^1.1.7:
concat-map "0.0.1" concat-map "0.0.1"
braces@^3.0.1: braces@^3.0.1:
version "3.0.2" version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies: dependencies:
fill-range "^7.0.1" fill-range "^7.1.1"
browser-process-hrtime@^1.0.0: browser-process-hrtime@^1.0.0:
version "1.0.0" version "1.0.0"
@@ -1668,10 +1668,10 @@ fd-slicer@~1.1.0:
dependencies: dependencies:
pend "~1.2.0" pend "~1.2.0"
fill-range@^7.0.1: fill-range@^7.1.1:
version "7.0.1" version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies: dependencies:
to-regex-range "^5.0.1" to-regex-range "^5.0.1"