Commit Graph

136 Commits

Author SHA1 Message Date
Hubert Plociniczak
3c93c25a5a
Reload project's config on rename (#7179)
Package's config information, once loaded, never changed. While there is typically no need for it, this was problematic when the config became out-of-sync with the filesystem, like in the case of project rename action.
In rename, the config's properties would be updated in the FS, but that would never be reflected in module's package. Therefore further compilations would continue to ask for the old namespace.

Most of the changes are cosmetic (s/`.config`/`.getConfig()`) except for the new `reloadConfig` method on `Package` that is being called in `RenameProjectCmd` handler.

Closes #7062.

# Important Notes
The reported `ExecutionFailed` error should have been mostly fixed already via #7143. This change makes sure that all the related warnings are gone as well and the compiler uses the updated namespace.
2023-07-03 09:36:19 +00:00
Hubert Plociniczak
26bd95cf3d
Don't report EOFException on shutdown (#7157)
It's part of the normal shutdown workflow and confused users are reporting it as a failure.
2023-06-29 13:42:13 +00:00
Dmitry Bushev
48f0c6f5e8
Scala 2.13.11 and libraries update (#7010)
Update Scala and libraries.
2023-06-14 13:15:57 +00:00
Hubert Plociniczak
86432b5ca5
Detect and override hooks of the same kind (#6842)
This change ensures that we can have at most one hook of the same action during shutdown.
Verified the change on a real project.

Closes #6767.
2023-05-29 07:25:30 +00:00
somebody1234
6693bdb5cd
Fallback to opened date when ordering projects (#6814)
Fixes #6787

# Important Notes
I can't get Project Manager compilation to work locally so I guess I'll be relying on CI to verify that it's working correctly?

Of course, QA should be able to catch any problems too - the websocket API hasn't been changed so it should work out of the box with the current dashboard.
2023-05-25 15:44:15 +00:00
Dmitry Bushev
0318880990
Add project creation time to project metadata (#6780)
close #6686

Changelog:
- add: `created` field to the project metadata response
- update: project manager tests
2023-05-22 13:40:10 +00:00
Hubert Plociniczak
06624f34a8
Ensure slow shutdown of LS always kicks off hooks (#6665)
This change fixes the rather elusive bug where shutdown hooks could not be fired when shutdown was taking too long and termination was forced.

Under the circumstances described in detail in ticket #6515 there was a small chance that we could have a shutdown race condition. Essentially the messages received when client was disconnected and language server forced the termination could lead to language server not sending the public `ProjectClosed` message which triggers shutdown hook. Now we always do.

Also made sure that multiple `ProjectClosed` messages don't lead to firing multiple shutdown hooks, which was another possibility.

No tests as one would have to be able to introduce different delays in various message handlers to simulate the problem.
Having ability to do such chaos testing would be nice but it is beyond the scope of this ticket.
I was able to reproduce the problem 100% with my specially crafted setup so I'm fairly confident about the change.

Closes #6515.
2023-05-15 12:15:37 +00:00
Dmitry Bushev
706791779b
SuggestionBuilder needs to send ascribedType of constructor parameters (#6655)
close #6611

Changelog:
- update: run compiler passes on the `ascribedType` field of the constructor arguments
- update: suggestion builder uses the type information attached to `ascribedType`
- feat: resolve qualified names in type signatures
2023-05-13 18:33:03 +00:00
Hubert Plociniczak
b93edb050b
Force pending saves if client closes abruptly (#6514)
Force pending saves when JsonSession is terminated for the client.

Potentially closes #6395.
2023-05-03 23:30:20 +00:00
Dmitry Bushev
38212786a3
Fix application config (#6513)
Related #6482
2023-05-02 17:59:44 +00:00
Hubert Plociniczak
ce4ecc6706
Limit Dead Letter logging (#6482)
Dead Letter logging is occasionally flooding our logs which is confusing to users reporting bugs. Left the possibility of a single report so that we know that something is happening.
2023-05-02 14:00:50 +00:00
Dmitry Bushev
2d168308af
Better cleanup of project management test suite (#6392)
Address some arbitrary failures of the `ProjectManagementApiSpec` test suite.
2023-04-24 13:11:27 +00:00
Dmitry Bushev
74c0718604
Project folder not renamed after project name change (#6369)
close #6254

Changelog:
- fix: race when the actor system may be stopped before the shutdown hooks are executed
- fix: project management spec
- fix: recover from `readLine` failure during the shutdown
2023-04-20 16:57:37 +00:00
Dmitry Bushev
aa97787603
Update ZIO library (#6072)
close #6069

Changelog:
- update: ZIO major version bump
2023-03-28 07:58:59 +00:00
Dmitry Bushev
8125d89676
Delay initialization of JSON-RPC protocol (#5997)
close #5881

Changelog
- add: ProtocolFactory object that initializes and returns the protocol object
- update: Add protocol initialization to the initialization component
2023-03-20 11:04:16 +00:00
Hubert Plociniczak
a6487e5105
Don't log installed engines and runtimes in prod (#5900)
The `logAvailableComponentsForDebugging` will check and install all necessary components of GraalVM for every mentioned version. While not harmful, it adds up to startup time.
Additionally added an option in language server startup to skip installation of GraalVM components. The latter is already performed by project-manager when opening the project and it is unnecessary to do it twice. Due to LS' architecture this configuration has to be passed around via multiple configs.

Finally, skipped the attempt to install Python component on Windows - this is not supported by GraalVM atm.

Closes #5749.

# Important Notes
The impact of this problem could be really felt the more versions of Enso and GraalVM one had since it would go through all of them.
2023-03-16 10:36:55 +00:00
Dmitry Bushev
725841467f
Log exceptions with stack traces (#5871)
close #5070

Changelog:
- Include the original exception to log expressions
- Enable logging of Akka Actors' lifecycle events on debug logging level
- Decrease the severity of interruption log messages because interruptions are part of the workflow. The computation can be interrupted at any time, and still be recomputed after. Warnings are just misleading in this case.
2023-03-11 08:23:31 +00:00
Jaroslav Tulach
f54464881f
enso4igv can open engine/language-server & co. projects (#4098)
In order to investigate `engine/language-server` project, I need to be able to open its sources in IGV and NetBeans.

# Important Notes
By adding same Java source (this time `package-info.java`) and compiling with our Frgaal compiler the necessary `.enso-sources*` files are generated for `engine/language-server` and then the `enso4igv` plugin can open them and properly understand their compile settings.

![Logical View of language-server project](https://user-images.githubusercontent.com/26887752/215472696-ec9801f3-4692-4bdb-be92-c4d2ab552e60.png)

In addition to that this PR enhances the _"logical view"_ presentation of the project by including all source roots found under `src/*/*`.
2023-01-31 08:40:04 +00:00
Dmitry Bushev
52a8c72303
Message handler supervisor (#3881)
Changelog:
- Fix a potential `null` value in diagnostic messages
- Add a supervising strategy to the message handler
2022-11-17 19:02:04 +00:00
Dmitry Bushev
5e114acbb5
Update Scala to 2.13.8 (#3631)
Update Scala compiler and libraries.
2022-08-08 19:32:55 +00:00
Dmitry Bushev
f9d2964e83
Update profiling CLI arguments (#3461) 2022-05-24 16:01:26 +03:00
Jaroslav Tulach
ab1ca54acd
Profile the language server (#3389)
In order to analyse why the `runner.jar` is slow to start, let's _"self sample"_ it using the [sampler library](https://bits.netbeans.org/dev/javadoc/org-netbeans-modules-sampler/org/netbeans/modules/sampler/Sampler.html). As soon as the `Main.main` is launched, the sampling starts and once the server is up, it writes its data into `/tmp/language-server.npss`.

Open the `/tmp/language-server.npss` with [VisualVM](https://visualvm.github.io) - you should have one copy in your
GraalVM `bin/jvisualvm` directory and there has to be a GraalVM to run Enso.

#### Changelog

- add: the `MethodsSampler` that gathers information in `.npss` format
- add: `--profiling` flag that enables the sampler
- add: language server processes the updates in batches
2022-05-10 12:44:05 +00:00
Hubert Plociniczak
059bb8c7e9
Apply automatic formatting prior to turning on checks (#3405)
Result of automatic formatting with `scalafmtAll` and `javafmtAll`.
Prerequisite for https://github.com/enso-org/enso/pull/3394

### Important Notes

This touches a lot of files and might conflict with existing PRs that are in progress. If that's the case, just run
`scalafmtAll` and `javafmtAll` after merge and everything should be in order since formatters should be deterministic.
2022-04-19 12:34:34 +02:00
Dmitry Bushev
d3846578cc
Fix Error Payload Serialization (#3315) 2022-03-04 11:57:49 +03:00
Dmitry Bushev
792c7e3538
Fix dev version check (#3265) 2022-02-15 16:34:33 +01:00
Michał Wawrzyniec Urbańczyk
4baad5f146
Nightly proccess preparations: Setting Enso version through the environment (#3241)
Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>
Co-authored-by: Radosław Waśko <wasko.radek@gmail.com>
2022-02-07 15:14:32 +01:00
Dmitry Bushev
ca0a6f0bf6
Update Scala to 2.13.7 (#3214) 2021-12-31 17:50:32 +03:00
Dmitry Bushev
83e35751f4
Disable ProjectManagementApiSpec (#3138) 2021-11-08 15:52:28 +01:00
Michał W. Urbańczyk
99053decd8 various default branch switch - related updates 2021-11-01 01:37:30 +01:00
Radosław Waśko
826e28a149
Implement library/preinstall (Without Dependencies Yet) (#1972) 2021-08-27 14:01:13 +02:00
Radosław Waśko
fac0405fd0
Updating Editions (#1944) 2021-08-12 16:55:23 +02:00
Ara Adkins
ef4d2dd5d8
Better handle edition resolution failures in PM (#1929) 2021-08-06 14:25:46 +01:00
Dmitry Bushev
10b0e11218
Add Project Template Files (#1915)
Add new templates
2021-08-02 19:01:15 +03:00
Dmitry Bushev
6af2338ad4
Return Project Name when Creating a Project (#1908)
Add projectName field to the project/create result
2021-07-29 11:02:53 +03:00
Dmitry Bushev
8336a97931
Add Support for Project Templates (#1902)
Add an ability to create a project from a template
2021-07-27 19:13:14 +03:00
Radosław Waśko
f3bc88b91e
Library Downloads MVP (#1885) 2021-07-22 08:24:06 +02:00
Radosław Waśko
86fcd86055
New Language Server API Implementations / Mocks (#1875) 2021-07-17 16:49:51 +02:00
Radosław Waśko
3a9f0aa42b
[release: nightly] Fix project/list failing if edition resolution failed for a single project (#1858) 2021-07-14 10:49:57 +01:00
Radosław Waśko
2eadf9f19f
Bump Minimal PM/Launcher Versions for New Engine (#1854) 2021-07-13 13:08:00 +02:00
Radosław Waśko
b58e895b18
Editions Integration (#1832) 2021-07-08 15:38:20 +02:00
Radosław Waśko
e58b5eb81d
Dynamically Loading Libraries (#1826) 2021-07-06 00:27:14 +02:00
Radosław Waśko
44ef29a3b7
Fix the PM Not Checking To Preinstall the Graal Runtime if the Engine Was Already Installed (#1824) 2021-06-29 11:46:20 +02:00
Marcin Kostrzewa
faf4214b29
Include namespace in the project manager messages (#1820) 2021-06-25 13:09:40 +02:00
Marcin Kostrzewa
334a022ffd
Import syntax including namespace (#1806) 2021-06-24 12:42:24 +02:00
Radosław Waśko
241a1e7d74
Define Editions (#1797) 2021-06-18 16:39:45 +02:00
Dmitry Bushev
46f101a2ae
Fix Masking in Actor Logging (#1761)
Replace ActorLogging with SLF4J logger
to enable masking.
2021-06-03 12:59:34 +03:00
Ara Adkins
a981e72fdf
Provide API access to the project name (#1759) 2021-05-27 16:13:52 +01:00
Dmitry Bushev
6c084fc8ae
Add support for detailed logger configuration (#1745) 2021-05-19 09:02:32 +01:00
Dmitry Bushev
c202c92b68
Log akka messages (#1719) 2021-05-18 09:23:13 +01:00
Dmitry Bushev
1b6388702f
Implement masking of sensitive data in logs (#1732) 2021-05-12 16:31:53 +01:00
Dmitry Bushev
cf8034683c
Add detailed logging to the tooling init (#1704) 2021-04-28 15:11:42 +01:00
Dmitry Bushev
d9e1a47460
Report Visualization Errors (#1671)
Add `executionContext/visualisationEvaluationFailed`
notification
2021-04-21 16:32:22 +03:00
Dmitry Bushev
fde4f2d0d6
Resolve clashing project identifiers (#1665) 2021-04-13 13:19:16 +01:00
Dmitry Bushev
ec66117cc6
Install Required GraalVM Components (#1651)
Project manager ensures that the required 
GraalVM components are installed.
2021-04-07 18:19:24 +03:00
Dmitry Bushev
13c993920f
Update Project Name Validation (#1570)
PR moves all the project validation logic to the 
`org.enso.pkg.validation` module and updates the 
project manager to use the logic from the new module
2021-03-12 13:23:53 +03:00
Dmitry Bushev
b5e9895fa7
Initialize language server on client connection (#1535) 2021-03-04 16:59:05 +00:00
Ara Adkins
2b4f0ef2ad
Bump scalac to 2.13.5 (#1531) 2021-03-01 16:35:57 +00:00
Dmitry Bushev
5ba3b5d13f
Abandon Terminating Language Server (#1463)
Wait for the LS shutdown, spawn the new one,
and only then reply to the client.
2021-02-11 15:44:50 +03:00
Dmitry Bushev
379d17fe3d
Return Engine Version Used in Opened Project (#1454)
add `engineVersion` field with the required Enso version
2021-02-09 13:55:32 +03:00
Radosław Waśko
10bccf6b56
Better component handling in the project manager (#1399) 2021-01-15 15:26:51 +00:00
Radosław Waśko
d30a80eedc
Fix the project manager reflection configuration (#1394) 2021-01-14 10:46:01 +00:00
Łukasz Olczak
291cbfa6ee
Runtime Containerisation (#1345) 2020-12-23 18:56:30 +01:00
Radosław Waśko
6075c1e765
Implement LocalReleaseProvider (#1370) 2020-12-21 23:30:59 +01:00
Radosław Waśko
2e6a5af4fb
Split Installer Versions in Manifest (#1355) 2020-12-16 12:34:33 +01:00
Radosław Waśko
de817af655
Finish Logging Service Integration (#1346) 2020-12-15 09:49:58 +01:00
Radosław Waśko
25561e4c8c
Project Manager Native Image (#1318) 2020-12-09 14:58:11 +01:00
Radosław Waśko
9e1b49d245
Forking Language Server in the Project Manager (#1305) 2020-12-02 16:56:47 +01:00
Radosław Waśko
4d5f794122
Integrating Runtime Version Manager with Project Manager (#1285)
Related to #1153, implements the first part of the integration, without the
parts that use the runner which will be done next.
Temporarily there are two logger implementations - this will be alleviated with
the next part - when and the direct classpath dependency on the language server
is removed.
2020-11-16 18:49:59 +01:00
Radosław Waśko
5701db6d89
Update Project Manager Protocol (#1240) 2020-11-02 09:58:33 +01:00
Ara Adkins
746521f8b2
Bump SBT and Scalafmt (#1203)
Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>
Co-authored-by: Dmitry Bushev <bushevdv@gmail.com>
2020-10-22 16:12:28 +02:00
Dmitry Bushev
9666d9065e
Fix project manager projects loading (#1145)
Fix loading of Enso projects in the enso/projects directory
2020-09-14 15:17:54 +03:00
Dmitry Bushev
033ccd5aec
Setup Runtime logging (#1128)
Configure logging of the Runtime context.
2020-09-09 18:16:59 +03:00
Dmitry Bushev
e92b9d0fc0
Store Project Manager Metadata in Project Directory (#1120)
Project Manager to stores its metadata inside the project directory, 
instead of maintaining the global index. This will allow users to move 
and modify files inside the ~/enso directory.
2020-09-07 12:25:14 +03:00
Dmitry Bushev
8e764f957b
Add Log Level Options to Project Manager (#1092)
Set the project manager log level from the CLI options
2020-08-21 13:02:52 +03:00
Dmitry Bushev
ef165e4f23
Emit value updates only on change (#1051) 2020-08-03 15:38:39 +01:00
Dmitry Bushev
cd6858a01e
Revert expressionId removal from value update (#1043) 2020-07-30 10:26:14 +01:00
Dmitry Bushev
45d75536aa
Wait for Suggestions Database Initialization (#1025) 2020-07-22 17:12:52 +03:00
Ara Adkins
f5ffbe8fa7
Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
Dmitry Bushev
b8ff893840
Enable FlakySpec only on Windows (#1015) 2020-07-20 17:13:37 +03:00
Dmitry Bushev
30d136a141
Integration with the Searcher Database (#994) 2020-07-20 11:00:49 +03:00
Dmitry Bushev
01217d036c
Increase timeouts on Windows CI (#988) 2020-07-14 14:44:40 +03:00
Radosław Waśko
610a38df9a
Launcher Native Image Build (#970) 2020-07-10 12:57:42 +02:00
Łukasz Olczak
728fe2e6ed
Move project dirs on project close (#979) 2020-07-08 20:30:16 +02:00
Radosław Waśko
0c33d5d841
Launcher Design (#963) 2020-07-08 15:54:41 +02:00
Dmitry Bushev
6ba038c800
Implement Search Requests API (#953) 2020-07-06 16:55:21 +03:00
Ara Adkins
919ffbdfac
Refactor the crate structure (#967) 2020-07-03 14:42:45 +01:00