Commit Graph

7739 Commits

Author SHA1 Message Date
Jeremy Wharton
f2ae202024 satellite/payments,web/satellite: separate UI cost estimates by partner
Components related to project usage costs have been updated to show
different estimations for each partner, and the satellite has been
updated to send the client the information it needs to do this.

Previously, project costs in the satellite frontend were estimated
using only the price model corresponding to the partner that the user
registered with. This caused users who had a project containing
differently-attributed buckets to see an incorrect price estimation.

Resolves storj/storj-private#186

Change-Id: I2531643bc49f24fcb2e5f87e528b552285b6ff20
2023-04-04 15:56:16 +00:00
paul cannon
556250911c storagenode/monitor: add option to log only when verification check fails
This is not recommended for most nodes; leaving your node running when
it can't handle requests fast enough is a good way to fail audits and
get disqualified, which may happen before you even know about the
problem.

But some Windows users are finding that this is being triggered
regularly on their nodes, and that it apparently causes the whole system
to lock up occasionally. We are adding this option as a way to mitigate
that problem until we can collect more information.

Change-Id: I7a652b0f9f970bbb9ed9f2cb3ad1cb89d90db8d7
2023-04-04 12:41:33 +00:00
Michal Niewrzal
4c05293d8b satellite: set names for lrucache metrics
Fixes https://github.com/storj/storj/issues/5685

Change-Id: I9c19b7644b0cd3297448982b920c97abcdce9119
2023-04-04 11:55:20 +00:00
Vitalii
4f515e759d web/satellite: migrate NewBillingAddCouponCodeModal component to use SFC composition api
Change-Id: I78f4e2316921bea43bebdfe97183d3f58e345c29
2023-04-04 10:50:42 +00:00
Vitalii
aca348fc5b web/satellite: migrate MFARecoveryCodesModal component to use SFC composition api
Change-Id: Ibe2a83829ba60bb2b541e8aaa1d8b0fb01ef01bd
2023-04-04 10:15:58 +00:00
Vitalii
ceaa50016d web/satellite: migrate OpenBucketModal component to use SFC composition api
Change-Id: I0236d655fdc33f9ac3540a251298c486fe48f4d5
2023-04-04 09:24:13 +00:00
Vitalii
a51ce288d5 web/satellite: migrate InactivityModal component to use SFC composition api
Change-Id: I73409da66186409664ad59d5538a6e6e4f484d8c
2023-04-04 07:49:23 +00:00
Vitalii
891d74fe7d web/satellite: migrate StripeCardInput component to use SFC composition api
Change-Id: Id61a6726716b87d0a61e872a47a41b6b4c553ff9
2023-04-04 07:08:06 +00:00
Clement Sam
80fc7e94ec web/storagenode: add banner with info on storagenode payout changes
Closes https://github.com/storj/storj/issues/5712

Change-Id: I037adb2af756d44f87e6f5ee38c0f9bd8033809d
2023-04-04 06:17:46 +00:00
Michal Niewrzal
4db3d33d3e satellite/accounting: check bucket existance with GetProjectObjectsSegments
Check if project have any buckets before trying to get stats from
bucket_storage_tallies table.

Change-Id: If87159e29236a1816c3fb99c2d889ff735737100
2023-04-03 20:06:11 +00:00
Vitalii
c4db4165c1 web/satellite: migrate DisableMFAModal component to use SFC composition api
Change-Id: Id5fbedda7e72e18e225e437fcf51d6e9bebb112e
2023-04-03 18:59:14 +00:00
Vitalii
8d544ac3eb web/satellite: migrate AllModals component to use SFC composition api
Change-Id: Id1271c0010035eb7a847c48c7eff9e59a81c25e5
2023-04-03 18:19:08 +00:00
Vitalii
8d15154fc6 web/satellite: migrate infoBars components to use SFC composition api
Change-Id: Ieb25ea37d0ee59bb50ecec219321182bdcd32633
2023-04-03 17:42:33 +00:00
Jeff Wendling
7b06575f6f satellite/meta{base,info}: reduce db round trips for download
This combines the ListStreamPositions and GetSegmentByPosition
calls with a ListSegments call that now knows how to return
only the segments within a Range, just like ListStreamPositions.

It would theoretically be possible to also include the
GetObjectLastCommitted call by having it do one of three
queries based on the incoming request range, but that would
mean duplicating the data for the object in every single
row that is returned for each segment in the range.

One gross thing that ListSegments has to do now is update the
first segment returned with the information from any ancestor
segment because GetSegmentByPosition used to do that. It only
updates the first segment so that it doesn't do O(N) database
queries. It seems difficult to have it do a single query to
update all of the segments at once. I'm not certain this change
should be merged on this basis alone.

This change has made me think a couple of things should happen:

1. Server side copy with ancestor segments strikes again
   making the code less clear and potentially more buggy
   or inefficient for a rare case (empirically <0.1%)

2. The download code requests individual segments from
   the satellite lazily as part of its download which
   requires the satellite telling it the locations of
   all of the segments which requires the satellite
   querying the locations of all of the segments. Instead
   the download RPC could return the orders for all of
   the segments for a range and the download code could
   issue N download calls rather than 1 download call and
   N get segment calls. I believe both sides of the code
   paths would be simpler and more efficient this way.

3. In looking at the timing information for downloads when
   testing this, we really need to focus on getting the
   auth key and bandwidth limit verification times down.
   Here's the timing I saw:

       - 42ms: validate auth
       - 52ms: bandwidth usage checking
       - 14ms: get object info
       - 26ms: get segment position info
       - 26ms: getting the first segment full info
       - 20ms: unaccounted for by spans
       - 6ms:  creating the orders

   This change will remove 26ms, but there's a good 90ms
   in just validation. With improved semantics hitting the
   database only once and improved validation, a download
   rpc taking ~30ms seems doable compared to our current
   ~200ms.

Change-Id: I4109dba082eaedb79e634c61dbf86efa93ab1222
2023-04-03 16:49:00 +00:00
Vitalii
54107264ca web/satellite: migrate MiddleTruncate component to use SFC composition api
10000!!!

Change-Id: I10075787f61c151cc0a155f3ee30629de575dafa
2023-04-03 15:25:54 +00:00
Vitalii
b83ca75691 web/satellite: migrate AccessGrantsItem component to use SFC composition api
Change-Id: I07e4cc9d74120f68d7231a546f83c5b858a92c4e
2023-04-03 14:39:09 +00:00
Vitalii
77829c6306 web/satellite: migrate App.vue component to use SFC composition api
Change-Id: I5877577d743fe1bfbc3762fdaa7064fa279f3ae2
2023-04-03 13:54:37 +00:00
Vitalii
6e11f92b1a web/satellite: migrate NavigationArea component to use SFC composition api
Change-Id: Ic213e0c5af326c1a761868786b4f24244e907dcc
2023-04-03 13:04:41 +00:00
Vitalii
d8ac6889ab web/satellite: introduce objects pinia module
Added new module to replace old Vuex module

Change-Id: Id0c4ff41c89137e15eb78c8666ad995e909a1695
2023-04-03 12:18:48 +00:00
Vitalii
2557b9a72f web/satellite: introduce files pinia module
Added new module to replace old Vuex module

Change-Id: I220769ca6c53e9d9b10f84eaf147f2904bbd5500
2023-04-03 11:13:10 +00:00
Michal Niewrzal
d8724d67f3 satellite/metainfo: add metric about download range type
Change-Id: I8f0d589664232f6cedbf3f41212872735e7f4ac5
2023-04-03 10:04:03 +00:00
Ivan Fraixedes
d17b41d027
satellite/admin: Fix response code for Get bucket
Get bucket was returning a "bad request" HTTP status code when the
bucket doesn't exists.

We have to return HTTP "Not found" status code.

Change-Id: If717d99276b02a1e59a9b71ebc909bd6d8d9390b
2023-04-03 10:22:22 +02:00
Sean Harvey
60444d145c
cmd/uplink: minor text fixes for "uplink share"
updates flag descriptions with correct punctuation, and fix errors
to not be capitalized.

Updates #5623

Change-Id: I9c6ef6d9888b2fb90b17db8775cc6abe803e102f
2023-04-03 11:34:35 +12:00
Moby von Briesen
4caa248c56 web/satellite: Slight update to pro account details in upgrade modal
Use more precise wording to describe limits/pricing for pro accounts.

https://github.com/storj/storj-private/issues/215

Change-Id: I505ea97684c76fc46c1a1e13dde22f33ba840ba7
2023-04-01 01:14:33 +00:00
Vitalii
124f340fa9 web/satellite: migrate EditProfileModal component to use SFC composition api
Change-Id: I9da0c63483ffa7f7a9ac9e4343d751564366ac34
2023-04-01 00:16:16 +00:00
Vitalii
634ae73466 web/satellite: migrate CreateProjectPromptModal component to use SFC composition api
Change-Id: I13dd344ef1b4467953522866ef4eaa94f37b1816
2023-03-31 23:27:18 +00:00
Cameron
c2cd213c4f satellite/console: purchase package grants credit
Instead of granting a coupon when purchasing a package, grant credit.
This changes paymentsconfig.PackagePlan to use credit amount rather than
coupon ID. Add additional check to see if a paid invoice with the
description exists. If so, don't create and pay another invoice.

Change-Id: I81df24984c519c773db5fc8e9070bd7797070ec2
2023-03-31 22:29:54 +00:00
Cameron
a2e3247471 satellite/payments: add Balances interface
Add and implement interface to manage customer balances. Adds ability to
add credit to a user's balance, list balance transactions, and get the
balance.

Change-Id: I7fd65d07868bb2b7489d1141a5e9049514d6984e
2023-03-31 21:51:37 +00:00
Vitalii
709dc63d42 web/satellite: introduce appStore pinia module
Added new module to replace old Vuex module

Change-Id: I82f2cb038ccefc24a622afcd808d3a492a2a87b4
2023-03-31 20:56:49 +00:00
Vitalii
b3969618f9 web/satellite: migrate CreateProjectModal to use SFC composition api
Change-Id: I8da5c3e034ebdd72c07a036d13a1e31a1d706cf6
2023-03-31 19:50:43 +00:00
Vitalii
0acb28181f web/satellite: migrate AddTokenCardNative component to use SFC composition api
Change-Id: I0d99308738dd051f35478c86da956010233dc413
2023-03-31 19:00:50 +00:00
Vitalii
34460ebd7a web/satellite: migrated PaymentMethods component to use SFC composition api
Change-Id: I498e178fc08c4af55fa1dfb7c262f87cd10c395e
2023-03-31 18:21:00 +00:00
Jeremy Wharton
e0bb410192 satellite/payments/stripecoinpayments: parallelize invoice methods
Invoicing-related payment service methods have been modified to send
Stripe API requests in parallel.

Additionally, randomness has been added to the Stripe backend wrapper's
exponential backoff strategy in order to reduce the effects of the
thundering herd problem, which arises when executing many simultaneous
API calls.

Resolves #5156

Change-Id: I568f933284f4229ef41c155377ca0cc33f0eb5a4
2023-03-31 17:14:22 +00:00
Cameron
21249e6c00 Revert "satellite/payments: add partnered field to coupon struct"
We are changing package plans to use credits instead of coupons.

This reverts commit 73ff35f160.

Change-Id: I1a5bc27a3a198e1aa09afbb06670dde776f66f36
2023-03-31 16:03:48 +00:00
Cameron
549732228d satellite/satellitedb: add package info to customers db
Add columns package_plan and purchased_package_at to stripe_customers
table and add methods to update and select these values from console
service and payments accounts.

Change-Id: I1e89909055cc3054bfb7baa33c9dca3dfdc7336e
2023-03-31 15:51:30 +00:00
Andrew Harding
f5e110f2aa satellite/satellitedb: support insert for many billing txs in one db tx
Implementing https://github.com/storj/storj/issues/5702 means adding a
bonus billing transaction for each storjscan transaction being recorded.
To do this idempotently, we need to the ability to for both the
storjscan and bonus transaction to be committed together.

This change updates the billing database to allow multiple billing
transactions to be inserted under the same database transaction.

Change-Id: I941864f47fc64d65aab076eec2e96fd04fcc7aac
2023-03-31 14:48:17 +00:00
Vitalii
c95f552b72 web/satellite: fix for object browser locked objects
This is a fix for locked objects count to not update after some action (upload, delete etc.)

Although the issue is still there if user deletes file, navigates outside object browser and navigates back to the same bucket.
In this case we would refetch objects count both from satellite API and our gateway.
So bucket tally wouldn't be triggered that fast and object browser would still show locked objects.
Anyway it's better than it is now.

Also reworked weird object browser initialization which triggered some routing error so this event would be displayed in hubspot as a UI error

Change-Id: I545ab925b135fe3ef2740d17aaece6d43b731c96
2023-03-31 13:53:37 +00:00
Vitalii
2966b70498 web/satellite: migrate EnableMFAModal component to use SFC composition api
Change-Id: I5b75ec6464cee73f39421a8d4ede95af9d5df984
2023-03-31 12:37:56 +00:00
Lizzy Thomson
d8a4ca62b8 satellite/accounting: update GetProjectSegmentLimit to fix bug
Update GetProjectSegmentLimit to reflect segment limit instead of
usage limit.

Fixes https://github.com/storj/storj/issues/5713

Change-Id: If4dfc5b45227595f3ae2b3ac7d267ea541fd748a
2023-03-31 11:47:21 +00:00
Vitalii
9d49145570 web/satellite: migrate AddCouponCodeModal to use SFC composition api
Change-Id: I9d1b938c391a3df778a64609685873260317cbd7
2023-03-31 11:06:50 +00:00
Moby von Briesen
277612f4ff satellite/console: Update onboarding logic
A row in the new `user_settings` table does not always exist for a user,
even if they have been around for a while.
Since `user_settings` is now what defines the state of a user's
onboarding flow, prior to this fix, even old users would receive the
onboarding flow again.
This change appropriately updates `user_settings` for users who already
have projects, and thus have already gone through the onboarding flow. A
brand new user will still be navigated to the beginning of onboarding.

Change-Id: Ie745d280f6b8094ec60c200c2dca8d018d51f7d1
2023-03-31 05:51:31 -04:00
Egon Elbre
a1e920bbdf cmd/tools/segment-verify: satisfy wastedassign linter
The assignemnt to `err = nil` is not used in the rest of the code,
however, this was a protective err = nil assignment.

Change-Id: Id70fb2a2e68b91e2481952d865334e603ca41188
2023-03-31 08:52:46 +00:00
Moby von Briesen
f3bf45aa56 web/satellite: Update exit paths for pricing plan modal
* There was one bug where all projects dashboard was enabled, and the
  actual path was not being passed to the router
* There was another bug where all projects dashboard was disabled, and
  the user was directed to the projects dashboard rather than the next
  step of the onboarding flow, meaning that upon refresh, the user would
  be prompted for package selection again

Change-Id: I388f04c3af9d03b84b4dd3af6de29e6b82b10531
2023-03-31 08:52:28 +00:00
Sean Harvey
33c3e3176f
cmd/uplink: add --tls flag to share command
adds an additional flag to return an additional TXT record that will
enable TLS on custom domains with Linksharing.

Closes #5623

Change-Id: I941616362d7dcd9aec20dfd10346e483021516a4
2023-03-31 20:30:22 +13:00
Vitalii
b44852bb02 web/satellite: migrate TokenTransactionItem component to use SFC composition api
Change-Id: Iab6b76ab852f13128f652b640f19b3a5b6cf9e29
2023-03-31 00:10:56 +00:00
Vitalii
cb947cc217 web/satellite: migrate AddTokenCard component to use SFC composition api
Change-Id: Ife383607c0874a2f9f022fe5174e5a5c4eda8969
2023-03-30 23:16:57 +00:00
Clement Sam
e5c43722dc storagenode/pieces: introduce FileWalker
FileWalker implements methods to walk over pieces in
in a storage directory.

This is just a refactor to separate filewalker functions
from pieces.Store. This is needed to simplify the work
to create a separate filewalker subprocess and reduce the
number of config flags passed to the subprocess.

You might want to check https://review.dev.storj.io/c/storj/storj/+/9773

Change-Id: I4e9567024e54fc7c0bb21a7c27182ef745839fff
2023-03-30 18:33:52 +00:00
Moby von Briesen
f8e8f3a4cc web/satellite: Implement coupon code billing UI enabled flag
This flag was previously implemented, but when we reworked the billing
UI, we forgot to re-implement it with the new screens.

This change fixes that.

Change-Id: Ifad2b82f1080928b72d7e572796fcf4287e5ed3f
2023-03-30 11:44:42 -04:00
Michal Niewrzal
dc9cbe36ae satellite/metabase: sort stats by creation time not number of entries
By accident query to get latest table stats was ordered by 'row_count'
column instead 'create'. We need latest stats so we need ordering by
creation time.

Change-Id: I9d0a0edda8bab59c3d96b7a15cd6502ed51633fc
2023-03-30 12:31:45 +00:00
Márton Elek
00420b5904 storagenode/piecestore: better monkit metric for download
Download is server from two goroutines:

 * one is waiting for the orders (and updates the actual limit)
 * other one sends the valuable bytes back to the client (in case the actual order is big enough)

These two tasks are syncrhonized with the help of a `sync2.NewThrottle()`

But all of these happens in the same method, therefore we have no idea how much time is spent on waiting for next orders
 (throttle can wait until we receive new orderlimit), and how much time is spent with actual work.

This patch moves the actual work (after sending routine is waked up) to a separated method to have better visibility and measure the actual work (read data + send it).

Change-Id: Ia5068c544560a53bc2fcea6cb6fce85cfacbd95b
2023-03-30 10:46:18 +00:00